2026年に入って「Ni8mare(ナイトメア)」と呼ばれる深刻な脆弱性が発見されました。
1. どんなインシデントか
n8nとは
今回問題になったのは「n8n(エヌエイトエヌ)」というワークフロー自動化プラットフォームです。
身近な例で言うと…
- 「新しいメールが届いたら、自動的にSlackに通知する」
- 「Googleスプレッドシートに新しい行が追加されたら、データベースに保存する」
こんな作業を自動化できるツールです。
何が問題だったのか
このn8nに、CVSS 10.0(満点!) という最高レベルの脆弱性が見つかりました。名前は「Ni8mare(CVE-2026-21858)」。
脆弱性の正体:
- Content-Type混同の脆弱性
- 認証なしで攻撃可能
- 世界中で26,512台のサーバーが影響を受ける可能性
技術的な原因
身近な例で考えてみましょう。
例:郵便配達のミス
想像してください。あなたの家に郵便が届きます。
正常な場合:
- 郵便配達員:「これは手紙です」→ ポストに入れる
- 郵便配達員:「これは荷物です」→ 玄関で手渡し
今回の脆弱性(Ni8mare)の場合:
- 攻撃者: 封筒に「これは手紙です」と書く
- でも中身は実は「家の鍵を開けるための道具(荷物)」
- 郵便配達員は「手紙だ」と信じて、手渡しせずにポストに入れてしまう
技術的には:
攻撃者が送るリクエスト:
Content-Type: application/json ← 「これはJSONデータです」と嘘をつく
実際の中身: ファイルパス情報(例:/home/node/.n8n/database.sqlite)
n8nのシステム:
「JSONデータだな」と信じて処理
→ 本来アクセスできないファイルを読み取ってしまう
EC-CUBEで例えるなら
EC-CUBEなどのECサイトで同じような脆弱性があったら…
- 商品画像をアップロードするフリをして、実は顧客データベースにアクセス
- 「画像ファイルです」と偽って、実は会員情報のファイルを取得
2.どんなシステムが影響を受けるのか
直接的な被害
影響を受けるバージョン:
n8n バージョン1.65.0以前のすべて
特に危険な状況:
- インターネットに公開されているn8nサーバー
- 認証なしでアクセスできるWebhook(外部からデータを受け取る窓口)
- フォーム機能を使っている場合
間接的な被害:ドミノ倒しのように広がる危険性
n8nの怖いところは、「ハブ(中継地点)」として機能している点です。
例:あなたの会社でn8nを使っている場合
n8nが侵害される
↓
保存されている認証情報が盗まれる
↓
├─ Slackのトークン → 社内チャットが覗かれる
├─ AWSのアクセスキー → クラウドサーバーが乗っ取られる
├─ データベースのパスワード → 顧客情報が流出
└─ メールサービスのAPI鍵 → なりすましメールが送られる
つまり、n8n一つが侵害されると、繋がっているすべてのサービスが危険にさらされます。
最近のn8nの他の脆弱性
実は、Ni8mare以外にも最近こんな脆弱性が見つかっています:
- CVE-2025-68613(CVSS 9.9): ログインしたユーザーがコードを実行できる
- CVE-2025-68668(CVSS 9.9): セキュリティの壁(サンドボックス)を突破できる
- CVE-2026-21877(CVSS 10.0): 危険なファイルをアップロードできる
「便利なツールほど、セキュリティリスクも大きい」ということを覚えておきましょう。
3.対策
① パッチを適用する
最新バージョンにアップグレード:
- バージョン1.121.0以降
- 推奨:1.123.10、2.1.5、2.2.4、2.3.0
② 暫定的な回避策
すぐにアップデートできない場合:
1.インターネットに公開しない
- 社内ネットワークからのみアクセス可能にする
- VPN経由でのみアクセスを許可
2.認証を必須にする
- すべてのフォームにパスワード認証を設定
- Webhookにも認証トークンを設定
3.不要な機能を無効化
- 使っていないWebhookは削除
- 公開フォームを一時的に停止
4.この脆弱性で具体的に何ができてしまうのか
攻撃者の視点で理解することで、防御の重要性が分かります。
攻撃の4ステップ(段階的エスカレーション)
ステップ1:任意ファイル読み取り
攻撃者がやること:
POST /webhook/form HTTP/1.1
Content-Type: application/json
{
"files": {
"file": {
"path": "/home/node/.n8n/database.sqlite"
}
}
}
何が起こる?
- システムは「JSONデータだ」と勘違い
- 実際には
database.sqlite(データベースファイル)を読み取ってしまう
身近な例:
図書館で「この本を借ります」と言いながら、実は「金庫の鍵」を持ち出すようなもの。
ステップ2:機密情報の窃取
取得できる情報:
データベースファイルから:
- 管理者のユーザーID
- メールアドレス
- ハッシュ化されたパスワード
設定ファイルから:
- 暗号化の秘密鍵
- API接続情報
EC-CUBEで例えると:
- 管理画面のログイン情報
- 決済システムのAPI鍵
- 顧客データベースの接続情報
これらが全部盗まれるイメージです。
ステップ3:認証バイパス(なりすまし)
攻撃者がやること:
- 盗んだ情報を使って偽のセッションクッキーを作成
- 管理者としてログイン
- すべての機能にアクセス可能に
分かりやすい例:
通常:
あなた → [ログイン画面] → パスワード入力 → 管理画面
攻撃者:
盗んだ情報 → [偽の身分証明書を作成] → 直接管理画面へ
ステップ4:リモートコード実行(RCE)
最終段階:完全な制御
攻撃者は管理者権限を使って:
// n8nで新しいワークフローを作成
{
"nodes": [
{
"type": "n8n-nodes-base.executeCommand",
"parameters": {
"command": "cat /etc/passwd" // システムのユーザー情報を表示
}
}
]
}
できてしまうこと:
- サーバー上で任意のコマンド実行
- マルウェアのインストール
- バックドアの設置
- 他のサーバーへの攻撃の踏み台
影響範囲の恐ろしさ
単一障害点(Single Point of Failure):
n8nが侵害される
↓
すべての統合サービスへのアクセス権を取得
↓
├─ Slack → 社内情報の盗聴
├─ GitHub → ソースコードの窃取
├─ AWS → サーバーの乗っ取り
├─ Salesforce → 顧客情報の流出
└─ Gmail → なりすましメール送信
便利な統合ツールは、侵害されると被害が連鎖します。
注意して利用するようにしましょう。