Mailヘッダインジェクション

Development, Security 3月 1, 2006
(Last Updated On: 2013年12月3日)

PHPのmail関数は\r\n,\r,\nを無視するようになっていてmb_send_mail関数の方は、チェックするマクロがphp_mail(PHPの内部関数)の前のPHP_FUNCTION()の部分で実行されていたので、mb_send_mailを使っているとMailヘッダインジェクションが出来てSPAMの踏み台にされる。という問題がありました。PHPユーザの方は覚えていると思います。

同じ問題がhns(Perlの日記アプリ)にもあったのですね。

PHPのmail関数のチェックは余計なお世話、とも言えるチェックです。PHPに慣れて他の言語でプログラムを書くと同じようなミスをするかも知れません。ユーザ入力は全部、確実にチェックしていれば防げる問題ですね。

HTTPヘッダの挿入も問題があるので今のPHPは\r\n, \r, \n, \tはheader関数ではじく様になっています。

システムではじいていても攻撃されていたかは知っておくべきですし、システムが適当に安全に処理してくれるから、といって未確認のデータを外部システムには送るべきではありません。

投稿者: yohgaki