情報処理安全確保支援士 - SE娘の剣 -

左門至峰による情報処理安全確保支援士試験に合格するためのサイトです。 過去問を引用しながら、試験に出る基礎知識を体系的かつ詳細に整理します。

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

1.攻撃概要

具体的な攻撃事例を紹介します。たとえば、店舗が以下の問い合わせフォームを用意していたとします。利用者が名前やメールアドレス、タイトルなどを入れると、右のメールが店舗に自動送信されます。
ではここで、問い合わせフォームのタイトルに、改行コードである「%0D%0A」を加え、以下を入力したとします。

お買い得%0D%0ABcc:<user1@example.com

すると、メールヘッダは以下のようになり、Bccに指定した宛先にメールを送信することが可能です。

メールヘッダ
MIME-Version: 1.0
Message-ID: <xxx@mail.gmail.com>
Subject: お買い得
Bcc:<user1@ example.com>
From: <malware@gmail.dom>
To: <support@shop.dom>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64

名前:お買い得ショップ
問い合わせ:以下、お買い得情報をお知らせします。是非リンクをクリックしてね
      ・・・・・

攻撃者は、BCCにSPAMメール送りたい宛先を入れ、このようなフォームを踏み台にしてSPAMメールを送信できます。

2.対策

情報処理安全確保支援士の過去問(R3春午後1問1)をもとに整理します。

 参考までに、表1の「メールヘッダインジェクション」に関するその他の対策を解説します。
①メールヘッダを固定値にする
 メールヘッダを固定値にすれば、メールヘッダインジェクションにより、不正なコードを入力することができません。
②外部からの入力を適切に処理する
 メール送信用APIを使用するインジェクションを引き起こすような文字がないかをチェックする安全なAPI(=プログラム、と考えましょう!)を用意し,そのAPIを用いてメール送信処理を行います。
③外部からの入力の全てについて、改行コードを削除する
 改行コードを削除することで、攻撃者のよる不正な処理を防ぎます。具体的な攻撃例は先に述べたようなBccを自由に設定するような攻撃です。