サイバーセキュリティツールベンダーのPortSwiggerは、セキュリティ研究者「s1r1us」氏のブログで発表された調査報告を紹介した。広く使われている18のJavaScriptライブラリに、プロトタイプ汚染の脆弱性があることが明らかになったという。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
サイバーセキュリティツールベンダーのPortSwiggerは、2021年10月5日(米国時間)、セキュリティ研究者s1r1us氏のブログで2021年9月に発表された調査報告を紹介した。広く使われている18のJavaScriptライブラリに、プロトタイプ汚染の脆弱(ぜいじゃく)性があることが明らかになったという。
プロトタイプ汚染はプロトタイプをベースにしたJavaScriptオブジェクトの構造を標的にした攻撃手法を指す。
s1r1us氏とBlackFan氏を中心とした研究チームが調査を行い、18のJavaScriptライブラリにプロトタイプ汚染の脆弱性が80件以上存在し、これらの脆弱性の影響を受けるWebサイトが1000以上あることを発見した。
例えばApple.comや、「Jira Service Management」「HubSpot Analytics」「Segment Analytics」をはじめとするさまざまな有名サイトも含まれている。研究チームはこの80件以上の脆弱性を脆弱性開示プログラムに報告し、合計4万ドルのバグ発見報奨金を得た。
PortSwiggerはJavaScriptの利便性と危険性を次のように説明している。「JavaScriptはWebのフロントエンド開発などに使われる。開発者はJavaScriptにより、プログラムの基本要素であるオブジェクトのプロパティと関数を動的に変更できる。だが、この柔軟性にはトレードオフがある。プログラマーが注意を怠ると、攻撃者がアプリケーションのセキュリティホールを突いて、オブジェクトのプロトタイプに悪意あるコードを注入する恐れがある」
プロトタイプ汚染を利用した攻撃はどこから始まるのだろうか。
攻撃対象はユーザー入力フィールドや、Webサイトに渡されるクエリパラメーターなどだ。サイトのJavaScriptコードがクエリパラメーターをサニタイズする、すなわち攻撃につながる文字列を無効化せずに反復処理した場合、オブジェクトのプロトタイプを変更するコマンドが実行される危険がある。
s1r1us氏とBlackFan氏は、この分野に精通した13人の研究者の協力を得て、調査に必要なツール群の開発に取り組んだ。
まず、巨大なサブドメインデータベースで動作し、プロトタイプ汚染攻撃に脆弱なJavaScriptコードパターンを探す「Selenium bot」を作成した。併せて「PPScan」というWebブラウザ拡張機能も開発した。これはバックグラウンドで動作して、botと同様の機能を提供する。
最後にプロトタイプ汚染を利用してクロスサイトスクリプティング(XSS)攻撃を仕掛けることができる、JavaScriptコードの断片である「スクリプトガジェット」を見つけるためのツールも使用した。Webブラウザの開発者向け機能と検索パターンを組み合わせることで、今回の調査に向けた探索が可能になった。
研究チームは最終的に、プロトタイプ汚染攻撃に悪用され、XSS攻撃を可能にする恐れがある正当なJavaScriptコードフラグメントを見つけるためのツールを使用するのに至った。
プロトタイプ汚染の脆弱性は、必ずしも悪いコーディングプラクティスに起因するものではないと研究チームは考えているものの、プロトタイプ汚染は見過ごされているのではないかとも懸念している。
研究チームは次のように述べている。「JavaScriptやJavaScriptコーディングプラクティスの落とし穴を調べようとしても、プロトタイプ汚染に関する情報源はあまり見つからない。この脆弱性の影響を受けるWebサイトがこれだけ多いのは、それが理由だと考えられる。われわれの調査報告がこの攻撃対象領域に光を当て、この問題の緩和対策に役立つことを願っている」
Copyright © ITmedia, Inc. All Rights Reserved.