概要:Happy DOMの深刻な脆弱性
人気のJavaScriptライブラリであるHappy DOMに、リモートコード実行(RCE)を可能にする重大なセキュリティ脆弱性(CVE-2025-61927)が発見されました。この脆弱性は、サーバーサイドレンダリングやテストフレームワークでHappy DOMを使用している約270万人のユーザーに影響を及ぼす可能性があり、攻撃者が仮想マシン(VM)のコンテキストを脱出し、影響を受けるシステム上で任意のコードを実行できる状態になります。
VMコンテキストエスケープの技術的詳細
Happy DOMのバージョン19以前には、悪意のあるJavaScriptコードが意図されたサンドボックス環境から脱出できる深刻なセキュリティ上の弱点が存在します。この脆弱性は、信頼されていないコードの安全な実行環境を提供するために設計されたNode.js VMコンテキストの不適切な分離に起因します。
- CVE ID: CVE-2025-61927
- 製品: Happy DOM
- 深刻度: Critical
- CVSSスコア: 10.0 (CVSS v4)
- 影響を受けるバージョン: 20未満
- パッチ適用済みバージョン: 20以上
セキュリティ研究者のMas0nShi氏によると、攻撃者はFunction
クラスからのコンストラクタチェーン継承を悪用して、プロセスレベルの機能にアクセスできます。この攻撃手法は、コンストラクタチェーンをたどってグローバルなFunction
コンストラクタに到達し、分離されたVMコンテキスト内ではなく、プロセスレベルでコード文字列を評価することを可能にします。特にCommonJS環境では、攻撃者が追加モジュールをインポートするためのrequire()
関数にアクセスできるため、脆弱性が顕著です。
影響とリスク
この脆弱性は、Happy DOMをサーバーサイドレンダリングアプリケーションやテストフレームワークに利用している約270万人のユーザーに影響を与えます。特に、ユーザーが制御するHTMLコンテンツをHappy DOMを通じて処理するアプリケーション、および信頼されていないJavaScriptコードをHappy DOMコンテキスト内で実行するテスト環境が最も高いリスクにさらされます。
攻撃が成功した場合、以下の深刻な結果を招く可能性があります:
- 環境変数や設定ファイルへのアクセスによるデータ漏洩
- ネットワーク接続を介した横方向の移動
- 子プロセスを介した任意のコマンド実行
- ファイルシステムアクセスによる永続性の確立
この脆弱性は、機密性、完全性、可用性において高い影響があるため、CVSS v4スコアで最高の10.0と評価されています。
推奨される対策と修正
Happy DOMのメンテナーであるOrtner IT Solutions ABは、このセキュリティ脆弱性に対処するためにバージョン20をリリースしました。このバージョンでは、JavaScriptの評価がデフォルトで無効化され、潜在的に安全でない設定に対するセキュリティ警告が追加されています。
影響を受けるバージョンを使用している組織は、直ちにHappy DOM v20以降にアップグレードして脆弱性を排除する必要があります。JavaScriptの評価が必要な環境では、管理者向けに--disallow-code-generation-from-strings
というNode.jsフラグを実装し、プロセスレベルでのコード評価を防ぐことが推奨されます。
直ちにアップグレードできないユーザーは、実行されるコンテンツが完全に信頼できる場合を除き、Happy DOM内でのJavaScript評価を無効にすべきです。パッチが適用されたバージョンには、強化されたセキュリティ対策が含まれており、安全でない環境でJavaScript評価が有効になっている場合の潜在的なリスクについてユーザーに警告し、同様のVMエスケープ攻撃に対するより良い保護を提供します。
元記事: https://gbhackers.com/happy-dom-flaw-affecting-2-7-million-users/