返回首頁

GitHub Repo

Hermes Agent 修補原生登入重新導向漏洞,URL 解析差異可能導致工作階段遭接管

Tenable 於 10 月 9 日公開 Hermes Agent 原生登入漏洞:伺服器與瀏覽器對回呼網址的解析差異,可能讓授權碼流向攻擊者。修補已納入 v0.21.6,但 Desktop、Termux 與 Microsoft Store 套件未隨此版本同步更新。

Gerald L. Nino · Public domain · Image source
zh-Hant

Tenable 於 10 月 9 日公開安全公告,指出 Hermes Agent 的原生應用程式登入流程存在重新導向驗證漏洞,受影響產品列為低於 0.21.6 的版本。攻擊者可利用網址解析差異,在使用者完成登入後取得授權碼,再換取帳號權杖;公告將風險評為 High,並建議升級至 0.21.6 或更新版本。Tenable 公告

問題出在公開端點 GET /auth/native/authorize:伺服器使用 Python 的 urllib.parse.urlparse 檢查 redirect_uri,確認主機看似為回送位址後,卻保存未正規化的原始字串。瀏覽器採用的 WHATWG URL 解析規則對反斜線有不同處理,因此兩端可能認定不同的目的地主機。攻擊者又能自行指定 PKCE challenge,取得外洩授權碼後便可完成兌換。這表示 PKCE 的保護仍依賴回呼網址驗證正確,不能單靠啟用協定便確保登入安全。漏洞分析

上游修補改為拒絕反斜線、使用者資訊欄位、非 ASCII 字元、控制字元與片段識別符,並要求網址 authority 符合標準形式的 127.0.0.1[:port] 或 [::1][:port]。登入流程也改存正規化後的 URI。修補提案記錄了 72 項測試通過,並以邊界案例驗證拒絕惡意輸入,以及合法回呼從授權到權杖兌換的完整流程;這些是提交者公布的驗證結果。修補 PR

部署端須留意版本交付範圍。10 月 8 日發布的 v0.21.6 提供 Git 標籤、GitHub release 與 Docker 映像,Desktop、Termux 和 Microsoft Store 仍維持原有建置。工程團隊應核對實際執行登入服務的後端版本,並測試自訂客戶端的回呼格式是否符合新限制。公告未提供實際遭利用的證據;後續應追蹤各套件的交付狀態與登入相容性回報。版本說明

來源

  1. Hermes Agent — PKCE Session Takeover via Redirect-URI Parser Confusion
  2. Hermes Agent v0.21.6
  3. Dashboard native sign-in only sends login codes back to a real loopback callback — PR #130685