
CVE-2025-56015 の Proof-of-Concept エクスプロイトです。これは、GenieACS における重大なサンドボックスエスケープおよびコードインジェクションの脆弱性であり、プロビジョニングコンテキストでの任意の JavaScript 実行を可能にします。declare.constructor.constructor プロトタイプチェーンを利用することで、攻撃者は制限された JavaScript 環境から脱出し、基盤となる Node.js の child_process および net モジュールにアクセスして、完全なリモートコード実行 (RCE) を達成できます。
エクスプロイト種別: リモート
認証: GenieACS NBI (ポート 7557) および ACS (ポート 7547) へのネットワークアクセスが必要
影響: サーバー全体の侵害、リバースシェル実行、ネットワークピボット
ポート 7557 の NBI エンドポイントでは、認証なしで機密データを取得できます。API エンドポイントの例:
ユーザーデータの取得:
$ curl 'http://myhost:7557/users/'
レスポンスには、パスワードハッシュやソルトなどの機密情報が含まれます。
ファイル一覧の取得:
$ curl 'http://myhost:7557/files/'
プロビジョン詳細の取得:
$ curl 'http://myhost:7557/provisions/'
さらに、ファイルサーバー (ポート 7567) から認証なしでファイルを直接ダウンロードできます:
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
サンドボックス内のテスト用デバッグエンドポイントは、Node.js の process オブジェクトへの直接アクセスを制限します。ただし、オブジェクトのトラバーサル、特にコンストラクタチェーン (constructor.constructor など) を使用することで、この制限を回避できます。
これを利用可能なオブジェクト (declare など) に対して呼び出すことで、攻撃者はサンドボックスコンテキストから脱出し、グローバルな process オブジェクトへのアクセスを得ることができます。これにより、環境変数の読み取りと任意のコマンド実行が可能になります。
認証後 RCE:
プロビジョンスクリプトは、API エンドポイント /api/devices/{device_id}/tasks を介して直接実行し、シェルを取得できます。NBI 経由で送信されたリクエストはキューに入れられるだけで、即座には実行されません。
認証前 RCE (未認証 RCE): NBI API を使用すると、攻撃者は認証なしでプロビジョンとプリセットを作成できます。プリセットは、デバイスが CWMP インターフェースを介してイベントを送信したときに、プロビジョンスクリプトを自動的に実行するために使用されます。
悪用手順:
PUT /provisions/{provision_name} で悪意のあるプロビジョンを作成します。PUT /presets/{preset_name} でプロビジョンに対応するプリセットを作成します (「Periodic」などのイベントにリンクします)。declare.constructor.constructor を使用した信頼性の高い Node.js サンドボックスエスケープエクスプロイトを実行する前に、exploit.py 内の ACS_URL、NBI_URL、LHOST、LPORT の設定を、お使いの環境と攻撃者マシンの設定に合わせて更新してください。
# 攻撃者マシンでリスナーを起動
nc -lvnp 4444
# エクスプロイトを実行
python3 exploit.py

requests ライブラリ (pip install requests)このコードは、教育および許可されたセキュリティテスト目的でのみ提供されています。
所有していない、または明示的なテスト許可を得ていないシステムに対する不正使用は、違法かつ非倫理的です。
脆弱性の発見とエクスプロイトの開発者:
Datafarm Co., Ltd. より
DF Pentest Team • タイにより開発