概要

セキュリティ企業GitGuardianは、ワークフロー自動化プラットフォーム「n8n」のAPIトークンがGitHub上の公開コミットから大量に流出していると報告した。開発者が誤ってAPIキーをコードとともにコミットしgit pushしてしまったことが主な原因で、2025年4月以降に公開された認証情報を追跡した結果、1,255のホスト名に関連する4,576件の固有トークンが特定された。オンラインで到達可能な896インスタンスのうち、実に321インスタンス(約36%)が流出したトークンをそのまま受け入れる状態だったという。これらは放棄されたシステムではなく、開発者が公開後も認証情報をローテーションしていない稼働中のライブサーバーである点が特に問題視されている。

発見の経緯と技術的背景

GitGuardianはGitHubの公開リポジトリを継続的に監視する自社の仕組みを用いて、流出したn8n APIキーを検出した。n8nのAPIキーは署名付きJSON Web Token(JWT)として機能するが、多くの古いトークンには有効期限が設定されていなかったため、数ヶ月前に流出したキーが調査時点でも依然として有効だった。2025年2月リリースのバージョン1.78.0でようやく30日間のデフォルト有効期限が導入されたが、それ以前に発行された無期限トークンは研究時点でも多数残存していたとされる。

攻撃チェーンとCVE-2026-25053

GitGuardianはさらに、APIトークンの流出だけでなく暗号化キーそのものにまで及ぶ攻撃チェーンを検証した。同社の分析によれば、n8nのJWT署名用シークレットは環境変数N8N_ENCRYPTION_KEYの文字を1文字おきに取得して導出される仕組みになっており、32文字の暗号化キーから16文字分のエントロピーしか持たない署名シークレットが生成されるため、実効的な強度が半減しているという。加えて、OIDC経由でプロビジョニングされたユーザーや登録未完了のユーザーのパスワードフィールドが予測可能な値になり得ることも、セッション偽造につながるリスクとして指摘された。実際の調査では、4,398インスタンスが公開のインスタンスIDを露出しており、うち129インスタンスは既知の弱い暗号化キーと一致したという。さらに、Gitノードの脆弱性であるCVE-2026-25053を悪用すると、--pathspec-from-fileオプションを使って認証済みユーザーが任意のファイルを行単位で読み取ることが可能になり、これによって暗号化キーや認証情報データベースを抽出できることも実証されている。

研究チームは完全にパッチ済みのテスト環境で、流出トークンを用いた4種類の攻撃シナリオ(インスタンスの列挙、保存済み認証情報を経由した外部サービスへの不正操作、データテーブルからの情報抽出、認証情報の生の値を攻撃者サーバーへ流出させる手法)を実証した。いずれも既知のソフトウェア脆弱性を悪用する必要はなく、標準的なHTTPリクエストだけで実行可能だったという。n8nはGmail、Slack、GitHub、AWS、Stripeなど多数のクラウドサービスと連携するため、単一の漏洩トークンから組織内の複数の重要システムへ波及するリスクがある点も強調されている。

対応状況と推奨される対策

GitGuardianは影響を受けた7組織(ホスティング事業者3社、個別企業4社)に責任ある情報開示を試みたが、ホスティング事業者1社と個別企業3社の計4社は応答せず、迅速な対応と認識を示したのはバグバウンティ制度を持つ1社のみだったという。n8n開発元への報告も行われているが、記事公開時点では第三者による独立した検証は完了していない。今回の問題はソフトウェア自体の脆弱性というより、有効な認証情報を通じた「正規アクセス」に起因するためCVEが発行されないケースも多く、発見や対処が遅れやすい点が課題とされる。GitGuardianは対策として、APIを非公開設定にする環境変数N8N_PUBLIC_API_DISABLED=trueの有効化、独立した高エントロピーの秘密鍵の生成、Git・Code・コマンド実行系ノードなど高リスクノードの無効化、外部タスクランナーによる実行環境の分離、外部への継続的なログ収集と監査の実施を推奨している。加えて、コードにシークレットを直接コミットしない運用の徹底、流出が判明したトークンの即時ローテーション、自動シークレットスキャンツールの導入、最小権限アクセス制御の適用も基本的な対策として挙げられている。