SOC Prime Bias: High

26 Oct 2026 16:41 UTC

CVE-2026-111497: Node.jsのBrotliデコーダーにおける重大なNode2Shell脆弱性

Author Photo
SOC Prime Team linkedin icon フォローする
CVE-2026-111497: Node.jsのBrotliデコーダーにおける重大なNode2Shell脆弱性
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Node2Shellは、Node.jsに同梱されているBrotliデコーダに影響を及ぼす重要な脆弱性(CVE-2026-111497)で、範囲外書き込みによって引き起こされます。攻撃者は不正な圧縮ストリームをBrotliデータを処理するサービスに供給することでこの欠陥を悪用し、サービス拒否、メモリ開示、またはリモートコード実行を引き起こす可能性があります。この脆弱性は、特にExpress 5やBrotli解凍を自動で行うミドルウェアを使用するサービスにとって大きなリスクとなります。

調査

Sysdig脅威研究チームはこの脆弱性を分析し、パッチリリース後数時間以内に公開されたPoCが発生したと報告しました。ImpervaおよびVercelの研究によれば、Linux arm64を含む特定のアーキテクチャ上でコード実行が可能であることが示されました。調査では、body-parserといったライブラリのように、アプリケーションやそのライブラリが攻撃者制御のBrotliストリームを処理するかどうかが、悪用可能性に依存することも示されました。

緩和策

主な緩和策は、Node.jsをバージョン22.23.4、24.22.1、または26.12.1にアップグレードし、Bunをバージョン1.4.4以上に更新することです。また、組織は可能であればリクエスト解凍を無効にするべきです。これには inflate: false をbody-parserで設定することが含まれます。さらに、信頼されていない Content-Encoding: br リクエストを拒否するためのWAFルールを展開し、非特権アカウントでサービスを実行することで、追加の防御層を提供します。

対応

Node.jsプロセスのクラッシュや不意のプログラム実行など、潜在的なエクスプロイトチェーンが検出された場合、セキュリティチームは直ちに影響を受けたワークロードを隔離するべきです。インタラクティブシェル、不正なマルウェアのダウンロード、暗号通貨のマイニング、あるいはシークレットやクラウドトークンの窃取などの事後エクスプロイト活動を監視して、接続可能な脆弱なサービス全てのパッチ適用を最優先に維持します。

アタックフロー

この部分はまだ更新中です。

検出

疑わしいNodeJS子プロセス[Windows](cmdline経由)

SOC Primeチーム
2026年10月25日

Webサーバ経由の疑わしいシェル [Linux] (process_creation経由)

SOC Primeチーム
2026年10月25日

疑わしいNodeJS子プロセス[Linux](cmdline経由)

SOC Primeチーム
2026年10月25日

Node.jsプロセスクラッシュ後のプログラム実行- Node2Shellエクスプロイト [Linuxプロセス作成]

SOC Prime AIルール
2026年10月25日

シミュレーション実行

  • 攻撃サブプロット&コマンド: 敵はNode.jsを実行しているWebアプリケーションを狙います。彼らはメモリ破損エラーを引き起こす悪意のあるBrotli圧縮ペイロードを送信し、 node プロセスをクラッシュさせます。クラッシュ直後、攻撃者はハイジャックされた実行フローを利用して /bin/bash シェルを生成し、永続性を確立し、ローカル偵察を開始します。これは node 事象に続いて /bin/bash 実行するように設計されており、 selection_crash and selection_suspicious_exec 検出規則のロジックに対応しています。

  • リグレッションテストスクリプト:

    #!/bin/bash
    # Node2Shellスタイルのエクスプロイトパターンのシミュレーション
    
    echo "[+] Node2Shellシミュレーション開始..."
    
    # 1. 'クラッシュ'または突然終了するNode.jsプロセスをシミュレート
    # 実際のシナリオではこれはクラッシュです。ここでは呼び出し/処理される
    # ノードプロセスのテレメトリをシミュレートします。
    node -e "process.exit(1)"
    echo "[+] Node.jsプロセスが'クラッシュ'しました(終了コード1)。"
    
    # 2. 疑わしいシェルの即時実行をシミュレート
    # これはクラッシュ後にシェルをトリガーするペイロードを模倣します。
    /bin/bash -c "echo '成功したエクスプロイト:シェル生成'"
    
    echo "[+] シミュレーション完了。SIEMでの検出を確認してください。"
  • クリーンアップコマンド:

    # このシミュレーションによって作成された永続的なファイルはありません。
    # 不審なbashプロセスが実行されていないことを確認します。
    pkill -f "成功したエクスプロイト"