實證研究 發布於 AIA: 2026年8月5日

LangSmith 追蹤標頭注入攻擊:可觀測性 metadata 被劫持為資料外洩路徑

這個 LangSmith SDK 漏洞的識別編號是 CVE-2026-25528。這條攻擊路徑成立並可能被觸發的前提,是應用程式把外部 HTTP request header (標頭) 交給 LangSmith 的追蹤流程處理;攻擊者可以在其中的 baggage 標頭放入自己控制的伺服器網址。當 AI 工作流程執行完畢時,SDK 便可能把追蹤資料(包括模型輸入、輸出與應用程式中繼資料)送到該網址,讓原本的可觀測性功能變成資料外洩路徑。

Data ExfiltrationInput ValidationSink EnforcementAI InfrastructureSaaS Security
4 項對應的 AIDEFEND 防禦手法
來源: Server-Side Request Forgery via Tracing Header Injection 
作者: Angus Jelinek
原文發布: 2026年2月9日

威脅分析

  • 這個 LangSmith SDK 漏洞的識別編號是 CVE-2026-25528。 這條攻擊路徑成立並可能被觸發的前提,是應用程式把外部 HTTP request header (標頭) 交給 LangSmith 的追蹤流程處理。應用程式使用 TracingMiddleware 接受公開請求標頭,或把它交給 RunTree.from_headers()RunTree.fromHeaders() 時,才會出現這條路徑。只有使用 LangSmith 並不足以構成攻擊。
  • baggage 標頭中的 api_url 會決定追蹤資料送往哪台伺服器。 攻擊者可以在標頭中加入一組名為 replica 的設定,並把其中的 api_url 設成自己控制的伺服器網址。脆弱版本會把這個網址存成追蹤設定;當 AI 工作流程執行完畢時,post()patch() 便可能把執行資料送到該網址。攻擊者也可以把 api_url 設成內部網址,藉此進行伺服器端請求偽造(SSRF,指讓應用程式伺服器代替攻擊者連線到原本無法從外部存取的內部服務)。
  • LangSmith Python SDK 0.6.3 與 npm 套件 0.4.6 已修正此問題。 受影響的 Python SDK 版本是 0.4.10 到 0.6.2;npm 套件版本是 0.3.41 到 0.4.5。請將 Python SDK 更新到 0.6.3 或更新版本,npm 套件更新到 0.4.6 或更新版本。修正版只保留允許清單中的安全 replica 欄位,並移除可由呼叫端控制的目的位址與憑證欄位。
  • 目前沒有公開證據顯示,這個漏洞已被用於實際竊取 secrets。 若追蹤資料中包含 secrets,仍可能隨資料一併外洩。

適用的 4 項 AIDEFEND 防禦手法

AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
極高
盤點每個服務實際載入的 Python 與 npm LangSmith SDK 版本,使用目前支援版本重建、分階段部署,再從執行環境或容器映像檔驗證結果,確認有漏洞的套件已不再使用。這會移除 SDK 接受呼叫端自訂追蹤副本目的位址的行為。
AID-H-032.003
Inference Telemetry & Debug Surface Restriction
任何追蹤資料離開模型推論服務前,先移除或遮蔽提示詞、輸出、擷取內容、工具參數、機密憑證與非必要的 metadata (中繼資料,指描述資料屬性與執行脈絡的附加資訊);資料匯出前,若系統無法確認必要的防護規則已生效,就應阻擋資料對外傳送。這能限制遭注入或設定錯誤的連線目標所能取得的內容,但無法阻止連線目標本身被篡改或選錯。
AID-I-002.002
Secure External AI Service Connectivity
在執行追蹤的服務上,對外連線預設全部阻擋,只允許通過已驗證 DNS 與 SNI 規則 (Server Name Indication,指在 TLS 加密連線建立時檢查目標網域的安全機制)、且指向核准 LangSmith 端點的連線。如此一來,即使攻擊者注入追蹤副本網址或內部中繼資料位址,連線也會在獨立於 SDK 解析器 (指 SDK 內處理標頭與設定檔的程式邏輯) 之外的網路邊界直接遭到阻擋。
AID-H-002.002
Inference-Time Prompt & Input Validation
在請求入口處,使用嚴格的 schema (結構定義) 與安全欄位允許清單來解析 baggage,阻擋未預期的追蹤副本欄位,並在建立追蹤脈絡 (tracing context) 前,徹底移除由呼叫端傳入的 api_urlapi_key 或同等控制權限。這項控制屬於結構化標頭驗證,並非提示詞注入過濾。

身為資安防禦者,我們應該這麼做

  • 把所有 Python 與 TypeScript LangSmith SDK 升級到目前支援版本,並確認每個已部署容器映像檔或程序實際載入的版本。
  • 找出所有 TracingMiddlewareRunTree.from_headers()RunTree.fromHeaders() 的使用位置。在這些呼叫前移除外部 baggage 欄位,或不要把公開請求標頭帶進追蹤脈絡。
  • 只允許追蹤資料匯出程序連線至核准的 LangSmith 端點,並阻擋追蹤工作負載存取雲端 metadata (如 IMDS 機敏中繼資料)、私有管理網段與任意網際網路位址。
  • 盤點哪些提示詞、回應、擷取文件、工具參數、使用者識別資料與機密值會進入執行資料,在匯出前移除或遮蔽,並測試無法套用防護規則時是否會阻擋資料對外傳送。
  • 清查歷史對外連線紀錄 (egress logs) 與追蹤設定,排查是否有陌生的追蹤副本連線目標。僅在有明確證據顯示特定憑證曾出現在遭改送的追蹤資料中時,才需要進行該憑證的輪替 (Rotate)。

結論

這個漏洞觸及了可觀測性 (observability) 程式碼常忽略的兩道信任邊界:一是外部傳入的請求脈絡 (request context) 竟能直接控制資料傳送路由;二是包含高機敏資訊的 AI 執行資料,卻被當作一般遙測資料 (telemetry) 逕自傳出服務。團隊可參考 AIDEFEND  對應的防禦手法,分別部署修正版 SDK、移除外部標頭的路由權限、在匯出前縮減追蹤內容,以及從程序外部強制執行目的位址政策。追蹤 metadata (中繼資料) 的用途應僅限於記錄請求過程,絕不該被賦予改變網路連線路由的權利。