メールヘッダインジェクション

当ページでは、「メールヘッダインジェクション」と呼ばれるサイバー攻撃の概要、攻撃手順やその被害の例、対策方法について記載しています。
 
 

メールヘッダインジェクションとは

メールヘッダインジェクションとは、Webサイトのお問い合わせ画面などのメール送信機能でメールヘッダ(件名や宛先情報など)を指定できる場合、件名・メール送信元・メール送信先・本文を改変したり追加したりするサイバー攻撃。
改行コードやヌル文字を活用して攻撃する。
 

メールの構成とメールヘッダについて

Aさん([email protected])からBさん([email protected])へメールを送信した場合、本文データの前に「メールヘッダ」と呼ばれるメタ情報が付与されてデータが送受信される。
 
メールヘッダ内には以下のような情報が記録されている。
  • 送信者のメールアドレス
  • 宛先のメールアドレス
  • メール送信日
  • 件名
 
メール送信時のデータやメールヘッダの詳細は「電子メール・メールサーバについて」を参照!

攻撃手順の例

ユーザが問い合わせページから質問を送信すると、Webサーバがユーザへ通知メールが送信するシステムを例に攻撃手順を示す。

通常時のシステムの挙動

まず、標的システムが通常時は以下の挙動をするものとする。
 
①ユーザはWebサイトから問い合わせを送信する。
②Webサーバは送信データを基にメールを作成し、ユーザへ送信する。
③ユーザはWebサイトからメールを受け取る
 

攻撃例

[email protected]宛てに件名と本文の内容を改竄したメールを送信する手順を示す。
 
①攻撃者は問い合わせフォームのメールアドレス欄に以下の値を入力して送信する。
※ 「%0d%0a」は改行コード、「%00」はヌル文字(メール文の終わり)を示す。
 
②Webサーバは送信データを基にメールを作成し、ユーザへ送信する。
③ユーザはWebサイトから件名と本文が改竄されたメールを受け取る。

攻撃された場合の被害

Webサイトが迷惑メールの送信に悪用される

攻撃のターゲットとされたWebサイトは迷惑メールの送信元となってしまうため、風評被害を被る可能性がある。
 

件名や本文の改竄が行われる

Webサイト側が指定している件名や本文を改竄し、全く別の内容のメールを送信される可能性がある。
また、メール送信先を「CC: 」や「BCC: 」で追加し、多人数に迷惑メールを送信される可能性もある。

対策方法

メールヘッダにユーザの入力値を含めない

可能な場合はメールヘッダにユーザからの入力値を含めず、メールヘッダは固定値とすることが好ましい。
 

入力値の検証を行う

メールヘッダにユーザからの入力値を含める必要がある場合は、入力値検証をする。
改行コードが含まれる場合は削除して出力するか、エラーとして処理を実行しない仕様とする。
また、入力値チェック機能のあるフレームワークの関数を利用するのが良い。
 

関連情報・参考情報

その他のサイバー攻撃・セキュリティ関連記事も良かったらご参照ください!