CVE-2026-111497: Node.jsのBrotliデコーダーにおける重大なNode2Shell脆弱性
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経由)
Webサーバ経由の疑わしいシェル [Linux] (process_creation経由)
疑わしいNodeJS子プロセス[Linux](cmdline経由)
Node.jsプロセスクラッシュ後のプログラム実行- Node2Shellエクスプロイト [Linuxプロセス作成]
シミュレーション実行
-
攻撃サブプロット&コマンド: 敵はNode.jsを実行しているWebアプリケーションを狙います。彼らはメモリ破損エラーを引き起こす悪意のあるBrotli圧縮ペイロードを送信し、
nodeプロセスをクラッシュさせます。クラッシュ直後、攻撃者はハイジャックされた実行フローを利用して/bin/bashシェルを生成し、永続性を確立し、ローカル偵察を開始します。これはnode事象に続いて/bin/bash実行するように設計されており、selection_crashandselection_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 "成功したエクスプロイト"