Critical SandboxJS Escape Vulnerability Enables Host Takeover
2026/05/13 CyberSecurityNews — npm 上で広く利用されている JavaScript サンドボックス・ライブラリ SandboxJS において、深刻なセキュリティ欠陥が発見された。この脆弱性 CVE-2026-43898 (CVSS 10.0) を悪用する攻撃者は、サンドボックスを完全に突破し、ホストシステム上での任意のコード実行を可能にする。

この脆弱性が影響を及ぼす範囲は、@nyariv/sandboxjs パッケージのバージョン 0.9.5 以下である。根本的な原因は、サンドボックス内で定義された関数が、LispType.Call という内部コールバックを漏洩していた点にある。
このコールバックを取得した攻撃者は、サンドボックス外へアクセスし、ホスト環境全体の完全な制御を可能にする。
この問題を発見した GitHub のセキュリティ研究者が、GHSA-g8f2-4f4f-5jqw としてアドバイザリを公開した。この脆弱性は Macabely により報告され、実環境での攻撃の成立を示す PoC も提供された。
この脆弱性の影響は極めて深刻である。未認証の攻撃者が引き起こす、ユーザー操作が不要なアクションにより、ホスト上での完全なリモートコード実行が達成される。そのため、このライブラリを用いて、信頼されていない JavaScript を実行する全てのアプリケーションが、完全侵害のリスクに晒される。
すでに、修正済みバージョン 0.9.6 が npm 上で公開されているため、影響を受けるユーザーは即時アップデートが必要である。バージョン 0.9.5 以下を使用し続ける場合には、この攻撃に対して無防備な状態を継続する。
サンドボックスエスケープの仕組み
この脆弱性は、”prop.ts” 内における addOps 関数のプロパティ・アクセス処理に存在する。サンドボックス内コードが、関数の caller/callee/arguments プロパティへアクセスするという点に問題がある。
CommonJS ビルドでは、以下のようなコードにより、内部コールバックが取得可能である。
- function f(){ return f.caller }
この結果、関数を呼び出したホスト側のコールバックが返却される。このコールバックは LispType.Call であり、ランタイム内部の関数呼び出し処理を担うものである。このハンドラが、params オブジェクトを検証せずに使用する点に問題があり、攻撃者による params フィールドの完全な制御が可能になってしまう。
この欠陥を突く攻撃者は、偽装入力を構築し、本来は許可されていない処理を実行させることが可能となる。さらに、複数のコールを連鎖させることで、ホスト側の Function コンストラクタを取得できる。このコンストラクタに任意の JavaScript コードを渡し、ホスト上での直接実行を可能にする。
公開された PoC では、Node.js の child_process モジュールを使用し、システム・コマンドを実行する例が示されている。
リモートコード実行とリスク
CVSS スコア 10.0 が示す通り、この脆弱性は極めて危険である。ネットワーク経由で攻撃が可能であり、低難易度/特権不要/ユーザー操作不要という条件が重なっている。さらに、CVSS のスコープは Changed とされるため、サンドボックスからホスト環境への境界突破が発生する。
ユーザー入力やサードパーティ・スクリプトを SandboxJS を用いて処理する、すべてのプラットフォームが攻撃の対象となる。具体的には、オンライン・コードエディタ/サーバサイド・スクリプト処理系/自動化プラットフォームなどが含まれる。
サンドボックスが突破された場合には、機密性/完全性/可用性のすべてが侵害される。
バージョン 0.9.6 における修正では、caller/callee/arguments プロパティへのアクセスを遮断することで、根本から原因が解消されている。
即時アップデートが困難な場合には、修正が適用されるまで、このライブラリを介して信頼されていない JavaScript を実行すべきではない。
訳者後書:JavaScript のサンドボックス用ライブラリ SandboxJS に見つかった、きわめて深刻な脆弱性を解説する記事です。 問題の原因は、サンドボックス内の関数が、ホスト側の内部機能 (LispType.Call) を呼び出せる状態で放置されていたことにあります。特定のプロパティ (caller) を介して、この内部機能を盗み出した攻撃者は、 隔離された環境を突破してホストシステム上で任意のコマンドを実行するサンドボックス・エスケープを達成します。 きわめて危険な脆弱性であり、PoC も提供されているため、ご利用のチームは、ご注意ください。よろしければ、SandboxJS での検索結果も、ご参照ください。
You must be logged in to post a comment.