ガンホー問い合わせフォームにおけるアップロードファイルに起因する脆弱性が修正された
2016 年 5 月 3 日、ガンホー・オンライン・エンターテイメント株式会社(以降、ガンホー社)に「République(リパブリック)」について問い合わせるとき、お問い合わせフォームに脆弱性を発見しました。同日中にガンホー社および IPA に報告したところ、同月 31 日、当該脆弱性が修正されました。
アップロードファイルに起因する脆弱性
要約
ガンホー社の問い合わせフォームでは、クエリストリングで Content-Type を指定できる実装でした。アップロードファイルを確認するウェブページで、この実装を悪用して、ウェブブラウザ上で任意のスクリプトを実行できました。
脆弱性があったお問い合わせフォーム
当該お問い合わせフォームでは、ユーザが問い合わせに関するファイルをアップロードできます(下図*1)。このアップロード機能では、ファイルの拡張子を検証していますが、ファイルの中身(マジックバイトなど)を検証していないようです。スクリプトを含む HTML ファイルを「a.jpeg」で保存すると、当該お問い合わせフォームに「a.jpeg」をアップロードできました。
お問い合わせを送信する前に、アップロードしたファイルをウェブページで確認できます。このウェブページでは、クエリストリングに「mime」パラメータを指定でき(左下図)、このパラメータの値が Content-Type ヘッダにそのまま出力されました。試しに mime=text/plain と指定すると、Content-Type: text/plain; charset=utf-8 と出力されました(右下図)。
脆弱性の再現手順
下記の (a), (b) の手順で脆弱性を再現できました。
(a) 当該問い合わせフォームに下記のHTMLファイルを「a.jpeg」としてアップロードする
<html> <head> <title>test</title> <script>alert(1);</script> </head> <body> </body> </html>
(b) 当該脆弱性のあるウェブページに遷移して、「mime」パラメータに「text/html」を指定する。この結果として、アラートダイアログがポップアップ表示できた(下図)。
ガンホー社による脆弱性の修正
2016 年 5 月 29 日、報告したウェブページで改めて再現手順を実施したところ、「mime」パラメータが削除されていました。このとき、Content-Type ヘッダには、image/jpeg; charset=utf-8 または text/plain; charset=utf-8 が設定されていました。
ウェブブラウザ | Content-Type ヘッダの値 |
---|---|
Google Chrome 50.0.2661.102 m(左下図) | image/jpeg; charset=utf-8 |
Mozilla Firefox 46.0.1 | image/jpeg; charset=utf-8 |
MS Edge 25.10586.0.0(右下図*2) | text/plain; charset=utf-8 |
前述の手順で脆弱性が再現しなくなったものの、任意のファイルをアップロードできることは変わりません。このため、IE8 などのウェブブラウザではまだセキュリティ上の問題が発生する可能性があります(2016 年 1 月 13 日で IE8 のサポートが終了していますが)。そこで、ガンホー社に修正完了確認を問い合わせたときに、X-Content-Type-Options: nosniff を提案しました。実際に X-Content-Type-Options ヘッダを出力するかは、ガンホー社の判断次第になります。
発見から修正までの時系列
年月日 | アクション |
---|---|
2016年5月3日 | ガンホー社および IPA に脆弱性を報告 |
同日 | ガンホー社から一次返信 |
2016年5月6日 | ガンホー社から「担当部署に連絡した」との返信 |
同日 | IPA から届出情報受信の返信 |
2016年5月10日 | IPA から届出情報受理の連絡 |
2016年5月11日 | IPA から届出情報をガンホー社に通知したとの連絡 |
2016年5月29日 | 脆弱性が修正されたことを確認 |
同日 | ガンホー社に修正完了確認を問い合わせ |
2016年5月30日 | IPA から修正完了の連絡 |
同日 | ガンホー社から問い合わせへの回答 |
2016年6月1日 | IPA にガンホー社に「脆弱性情報および時系列を公表すること」の連絡を依頼 |
2016年6月3日 | IPA からガンホー社への情報展開および取扱い終了連絡 |
2016年6月5日 | この日記を公開 |