メールヘッダ・インジェクション
メールヘッダ・インジェクション
ウェブサイトによっては利用者が入力下した内容を特定のメールアドレスへ 配信するシステもあります。
メールアドレスは固定となり、管理者以外からの変更ができないようになっていますが、 実装によっては利用者が任意のアドレスへ送信することが可能となっています。
このような問題を引き起こす脆弱性を「メールヘッダ・インジェクション」といいます。
発生する可能性のある脅威
- メールの第三者中継(スパムメールの配信?)
実装例
フォームから情報を送信する際の一例です。
open (MAIL, "| /usr/sbin/sendmail -t -i"); print MAIL << "EOF"; To: info\@example.com From: $email Subject: お問い合わせ($name) Content-Type: text/plain; charset="ISO-2022?JP" $inquiry EOF close (MAIL);
上記実装では、sendmailコマンドの標準入力にメールヘッダ及び、メール本文を加えることで メールの送信を行います。
To: info@example.com
From: anzen@example.net
Subject: お問い合わせ(anzen)
Content-Type: text/plain; charset="ISO-2022?JP"
Hello, World
上記のような例で「test@example.net%0d%0aBcc%3a%20test@example.org」と アドレス欄に入力すると、以下のようにBCCの指定が作成され、別のアドレス 宛にもメールが送信されるようになります。
To: info@example.com
From: test@example.net
Bcc: test@example.org
Subject: お問い合わせ(anzen)
Content-Type: text/plain; charset="ISO-2022?JP"
Hello, World
対策例
ユーザーの入力内容をメールヘッダーへ出力しない
メールヘッダーに展開する変数から改行コードを除去する