専門家として、具体的かつ客観的な事実に基づいた構成を行う。
読者の時間を尊重し、構造化された情報(箇条書き、Mermaid)を多用する。
リスク評価はCVSS基本値に基づき、ビジネスインパクトと技術的対策の両面をカバーする。
文体は「だ・である」調を採用し、簡潔さを徹底する。
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
n8nの致命的RCE脆弱性(CVE-2024-25049)への対応:サンドボックス回避の防御策
【脅威の概要と背景】
n8nのJSノード等でサンドボックスを回避しRCEを許す脆弱性。2024年に特定され、CVSS 9.4の深刻なリスクを伴います。
【攻撃シナリオの可視化】
本脆弱性は、n8nの式評価エンジンやJavaScript実行ノードにおいて、制約された環境(サンドボックス)から脱出し、ホストOS上で任意のコマンドを実行可能にする。
graph TD
Attacker["攻撃者"] -->|悪意ある入力/Webhook| N8N["n8n ワークフロー"]
N8N -->|脆弱なJSノード/式評価| SandboxEscape["サンドボックス回避"]
SandboxEscape -->|任意のコード実行| HostOS["ホストOS/コンテナ実行環境"]
HostOS -->|機密情報窃取| Data["DB/環境変数/APIキー"]
HostOS -->|横展開| Network["内部ネットワーク"]
【安全な実装と設定】
n8nにおける「コード実行」のリスクを最小化するため、脆弱な古いバージョンを排除し、実行環境を隔離することが不可欠である。
1. 脆弱な設定例と安全な代替案
誤用例(脆弱な構成): 特権ユーザーで実行されているコンテナ内で、外部からの入力を直接JavaScriptノードの処理に渡している。
# 脆弱な実行例(Docker) docker run -it --rm --name n8n -u root -p 5678:5678 n8nio/n8n:1.30.0
安全な代替案(セキュアな構成):
最新バージョンへのアップデート(v1.31.2以降等)に加え、N8N_BLOCK_ENV_VARS_FROM_EXPRESSIONS などの環境変数による制限、および非特権ユーザーでの実行を徹底する。
# 推奨される実行例(非特権ユーザー・リソース制限) docker run -d --name n8n \ -u node \ --cap-drop=ALL \ --memory="1g" \ -e N8N_BLOCK_ENV_VARS_FROM_EXPRESSIONS=true \ -p 5678:5678 n8nio/n8n:latest
2. 環境変数による保護
ワークフロー内で不必要なシステム情報にアクセスできないよう、n8nの設定で制限をかける。
N8N_DISABLE_PRODUCTION_MAIN_PROCESS_TERMINATION=trueNODE_FUNCTION_ALLOW_EXTERNAL: 許可するモジュールを厳格にホワイトリスト化する。
【検出と緩和策】
検出ポイント (Detection)
EDR/監査ログ: n8nプロセス(
node)の子プロセスとしてsh,bash,curl,wget等が不自然に起動していないかを監視。SIEM: Webhookノードへのリクエストに含まれる特殊なJavaScript構文(
constructor,process,require等の文字列)をシグネチャベースで検知。
緩和策 (Mitigation)
アップデート: ベンダーが提供する修正済みバージョン(最新版)へ即時移行する。
ネットワーク分離: n8nサーバーから外部への通信を、業務上必要な宛先IP/ドメインのみに制限する(Egressフィルタリング)。
ノード制限: JavaScriptノードの使用が不要な環境では、設定により特定のノードを無効化する。
【実務上の落とし穴】
可用性とのトレードオフ: サンドボックスを強化しすぎると、複雑なロジックをJSノードで記述していた既存ワークフローが停止する恐れがある。移行前にステージング環境での検証が必須。
偽陽性 (False Positive): 開発者がデバッグ目的で正規に記述したコードが、SIEMの検知ルールに抵触し、アラートが過剰発生する可能性がある。
コンテナ外への波及:
docker.sockをマウントしている場合、コンテナ内でのRCEがホストマシンの完全な乗っ取りに直結するため、マウント設定を再確認すること。
【まとめ】
組織として優先すべき3つのアクション:
即時アップデート: インストールされているn8nのバージョンを確認し、修正済みバージョンへ更新する。
実行権限の見直し: n8nプロセスを
rootで実行している場合、即座に非特権ユーザー(node等)へ切り替える。資産の棚卸し: 公開インターネットに露出しているn8nインスタンスを特定し、可能な限りVPN内またはIP制限下に配置する。
参考文献:
n8n Security Advisories: https://docs.n8n.io/security/
CVE-2024-25049 (NVD): https://nvd.nist.gov/vuln/detail/CVE-2024-25049
JPCERT/CC 脆弱性関連情報: https://www.jpcert.or.jp/

