<p>[META]
[TYPE:SECURITY_ADVISORY]
[TARGET:n8n_WORKFLOW_PLATFORM]
[CVE:CVE-2026-25049]
[PRIORITY:CRITICAL]
[STATUS:DRAFT_UNVERIFIED]</p>
<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">n8nの致命的RCE(CVE-2026-25049)に対する緊急インシデント対応指針</h1>
<h2 class="wp-block-heading">【脅威の概要と背景】</h2>
<p>n8nの実行環境におけるサンドボックス回避を悪用し、遠隔から任意のOSコマンドを実行可能な脆弱性(CVE-2026-25049)。2026年初頭に報告され、CVSS v3 9.4を記録。</p>
<h2 class="wp-block-heading">【攻撃シナリオの可視化】</h2>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["外部攻撃者"] -->|1. 悪意あるJSONペイロードを送信| B("公開Webhook/APIエンドポイント")
B -->|2. サンドボックス制約のバイパス| C{"n8n 実行エンジン"}
C -->|3. OSコマンドの注入| D["ホストOS/コンテナ"]
D -->|4. リバースシェルの確立| E["外部C2サーバ"]
E -->|5. 認証情報の窃取・横展開| F["社内ネットワーク"]
</pre></div>
<p>攻撃者は、ワークフローの定義または実行引数に、Node.jsの内部オブジェクト(<code>process</code>等)を操作する特殊な文字列を混入させることで、本来隔離されているはずのホスト環境での権限奪取を試みます。</p>
<h2 class="wp-block-heading">【安全な実装と設定】</h2>
<h3 class="wp-block-heading">1. 脆弱な設定(デフォルトに近い状態)</h3>
<p>n8nを特権ユーザーで実行し、外部からの入力をそのままコード実行ノードに渡す構成は極めて危険です。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># 非推奨:root権限でのコンテナ起動
docker run -it --rm --name n8n -p 5678:5678 n8nio/n8n
</pre>
</div>
<h3 class="wp-block-heading">2. 安全な代替案(堅牢化ガイドライン)</h3>
<p>実行環境を非特権ユーザーに制限し、ネットワークレベルでの隔離を徹底します。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># 推奨:非特権ユーザー(UID 1000)での実行と環境変数の制限
docker run -d \
--name n8n_secure \
--user 1000:1000 \
-p 5678:5678 \
-e N8N_BLOCK_ENV_ACCESS_IN_JS=true \
-e N8N_DISABLE_PRODUCTION_MAIN_PROCESS_TERMINATION=true \
n8nio/n8n:latest
</pre>
</div>
<p>また、ワークフロー内での「Code Node」の使用を最小限にし、外部入力(Webhook等)に対しては必ずスキーマバリデーションを適用してください。</p>
<h2 class="wp-block-heading">【検出と緩和策】</h2>
<h3 class="wp-block-heading">検出ポイント(SIEM/EDR)</h3>
<ul class="wp-block-list">
<li><p><strong>プロセス監視</strong>: <code>n8n</code>の親プロセスから <code>/bin/sh</code> や <code>curl</code>, <code>wget</code> が不自然に呼び出されていないか。</p></li>
<li><p><strong>ログ分析</strong>: n8nの実行ログにおいて、<code>__proto__</code>, <code>constructor</code>, <code>process.mainModule</code> といったプロトタイプ汚染やサンドボックス脱出を狙ったキーワードの有無を確認。</p></li>
</ul>
<h3 class="wp-block-heading">緊急緩和策(Workaround)</h3>
<ul class="wp-block-list">
<li><p><strong>即時アップデート</strong>: ベンダーが提供する修正済みバージョン(vX.Y.Z以降)への更新。</p></li>
<li><p><strong>ネットワーク制限</strong>: n8nの管理画面およびWebhookエンドポイントへのアクセスを、信頼できるIPアドレス(VPN経由等)に限定。</p></li>
<li><p><strong>機能制限</strong>: 環境変数 <code>N8N_BLOCK_ENV_ACCESS_IN_JS=true</code> を設定し、JavaScriptノードからの機密情報アクセスを遮断。</p></li>
</ul>
<h2 class="wp-block-heading">【実務上の落とし穴】</h2>
<ul class="wp-block-list">
<li><p><strong>可用性への影響</strong>: <code>N8N_BLOCK_ENV_ACCESS_IN_JS</code> 等の制限を導入すると、既存の複雑なカスタムワークフローが停止する「破壊的変更」となる可能性があります。</p></li>
<li><p><strong>誤検知</strong>: 開発者が正当な理由でシステム情報を取得するスクリプトを書いている場合、EDRが過剰に反応し、業務自動化が停滞するリスクがあります。本番適用前の検証環境での動作確認が必須です。</p></li>
</ul>
<h2 class="wp-block-heading">【まとめ】</h2>
<p>組織として今すぐ実施すべき3箇条:</p>
<ol class="wp-block-list">
<li><p><strong>アセットの特定</strong>: 露出している全てのn8nインスタンスのバージョンと、インターネット公開設定を再確認する。</p></li>
<li><p><strong>パッチ適用の優先</strong>: 修正済みバージョンへの即時アップデート。困難な場合はWAFでのパターマッチング(JSプロパティ操作の遮断)を導入。</p></li>
<li><p><strong>最小権限の徹底</strong>: コンテナ実行ユーザーを <code>root</code> から <code>node</code> 等の非特権ユーザーへ変更し、ホストOSへの波及を抑え込む。</p></li>
</ol>
<hr/>
<p><strong>参考文献:</strong></p>
<ul class="wp-block-list">
<li><p>n8n Official Security Advisories: <a href="https://docs.n8n.io/security/">https://docs.n8n.io/security/</a></p></li>
<li><p>JPCERT/CC 脆弱性関連情報: <a href="https://www.jpcert.or.jp/">https://www.jpcert.or.jp/</a></p></li>
<li><p>CVE-2026-25049 Detail (NIST NVD): <a href="https://nvd.nist.gov/">https://nvd.nist.gov/</a>(※実在の最新情報を参照してください)</p></li>
</ul>
[META]
[TYPE:SECURITY_ADVISORY]
[TARGET:n8n_WORKFLOW_PLATFORM]
[CVE:CVE-2026-25049]
[PRIORITY:CRITICAL]
[STATUS:DRAFT_UNVERIFIED]
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
n8nの致命的RCE(CVE-2026-25049)に対する緊急インシデント対応指針
【脅威の概要と背景】
n8nの実行環境におけるサンドボックス回避を悪用し、遠隔から任意のOSコマンドを実行可能な脆弱性(CVE-2026-25049)。2026年初頭に報告され、CVSS v3 9.4を記録。
【攻撃シナリオの可視化】
graph TD
A["外部攻撃者"] -->|1. 悪意あるJSONペイロードを送信| B("公開Webhook/APIエンドポイント")
B -->|2. サンドボックス制約のバイパス| C{"n8n 実行エンジン"}
C -->|3. OSコマンドの注入| D["ホストOS/コンテナ"]
D -->|4. リバースシェルの確立| E["外部C2サーバ"]
E -->|5. 認証情報の窃取・横展開| F["社内ネットワーク"]
攻撃者は、ワークフローの定義または実行引数に、Node.jsの内部オブジェクト(process等)を操作する特殊な文字列を混入させることで、本来隔離されているはずのホスト環境での権限奪取を試みます。
【安全な実装と設定】
1. 脆弱な設定(デフォルトに近い状態)
n8nを特権ユーザーで実行し、外部からの入力をそのままコード実行ノードに渡す構成は極めて危険です。
# 非推奨:root権限でのコンテナ起動
docker run -it --rm --name n8n -p 5678:5678 n8nio/n8n
2. 安全な代替案(堅牢化ガイドライン)
実行環境を非特権ユーザーに制限し、ネットワークレベルでの隔離を徹底します。
# 推奨:非特権ユーザー(UID 1000)での実行と環境変数の制限
docker run -d \
--name n8n_secure \
--user 1000:1000 \
-p 5678:5678 \
-e N8N_BLOCK_ENV_ACCESS_IN_JS=true \
-e N8N_DISABLE_PRODUCTION_MAIN_PROCESS_TERMINATION=true \
n8nio/n8n:latest
また、ワークフロー内での「Code Node」の使用を最小限にし、外部入力(Webhook等)に対しては必ずスキーマバリデーションを適用してください。
【検出と緩和策】
検出ポイント(SIEM/EDR)
プロセス監視: n8nの親プロセスから /bin/sh や curl, wget が不自然に呼び出されていないか。
ログ分析: n8nの実行ログにおいて、__proto__, constructor, process.mainModule といったプロトタイプ汚染やサンドボックス脱出を狙ったキーワードの有無を確認。
緊急緩和策(Workaround)
即時アップデート: ベンダーが提供する修正済みバージョン(vX.Y.Z以降)への更新。
ネットワーク制限: n8nの管理画面およびWebhookエンドポイントへのアクセスを、信頼できるIPアドレス(VPN経由等)に限定。
機能制限: 環境変数 N8N_BLOCK_ENV_ACCESS_IN_JS=true を設定し、JavaScriptノードからの機密情報アクセスを遮断。
【実務上の落とし穴】
【まとめ】
組織として今すぐ実施すべき3箇条:
アセットの特定: 露出している全てのn8nインスタンスのバージョンと、インターネット公開設定を再確認する。
パッチ適用の優先: 修正済みバージョンへの即時アップデート。困難な場合はWAFでのパターマッチング(JSプロパティ操作の遮断)を導入。
最小権限の徹底: コンテナ実行ユーザーを root から node 等の非特権ユーザーへ変更し、ホストOSへの波及を抑え込む。
参考文献:
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント