概要
サーバーサイドレンダリングやテストフレームワークで広く利用されているJavaScriptライブラリ「Happy DOM」に、重大なセキュリティ脆弱性が発見されました。この脆弱性はCVE-2025-61927として追跡されており、攻撃者が仮想マシンコンテキストから脱出し、影響を受けるシステム上で任意のコードを実行することを可能にします。これにより、世界中の数百万のアプリケーションが危険にさらされる可能性があります。
脆弱性の詳細
Happy DOMのバージョン19以前には、深刻なセキュリティ上の弱点が存在します。この脆弱性は、Node.js VMコンテキストの不適切な分離に起因し、悪意のあるJavaScriptコードが意図されたサンドボックス環境から抜け出すことを可能にします。セキュリティ研究者Mas0nShi氏によって発見されたこの攻撃手法は、Functionクラスからのコンストラクタチェーン継承を悪用し、プロセスレベルの機能にアクセスします。攻撃者はコンストラクタチェーンを辿ってグローバルなFunctionコンストラクタに到達し、分離されたVMコンテキスト内ではなく、プロセスレベルでコード文字列を評価できます。特にCommonJS環境では脆弱性が高く、攻撃者はrequire()
関数にアクセスして追加モジュールをインポートすることが可能です。
- CVE ID: CVE-2025-61927
- 製品: Happy DOM
- 深刻度: 重大 (CVSS v4スコア 10.0)
- 影響を受けるバージョン: 19以下
- パッチ適用済みバージョン: 20以上
影響と範囲
この脆弱性は、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評価を無効にすべきです。
元記事: https://gbhackers.com/happy-dom-flaw-affecting-2-7-million-users/