[緊急警告] n8nのGitノードにおける正規表現脆弱性 (ReDoS) でサービス停止の恐れ
はじめに:n8nの正規表現脆弱性について
日本のフロントエンドエンジニアの皆さん、こんにちは。今回は、自動化ツールとして広く利用されているn8nにおいて発見された、深刻度の高い脆弱性「GHSA-j535-v25q-vx3q / CVE-2026-86081」について解説します。この脆弱性は、悪意のある入力によってn8nインスタンス全体がフリーズし、サービスが停止してしまう可能性を秘めています。特に、認証済みユーザーであれば誰でも容易に引き起こせるため、迅速な対応が不可欠です。
CVE-2026-86081の詳細:ReDoS攻撃によるサービス停止のメカニズム
この脆弱性は、n8nのGitノードがファイルをクローンする際、保存先パスをシステムデフォルトの正規表現パターン(`N8N_BLOCK_FILE_PATTERNS`)と照合する処理に起因します。問題の核心は、この正規表現の記述方法に「壊滅的なバックトラッキング(Catastrophic Backtracking)」が発生しうる点にあります。
壊滅的なバックトラッキングとは、特定の正規表現パターンと入力文字列の組み合わせによって、正規表現エンジンの評価処理が指数関数的に増大し、CPUリソースを著しく消費する現象を指します。これは「ReDoS(Regular Expression Denial of Service)」攻撃として知られる脆弱性の一種です。n8nの場合、意図的に作成された悪意のあるパスが入力されると、このバックトラッキングによって正規表現の処理が暴走します。
さらに深刻なのは、この正規表現の評価がn8nのメインプロセスで同期的に(ブロッキングで)行われる点です。処理が暴走すると、メインプロセス全体がブロックされ、結果としてn8nインスタンス全体がフリーズし、すべてのユーザーがサービスを利用できなくなります。この攻撃は、特別な設定なしに、認証済みのユーザーであればわずか1回のワークフロー実行で引き起こせてしまいます。
フロントエンドエンジニアが知るべきReDoSの脅威と対策
直接n8nを運用していないフロントエンドエンジニアの方々も、この脆弱性は見過ごせません。なぜなら、ReDoSはJavaScriptなど、フロントエンド開発で日常的に正規表現を扱う場面でも起こりうるからです。例えば、入力バリデーション、ルーティングのパターンマッチング、文字列の解析など、正規表現を利用する箇所は多岐にわたります。不適切な正規表現は、クライアントサイドでもパフォーマンス低下や最悪の場合フリーズを引き起こす可能性があります。
今回のn8nの事例は、バックエンドのサービスに影響を及ぼしますが、正規表現の安全性に対する意識を高める良い機会です。フロントエンド開発においても、複雑な正規表現を使用する際は、ReDoSの可能性を常に考慮し、<a href="https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS" target="_blank">OWASP ReDoS Prevention Cheat Sheet</a>などを参考に、効率的で安全なパターンを記述することを心がけましょう。また、利用しているライブラリやツールが依存している正規表現に脆弱性がないか、常に監視することも重要です。
推奨される対策:直ちにn8nをアップデートしましょう
最も推奨される対策は、n8nを脆弱性が修正された以下のバージョン以降にアップグレードすることです。これらのバージョンでは、正規表現パターンが効率的(線形時間)に書き直されており、ReDoS攻撃のリスクが解消されています。
**修正済みバージョン:**
<ul><li>n8n v1.123.76 以降</li><li>n8n v2.37.7 以降</li><li>n8n v2.38.2 以降</li></ul>
アップグレードが困難な場合の暫定的な軽減策
すぐにアップグレードができない場合でも、以下に示す暫定的な軽減策を検討し、リスクを最小限に抑えるようにしてください。ただし、これらはあくまで一時的な措置であり、可能な限り早期のアップデート実施を強く推奨します。
<ul><li>**n8nインスタンスへのアクセス制限:** 信頼できるユーザーのみがn8nインスタンスにアクセスできるよう、アクセス制御を厳格化してください。</li><li>**Gitノードの無効化:** 環境変数 `NODES_EXCLUDE` に `n8n-nodes-base.git` を追加し、Gitノード自体を無効化することで、脆弱性のトリガーを排除できます。</li><li>**正規表現パターンの手動修正:** 環境変数 `N8N_BLOCK_FILE_PATTERNS` を、バックトラッキングに安全な代替パターンに手動で設定し直します。ただし、この作業は正規表現の知識が必要であり、誤った設定は他の問題を引き起こす可能性があるため注意が必要です。</li></ul>
まとめ
今回のn8nの脆弱性は、開発ツールチェーン全体におけるセキュリティ対策の重要性、特に正規表現の潜在的な危険性(ReDoS)を浮き彫りにしました。フロントエンドエンジニアの皆さんには、利用しているツールやライブラリの脆弱性情報に常にアンテナを張り、自身のコードにおける正規表現の安全性にも注意を払うことをお勧めします。
もしn8nを利用している場合は、本記事で推奨されたバージョンへの速やかなアップデート、または適切な暫定策の適用をお願いいたします。