GitHub Repo
Hermes Agent、ネイティブログインのリダイレクト脆弱性を修正 URL解析の差異によりセッション乗っ取りのおそれ
Tenableは10月9日、Hermes Agentのネイティブログインに関する脆弱性を公表した。サーバーとブラウザーでコールバックURLの解析方法が異なり、認可コードが攻撃者に渡る可能性がある。修正はv0.21.6に含まれるが、Desktop、Termux、Microsoft Store向けパッケージは同時に更新されていない。

Tenableは10月9日、Hermes Agentのネイティブアプリケーションのログインフローにリダイレクト検証の脆弱性があるとするセキュリティアドバイザリーを公開した。影響を受ける製品はバージョン0.21.6未満。攻撃者はURL解析の差異を悪用し、ユーザーのログイン完了後に認可コードを取得して、アカウントトークンと交換できる可能性がある。アドバイザリーはリスクをHighと評価し、バージョン0.21.6以降へのアップグレードを推奨している。Tenableのアドバイザリー
問題は公開エンドポイント GET /auth/native/authorize にある。サーバーはPythonの urllib.parse.urlparse を使って redirect_uri を検査し、ホストがループバックアドレスに見えることを確認した後、正規化されていない元の文字列を保存していた。ブラウザーが採用するWHATWG URL解析規則ではバックスラッシュの扱いが異なるため、サーバーとブラウザーが別の宛先ホストを認識する可能性がある。攻撃者はPKCE challengeも自分で指定できるため、漏えいした認可コードを取得すれば交換を完了できる。つまり、PKCEの保護はコールバックURLの検証が正しく行われることを前提としており、プロトコルを有効にするだけではログインの安全性を確保できない。脆弱性の分析
上流の修正では、バックスラッシュ、ユーザー情報フィールド、非ASCII文字、制御文字、フラグメント識別子を拒否するように変更した。また、URLのauthorityが標準形式の 127.0.0.1[:port] または [::1][:port] に一致することを必須とし、ログインフローでは正規化後のURIを保存する。修正提案では72項目のテストに合格したと記録されており、境界値のケースで悪意ある入力を拒否することと、正当なコールバックが認可からトークン交換まで完了することを検証している。これらは提出者が公表した検証結果だ。修正PR
デプロイ担当者は、修正版が提供されている範囲に注意する必要がある。10月8日リリースのv0.21.6はGitタグ、GitHub release、Dockerイメージとして提供されているが、Desktop、Termux、Microsoft Store向けのビルドは従来のままだ。エンジニアリングチームは、実際にログインサービスを実行しているバックエンドのバージョンを確認し、カスタムクライアントのコールバック形式が新しい制限に適合するかテストすべきだ。アドバイザリーには実際に悪用された証拠は示されていない。今後は各パッケージの提供状況と、ログイン互換性に関する報告を確認する必要がある。リリースノート