
n8nにおけるCVE-2025-68613脆弱性の技術的調査。影響を受けるバージョン、ラボでの検証シナリオ、攻撃・防御分析、および緩和策を網羅しています。
n8n は、ビジュアルフローと JavaScript 式を通じてシステムやサービスを統合するために使用されるワークフロー自動化プラットフォームです。
CVE-2025-68613 は、CVSS 9.9 の重大なリモートコード実行 (RCE) 脆弱性であり、n8n の複数のバージョンに影響を与えます。この欠陥は、脆弱なバージョンにおいて適切に分離されていないワークフロー内の JavaScript 式の処理で発生します。これにより、編集権限を持つ認証済みユーザーが、アプリケーションの想定された動作の範囲外でコードを実行できるようになります。
実際には、この欠陥を悪用して、n8n が実行されているサーバー上で、アプリケーション自身の権限を使用してコマンドを実行することが可能です。影響を受けるバージョンは 0.211.0 から、1.120.4、1.121.1、1.122.0 で適用された修正前のバージョンにまで及びます。
このリポジトリは CVE-2025-68613 を技術的に文書化し、欠陥の背景、影響を受けるバージョン、悪用方法、推奨される緩和策を網羅しています。

| ステータス | n8n バージョン | 備考 |
|---|---|---|
| ❌ 影響あり | >= 0.211.0 | 脆弱なメカニズムの導入 |
| ❌ 影響あり | < 1.120.4 | ブランチ 1.120 のパッチまで脆弱 |
| ❌ 影響あり | < 1.121.1 | ブランチ 1.121 のパッチまで脆弱 |
| ❌ 影響あり | < 1.122.0 | ブランチ 1.122 のパッチまで脆弱 |
| ✅ 修正済み | 1.120.4 | 公式修正が適用済み |
| ✅ 修正済み | 1.121.1 | 公式修正が適用済み |
| ✅ 修正済み | >= 1.122.0 | 修正がデフォルトで組み込まれている |
直ちにバージョン 1.122.0 以上に更新することを推奨します。
脆弱性を実証するには、以下の条件が必要です:
この欠陥はワークフローの作成および実行中に発生し、認証前ではありません。
最初のステップは、有効なユーザーで n8n Web インターフェースにログインすることです。

このステップは、攻撃が匿名ではないことを確認します。この脆弱性には認証済みユーザーが必要です。
ログイン後、ユーザーがワークフローを作成および編集する権限を持っていることを確認します。

これは、このアクセスレベルを持つユーザーのみがワークフローに動的な式を挿入できるため、重要です。
認証済みユーザーで、ゼロから新しいワークフローを作成します。

ここから、脆弱なバージョンでは悪用される可能性がある、n8n 機能の正当な使用が始まります。
ワークフローに最初に追加されるノードは Manual Trigger です。

このノードの動作: ワークフローの手動実行を可能にし、フローの開始点として使用されます。
このシナリオでは、ワークフロー実行のエントリポイントとしてのみ機能します。
2 番目に追加されるノードは Edit Fields (Set) です。

このノードの動作: このノードは、ワークフロー内でデータフィールドを作成、変更、または上書きすることを可能にします。静的な値、または実行時に評価される JavaScript 式を受け入れます。
まさにこの時点で、脆弱性が顕在化します。
Edit Fields (Set) ノードの値フィールド内に、{{ }} で囲まれた JavaScript 式を挿入します。これは n8n が動的な式を評価するために使用する形式です。

ペイロードの例:
{{ (function(){
return this.process.mainModule
.require('child_process')
.execSync('id')
.toString()
})() }}
(function(){ ... })(): 自己呼び出し関数を定義し、すべてのロジックをカプセル化して、値を直接ワークフロー式に返すことを可能にします。this.process: 内部の Node.js process オブジェクトにアクセスし、ランタイム情報とリソースを公開します。process.mainModule: アプリケーションのメインモジュールへのアクセスを可能にし、他の内部 Node.js モジュールの読み込みを可能にします。require('child_process'): オペレーティングシステム上で新しいプロセスを作成し、外部コマンドを実行することを可能にするネイティブ Node.js モジュールです。execSync('id'): n8n が実行されているオペレーティングシステム上で、アプリケーションのプロセス権限を使用してコマンドを直接実行します。.toString(): 実行されたコマンドの出力をテキストに変換し、結果を n8n インターフェースに表示できるようにします。表示された結果は、n8n プロセスの権限を使用してコマンドがオペレーティングシステム上で実行されたことを確認し、リモートコード実行 (RCE) を特徴づけます。