Critical SandboxJS Vulnerability Allows Remote Host Takeover – PoC Released
2026/02/11 CyberSecurityNews — JavaScript ライブラリ SandboxJS に、深刻なサンドボックス・エスケープの脆弱性が発見された。脆弱性 CVE-2026-25881 (CVSS:9.1:Critical) は、バージョン 0.8.30 以下のすべてのリリースに影響する。この問題に対する修正は、バージョン 0.8.31 で実施されている。

この脆弱性は、SandboxJS の保護メカニズムにおける弱点の悪用を許すものである。このライブラリは、“isGlobal” フラグを用いて、サンドボックス化されたコードがホストシステムのオブジェクトを改変できないように制御している。
しかし、Map.prototype や Set.prototype のようなグローバル・プロトタイプ参照を配列に格納し、その後に取得すると、valueOrProp() を経由する過程で isGlobal の保護フラグが剥離される。この “prototype pollution” と呼ばれるプロセスを悪用する攻撃者は、JavaScript のコア・オブジェクトを恒久的に改変できる。
サンドボックス化コード: const m = [Map.prototype][0] ↓配列作成: valueOrProp() 経由で isGlobal 保護フラグが除去 ↓プロトタイプ改変: m.cmd = 'id' (ホスト・プロトタイプ汚染) ↓ ホスト側影響: new Map().cmd === 'id' (永続化) ↓RCE (アプリケーション依存): ホストコードが execSync(obj.cmd) を呼び出す
たとえば、サンドボックス化されたコードは、Map プロトタイプに悪意ある cmd プロパティを注入できる。ただし、この変更は、ホスト・アプリケーション全体に伝搬/持続されてしまう。そのため、後続処理において、ホスト・コードがシステム・コマンド実行などの機微な操作に、この汚染されたプロパティを使用した場合に、攻撃者によるリモート・コード実行が達成されてしまう。
セキュリティ研究者 k14uz は、3 つの攻撃シナリオを示す、信頼性の高いエクスプロイト・コードを公開した。最も単純な概念実証 (PoC) では、サンドボックス化コードが Map プロトタイプに “polluted” プロパティを追加し、それがホストにより新規作成される全 Map オブジェクトに出現することが示されている。より危険な実証例では、組み込み関数の上書きや、”id” のようなシステム・コマンドの実行による、ユーザー情報の取得が示されている。
攻撃チェーンは以下の通りである。
| Action | Description |
|---|---|
| Create Array | Create an array containing a prototype reference. |
| Extract Reference | Extract the prototype reference from the array, causing the protection flag to be lost. |
| Modify Prototype | Add malicious properties or override existing ones on the prototype. |
| Trigger Usage | Wait for host code to access the modified properties in sensitive operations. |
SandboxJS を用いて未信頼の JavaScript コードを実行している、すべてのアプリケーションが影響を受ける。攻撃者はサンドボックス隔離を破壊し、ホストの実行フローを操作する。さらに、ホスト・アプリケーションにおける汚染されたプロパティの処理方法に応じて、最終的にはシステム全体へのアクセス権が奪取される可能性がある。
公開されたアドバイザリによると、開発者は直ちにバージョン 0.8.31 へアップグレードする必要がある。この最新バージョンでは、配列操作を跨いでも保護フラグが維持され、組み込みプロトタイプへの書き込みがブロックされる。
追加の防御策として、セキュリティ・チームは未信頼コードの実行前に、組み込みプロトタイプをフリーズ (freeze) すべきである。また、ユーザーが制御するオブジェクト・プロパティを使用する可能性のある機微な処理について、アプリケーション監査を実施すべきである。
この脆弱性は、安全な JavaScript サンドボックス構築の難しさを浮き彫りにするものである。未信頼のコードを扱う際における、多層防御の重要性を改めて示している。
JavaScript を安全な隔離環境で実行するためのライブラリ SandboxJS において、その制限を突破してホストシステムでの操作を許してしまう深刻な脆弱性が発見されました。この問題の原因は、このライブラリにおいて、隔離された環境とホスト・システムを区別するために使用していた保護フラグが、配列操作などの特定の条件下で剥がれ落ちてしまう設計上の不備にあります。本来であれば、隔離環境の中からは外側の重要なオブジェクト (Map や Set など) の書き換えが防止されていますが、このフラグが消失することで、プロトタイプ汚染という手法を用いる攻撃者は、外側のシステムの動作を恒久的に書き換えることが可能になります。ご利用のチームは、ご注意ください。よろしければ、JavaScript での検索結果も、ご参照ください。
You must be logged in to post a comment.