PR

ReactはXSSを撲滅しなかった理由と新たなJavaScriptインジェクション手法

Security

Source: https://thehackernews.com/2025/07/why-react-didnt-kill-xss-new-javascript.html

スポンサーリンク

🛡 概要

JavaScriptはウェブを制覇したが、その勝利と引き換えに新たな戦場が生まれた。ReactやVue、Angularを採用した開発者たちの後ろで、攻撃者たちはAIプロンプトインジェクションやプロトタイプ汚染を利用して、従来のセキュリティ対策をすり抜けている。2024年6月には、Polyfill.ioの供給網攻撃によって10万以上のウェブサイトが侵害され、従来の防御策が無力であることが証明された。この攻撃は、単なる脆弱性を狙ったものではなく、ウェブサイト自身のセキュリティツールを逆手に取った巧妙なものであった。

🔍 技術詳細

現代の攻撃者は、従来のinnerHTMLのサニタイズでは防げない手法を駆使している。特に注目すべきは、npmパッケージの供給網攻撃やプロトタイプ汚染、AI駆動のプロンプトインジェクションである。2024年には22,254件のCVEが報告され、前年より30%増加した。特に銀行業界は攻撃者の主要なターゲットとなっており、2023年3月にはIBMが40以上の銀行を狙ったマルウェアキャンペーンを発見した。この攻撃は、特定のページ構造を検出し、それに基づいて悪意のあるスクリプトを動的に注入するもので、従来の防御策では対処できない。

⚠ 影響

危険な点は、これらの現代的な攻撃が非常に巧妙であることだ。例えば、ReactのdangerouslySetInnerHTMLを使用すると、ユーザーからの悪意のあるスクリプトが即座に実行され、認証クッキーやセッショントークンが盗まれる可能性がある。さらに、金融業界では、ユーザーの資格情報やワンタイムパスワードトークンを盗むために、動的にスクリプトを注入するマルウェアが広がっている。これにより、50,000以上のユーザーセッションが危険にさらされ、従来のセキュリティ手段が無力化していることが明らかになった。

🛠 対策

この状況に対抗するためには、データを常に生のまま保存し、出力コンテキストに基づいてエンコードするという基本的なセキュリティベストプラクティスを遵守することが重要である。具体的には、データベースには生のデータを保存し、レンダリング時にコンテキストに応じたエンコーディングを行う。このアプローチは、ダブルエンコーディングの問題を防ぎ、データの整合性を維持し、最終的にどのように表示されるかに関わらず適切な保護を提供する。特に、TypeScript開発者はこのコンテキストに配慮したエンコーディングの重要性を理解するだろう。

Security
スポンサーリンク