HarnessRouterの脆弱性で他組織の接続先を改ざん、修正版あり
HarnessRouterを複数組織向けに運用し、コンソールが自己ホストモードでない環境では、リモートから他組織のモデル接続先を書き換えられる脆弱性があります。0.31.8へ更新し、各組織の接続設定が意図したままか確認してください。
急ぎ度: 早めに
CVSS v3は9.1で、認証なしにネットワーク経由で悪用できる条件ですが、実際の悪用は示されておらず、0.31.8で修正済みで、影響範囲も複数組織を扱う構成に限られます。
関係があるか
1つのHarnessRouterで複数の組織を受け持ち、コンソールを自己ホストモードにしていない環境が対象です。標準のセルフホスト導入は影響を受けないと、開発元は説明しています。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| HarnessRouter(harnessrouter) | 0.31.8より前のすべての版 | 0.31.8 |
確かめ方
- 1導入方法に応じた手段で、稼働中のHarnessRouterの版を確認し、0.31.8より前かどうかを見ます。
- 2同じ環境で複数の組織にサービスを提供しているかを確認します。
- 3コンソールが自己ホストモードで動いているかを確認します。標準のセルフホスト導入では、コンソールのプロキシが鍵を渡す相手はサインイン済みのセッションだけで、組織もサーバー側で固定されます。
- 4コンソールの /api/harness/internal/*、/v1/orgs/*/connections/*、/v1/orgs/*/policy/* に、社外から届く経路があるかを確認します。
何が起きたか
HarnessRouterの0.31.8より前の版に、他の組織のモデル接続先を書き換えられる脆弱性があります。書き換えられた組織では、以降のプロンプトが攻撃者の用意した宛先へ送られ、返ってきた応答にタスクが左右されます。
原因は、サービス間の呼び出しだけを想定した13本のゲートウェイ経路にあります。対象は、組織のプロバイダー接続とルーティングポリシーの読み書き、および /internal/* の各経路です。これらの経路は内部鍵を持っていれば通し、対象の組織はURLから読み取っていました。一方、自己ホストモードでないコンソールのプロキシは、Authorizationヘッダーの付いた要求に、中身を検証する前に内部鍵を付けて転送します。そのため、でたらめなbearerでも経路に届きました。弱点の種類はCWE-862(認可の欠如)とCWE-863(不適切な認可)です。
0.31.8では、内部専用の経路がAuthorizationヘッダー付きの要求を拒否します。サービスは鍵だけで呼び出し、bearerが付いていれば人かAPIキーが中継されたものとみなす考え方です。鍵の比較は定数時間で行い、自己ホスト以外ではコンソールのプロキシが /internal/* を転送しなくなりました。勧告は2026年10月6日付です。
攻撃の流れ
-
1
外部から要求
検証されない認証ヘッダーを付けた要求が、コンソール経由でゲートウェイに向かいます。
-
2
内部鍵が付与
自己ホストモードでないコンソールが、ヘッダーの検証前に内部鍵を付けて転送します。
-
3
接続先を改ざん
内部専用の経路が鍵だけを信用し、URLで指定された組織の接続先が書き換えられます。
-
4
プロンプトが流出
以降のプロンプトが攻撃者の宛先へ送られ、返答がタスクの動きに影響します。
どう悪用されるか
CVSS v3のベクターはAV:N/AC:L/PR:N/UI:Nです。ネットワーク越しに、特別な権限もログインも利用者の操作もなく、手間をかけずに悪用できます。前提になるのは、複数の組織を扱う構成で、コンソールが自己ホストモードでないことです。
悪用されると、被害組織の接続設定を攻撃者の宛先に向けられます。その組織が以降に送るプロンプトは攻撃者に渡り(機密性への影響は高)、攻撃者の返答がタスクの結果や動作に影響します(完全性への影響は高)。可用性への影響はありません。
今すぐやること
-
1
該当するかを確認する
稼働中の版、複数組織の運用、コンソールの自己ホストモードの有無を確かめます。0.31.8より前で、複数組織を扱い、自己ホストモードでなければ該当します。
-
2
0.31.8以降に更新する
修正版に更新します。0.31.7には、同じ報告の別の指摘に対する修正が入っていますが、この脆弱性は直りません。
-
3
各組織の接続とポリシーを点検する
組織ごとのプロバイダー接続の宛先と、ルーティングポリシーが意図したものか確認します。見覚えのない宛先があれば、元に戻したうえで、その間のプロンプトが外部に渡った前提で影響を調べます。
-
4
過去の要求ログを見直す
コンソール側のアクセスログで、接続・ポリシー・/internal/* の各パスへの外部からの書き込み要求を探します。勧告は10月6日付なので、その前後の期間から見ます。
すぐ更新できないとき
更新できるまでの間は、コンソールの /api/harness/internal/* のパス、/v1/orgs/*/connections/* のパス、/v1/orgs/*/policy/* のパスを、社外から到達できないようにします。開発元が示している回避策で、更新までのつなぎです。
背景
HarnessRouterは、エージェントのハーネスを、セッション・ストリーミング・ファイル・キャンセル・失敗時の処理つきで動かすセルフホスト型の統合APIです。組織ごとのプロバイダー接続は、その組織のプロンプトがどのモデルに送られるかを決めます。つまり、接続先の書き換えは、設定の改ざんにとどまらず、業務データの送り先と、モデルの返答をタスクへ取り込む入口を、同時に奪うことになります。
今回の脆弱性は、鍵を持つ呼び出し元を無条件に信用する内部経路と、検証前に鍵を付けるプロキシが組み合わさって起きました。開発元の勧告によると、同じ報告にはもう1件、コンソールのワークスペースがブラウザー側の主張のままで、IDを取る経路で確認されていないという指摘もありました。こちらは、サインイン済みの人が組織をまたいで操作できるのは設計どおりで、ワークスペース間の境界はAPIキーだという整理です。0.31.7(GHSA-9pjr-97x3-c4wv)で、IDを取る全経路にAPIキーの確認が入っています。
よくある質問
Q.すでに0.31.7に更新済みですが、対応は済んでいますか。
Q.開発元のホスト型サービスを使っている場合はどうすればよいですか。
まだ分かっていないこと
- 実際の攻撃や被害の報告は示されていません。
- 影響する版の下限は示されておらず、0.31.8より前のどの版から該当するかは分かっていません。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
HarnessRouter is a self-hosted unified API for running agent harnesses with sessions, streaming, files, cancellation, and failure handling. Prior to 0.31.8, a console that is not in self-hosted mode attaches the server's internal key to requests carrying an Authorization header before validating the bearer, while the service-only PUT and GET /v1/orgs/{org}/connections/{name}, PUT /v1/orgs/{org}/policy/{backend}, and /internal/* routes trust that key and take the organization from the URL. In a multi-organization deployment, a remote caller can use a made-up bearer to rewrite another organization's provider connection to an attacker-controlled endpoint, causing later prompts to be disclosed and attacker-controlled responses to influence tasks. This issue is fixed in version 0.31.8.
出典: CVE.org (CVE Program・cvelistV5) NVD