Email header / CRLF / folding boundary

Email headerの改行境界を分ける

CRLF、folding、header/body separator、newline injection riskと未知値を固定例で確認し、安全か要レビューかを判断します。実メール送信・通信・保存・送信は行いません。

5つの改行境界

改行は単なる表示上の区切りではありません。header値、continuation、body境界を分け、入力を別headerへ変える危険を安全側で止めます。

CRLF = delimiter / folding = WSP continuation / CRLF CRLF = body boundary
境界確認判断
CRLFheader行を区切るCRLF組み立て前に責務と許可値を要レビュー
foldingWSPで始まるcontinuation仕様上のfoldingとして扱えるか確認
body separatorCRLF CRLFheaderとbodyを混ぜず境界を要レビュー
injection risk値の途中にCRLFと別headerReject。安全と断定せず要レビュー
unknown意味不明な改行表現Reject。推測せず要レビュー

安全な確認の順番

  1. header名・値・改行の所有者を分けて記録する。
  2. CRLFとWSP continuationを同じ値として扱わない。
  3. CRLF CRLFをheader/body境界として明示する。
  4. 別headerを作れる入力と未知値はRejectし、送信前に止める。

このページは合成caseだけを扱います。メール送信、SMTP/HTTP通信、任意header入力、保存、分析は行いません。

5つの固定case

case固定例判断
crlf-boundarySubject: hello CRLF要レビュー
legal-foldingHeader: first CRLF WSP second条件付きで安全
header-body-separatorCRLF CRLF要レビュー
newline-injection-riskvalue CRLF Bcc:Reject / 要レビュー
unknown-header-valueunknown line breakReject / 要レビュー