返回首頁

GitHub Repo

LangGraph JS 公布憑證隔離缺陷,共用標頭物件可能讓不同客戶端混用 API 金鑰

LangGraph 維護者於 10 月 7 日公布安全公告,指出 JS SDK 會修改呼叫端提供的標頭物件,可能讓不同客戶端混用憑證。公告列出修補版本,但問題須由特定共用物件配置觸發,官方評級為低風險。

GitLab, Inc. · MIT · Image source
zh-Hant

LangGraph JS 維護者於 10 月 7 日發布安全公告 GHSA-432w-3h3v-2pv4:應用程式若把同一個 defaultHeaders 物件交給多個 SDK 客戶端,後建立的客戶端可能覆寫先前客戶端使用的 API 金鑰。公告將風險評為 Low,CVSS 4.0 分數為 2.1,並列出修補版本。安全公告

缺陷來自 JavaScript 物件參照的處理方式。公開套件中的 BaseClient 建構式直接保存 config.defaultHeaders,接著把金鑰寫入其中的 x-api-key。因此,兩個客戶端即使各自設定 apiKey,仍可能指向同一份可變標頭;第二次初始化便改變第一個客戶端後續送出的憑證。這段邏輯可在已發布的 1.5.2 套件原始碼映射中核對。套件程式碼

另一個容易誤判的細節是 apiKey: null。套件程式碼顯示,此設定會跳過環境變數載入,但建構式沒有因此清除共用標頭內既有的金鑰。從程式碼可推得,停用自動載入並不能保證最終請求不帶憑證;還必須檢查標頭物件是否曾被其他客戶端修改。套件程式碼

對代理服務整合而言,標頭與憑證都是實際部署介面的一部分。LangChain 的 Fleet 文件示範以 Client 同時設定 apiUrl、apiKey 與 defaultHeaders,並透過 runs.wait 呼叫代理。工程團隊若將這類設定抽成共用模板,應特別檢查是否重用了物件參照;這是依介面與缺陷機制提出的檢查方向,並非文件範例本身存在漏洞。官方整合文件

公告建議升級 SDK 至 1.12.3 或之後版本,並將 @langchain/langgraph 升至 1.4.21 或之後版本;修補會在初始化時複製標頭。部署驗證應確認共用輸入物件未被修改,以及不同客戶端仍送出各自的金鑰。維護者也明確指出,外部攻擊者無法在缺少上述配置時直接觸發問題,LangGraph Platform 不受此缺陷影響。修補與影響範圍

來源

  1. SDK defaultHeaders mutation can leak API keys across Client instances
  2. @langchain/langgraph-sdk 1.5.2 published source map
  3. Use Fleet agents in code