情報処理推進機構 IPA様よりご連絡をいただいた、ある特定の条件下で発生する脆弱性に対応するためソースコードの一部を修正。また既存ファイルの修正方法についてもこのページに掲載致しました。
実際には特異な複数の条件が揃わなければ発生しないことから、現在設置中のフォームが即問題となる可能性は低いと考えられますが、念のため以下手順にて修正いただきますようお願い致します。
※設置サイト、及びそのサイトの運営者(管理者)、関係者等が直接被害を受けるようなものではありません。
尚、今現在実害の報告等はいただいておりません。
セキュリティについては十分に注意、検証しておりましたが、結果としてこのような事態となり、お手数、ご迷惑をおかけし大変申し訳ございませんでした。
今後このようなことが無いよう細心の注意を払って参る所存です。
-- 脆弱性に該当する製品名およびバージョン
PHP多機能メールフォームプログラム全バージョン(フリー版、有料版問わず)
※2014/7/10以前にダウンロードされた方
※ただし、2012/10/28以前のバージョンの場合には該当しません(脆弱性自体存在しません)
確認済対象ブラウザ:InternetExplorer11
-- 脆弱性の内容
悪意のある第三者が作成した罠ページへ誘導された場合に、特定のリンクをクリックさせることによって任意のスクリプトが実行される可能性。
(まずはこの「罠ページへ誘導される」の時点で現実的にはかなり厳しい条件かと思います)
-- 脆弱性への対応方法と適用方法
最新版をダウンロードいただき、既存のmail.phpを差し替えていただくか、
すでに導入済みの場合には以下手順にて既存ファイル(mail.php)を修正して下さい。 1箇所のみです。
mail.phpの261行目付近以下の箇所
※行数はバージョンによって異なりますが、以下記述は1箇所のみなので探してみてください
※2012/10/28以前のバージョンではこの記述自体ありませんので脆弱性もございません。
<input type="hidden" name="httpReferer" value="<?php echo $_SERVER['HTTP_REFERER'];?>">
または以下(後ろに半角スペースがあるバージョンもあるため、全文検索時に一致しない場合は以下で検索下さい)
<input type="hidden" name="httpReferer" value="<?php echo $_SERVER['HTTP_REFERER'] ;?>">
を以下へ修正下さい。( $_SERVER['HTTP_REFERER'] をh()で囲むだけです。または以下上書きコピペでOKです)
<input type="hidden" name="httpReferer" value="<?php echo h($_SERVER['HTTP_REFERER']);?>">
お手数ですが、修正後は必ず送信テストを行っていただき、問題の無いことをご確認下さい。
問題が出た場合にはお気軽にお問い合わせよりご連絡下さい。
-- 謝辞
発見者様並びに情報処理推進機構 IPA様、JPCERT/CC 脆弱性ハンドリングチーム様にはこの場を借りて感謝申し上げます。