資安雷達 2026 年 6 月 20 日

2026-06-20 — Apache APISIX 驗證繞過、SurrealDB JWKS SSRF、LangSmith 任意檔案讀取

primary=https://www.openwall.com/lists/oss-security/2026/06/19/12 primary=https://www.cve.org/CVERecord?id=CVE-2026-49230 primary=https://github.com/advisories/GHSA-h5rg-8p7f-47g2 primary=https://github.com/surrealdb/surrealdb/security/advisories/GHSA-h5rg-8p7f-47g2 primary=https://github.com/advisories/GHSA-f4xh-w4cj-qxq8 primary=https://github.com/langchain-ai/langsmith-sdk/security/advisories/GHSA-f4xh-w4cj-qxq8

Apache APISIX jwe-decrypt 外掛完整性校驗缺陷導致身份驗證繞過(CVE-2026-49230)

Openwall OSS Security · 2026-06-19

2026 年 6 月 19 日,Apache APISIX 安全團隊透過 oss-security 郵件清單披露漏洞 CVE-2026-49230,涉及 jwe-decrypt 外掛在預設組態下的完整性校驗邏輯缺陷。受影響版本橫跨 Apache APISIX 3.8.03.16.0,攻擊者可在不持有合法金鑰的情況下繞過驗證,使未授權請求被轉發至後端服務。官方修復版本為 3.17.0,已於同日釋出。

jwe-decrypt 外掛的工作原理

jwe-decrypt 外掛負責在請求進入 APISIX Route 或 Service 之前,對請求頭中的 JWE(JSON Web Encryption,RFC 7516)令牌進行解密與驗證。JWE 令牌採用五段結構:Base64url 編碼的標頭、加密金鑰(對稱加密時留空)、初始向量(IV)、密文,以及認證標籤(Authentication Tag)。標頭中的 kid(Key ID)欄位指定使用哪個 Consumer 的 32 字元 AES-256-GCM 對稱共享金鑰進行解密。

AES-256-GCM 是同時提供加密與驗證的 AEAD(Authenticated Encryption with Associated Data)模式,其安全性同等依賴加密機密性與 Authentication Tag 的完整性驗證。若認證標籤的校驗邏輯可被規避,攻擊者即使不知道正確的共享金鑰,也能讓外掛接受偽造的 JWE 令牌並視之為合法身份。外掛的 strict 參數(預設啟用)僅能拒絕缺少令牌的請求,無法阻擋結構完整但內容偽造的令牌。

漏洞機制

根據 oss-security 披露,此漏洞被歸類為「Improper Validation of Integrity Check Value」,存在於外掛的預設組態下。核心缺陷在於 AES-256-GCM 認證標籤的比對邏輯實作有誤,導致攻擊者可構造特製的惡意 JWE 令牌通過校驗。具體而言,當攻擊者送出一個標頭格式正確(包含合法 Consumer 的 kid)但密文或認證標籤被篡改的 JWE 時,外掛在不完整的完整性驗證下依然接受該令牌,最終將請求轉發至後端,並附帶被解密(或錯誤解密)的 payload 內容。

此攻擊路徑無需攻擊者掌握任何 Consumer 的共享金鑰,僅需知道任意一個合法 Consumer 的 kid(此值通常記錄在路由組態或開發文件中)即可構造繞過。漏洞由資安研究員 lokerxxx 發現並依負責任披露流程向 Apache 安全團隊回報。

受影響版本

  • Apache APISIX 3.8.0(含)至 3.16.0(含)
  • 所有在上述版本範圍內啟用 jwe-decrypt 外掛的部署均受影響
  • Apache APISIX 3.17.0 已修復,不受影響

修補與緩解

官方修補措施為升級至 Apache APISIX 3.17.0,該版本修正了 jwe-decrypt 外掛的完整性校驗邏輯,確保 AES-256-GCM 認證標籤的驗證正確執行且無法被規避。

對於無法立即升級的部署,可考慮下列緩解措施:

  • 暫時停用 jwe-decrypt 外掛,改採 jwt-auth 或 key-auth 等其他驗證外掛
  • 在 APISIX 前端部署額外的網路層存取控制,限制外部請求直接觸達受外掛保護的路由
  • 啟用請求日誌並監控異常的身份驗證模式,以偵測潛在的繞過嘗試
  • 將 jwe-decrypt 保護的路由限制為僅接受來自可信 IP 範圍的請求

鑑於身份驗證繞過漏洞可在無憑證的情況下完全失效保護機制,任何在生產環境中使用 jwe-decrypt 外掛的 APISIX 部署應將本次修補列為緊急項目,優先排入升級計畫。

原始來源:Openwall OSS Security — CVE-2026-49230CVE Record


SurrealDB JWKS 獲取器跟隨重新導向繞過網路能力控制形成 SSRF(GHSA-h5rg-8p7f-47g2)

GitHub Security Advisories · 2026-06-19

2026 年 6 月 19 日,SurrealDB 發布安全公告 GHSA-h5rg-8p7f-47g2,揭露 JWT 存取方法的 JWKS 金鑰獲取邏輯存在伺服端請求偽造(SSRF)漏洞。受影響版本為 SurrealDB 3.1.5 以前的所有版本,問題根源在於 core/src/iam/jwks.rs 中使用的裸 reqwest 客戶端會自動跟隨 HTTP 重新導向,而不對重新導向目標重新執行網路能力校驗。CVSS v3.1 評分為 4.1(Moderate),向量字串為 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N

漏洞機制

當使用者透過 DEFINE ACCESS ... TYPE JWT URLTYPE RECORD ... WITH JWT URL 語法設定 JWT 存取方法時,SurrealDB 需從指定的 URL 獲取 JWKS(JSON Web Key Set)文件以驗證 JWT 簽名。JWKS 獲取器使用的裸 reqwest 客戶端預設自動跟隨 HTTP 3xx 重新導向,而 SurrealDB 的網路能力控制機制(--allow-net / --deny-net)僅在初始請求發出前對原始 URL 執行一次校驗。一旦伺服器回傳 3xx 回應,reqwest 自動跟隨至新目標,不再觸發能力校驗。

擁有 Owner 角色(資料庫層級或以上)的攻擊者,可將 JWKS 端點設於合法允許清單中的主機,再讓該主機回傳重新導向至受 --deny-net 封鎖的內部目標,例如 AWS EC2 後設資料端點(169.254.169.254)、回環地址(loopback)或內部網路服務,從而探測網路拓樸。值得注意的對比是:SurrealDB 用於 HTTP 函式的 HttpClient3.1.0 版本中已針對同類問題加固,每次重新導向都會重新執行能力校驗,但 JWKS 獲取器未獲得相同保護,形成安全不一致性。

此漏洞的實際影響受到多重技術限制:JWKS 獲取為盲探操作——伺服器僅嘗試解析回應為 JWKS 格式,非 JWKS 回應只會得到不透明的 InvalidAuth 錯誤,攻擊者無法讀取回應內容。請求逾時強制限制為 1 秒,攻擊者只能透過計時側通道(timing side-channel)推斷目標主機是否存在,無法讀取任何資料、修改狀態或影響可用性。

受影響版本

  • SurrealDB 3.1.5 以前的所有版本均受影響
  • SurrealDB 3.1.5(含)以上已修復
  • 攻擊需要資料庫層級或以上的 Owner 角色,屬高權限(PR:H)場景

修補與緩解

官方修補措施3.1.5 版本中為 JWKS 獲取器實作了重新導向策略(redirect policy),對每個重新導向目標重新執行網路能力校驗,並強制套用 max_http_redirects 上限,與 3.1.0 版本中加固的 HttpClient 行為對齊。

對於無法立即升級的部署,可採取以下緩解措施:

  • 將 Owner 角色的授予嚴格限制在高度信任的操作人員
  • 在網路層部署出口過濾,封鎖 SurrealDB 進程對 RFC 1918 私有地址及 169.254.0.0/16 鏈路本地地址的存取
  • 確保 JWKS 端點使用不會產生重新導向的可信主機,或改用本地金鑰定義(local key definition)代替遠端 JWKS URL

原始來源:GitHub Advisory GHSA-h5rg-8p7f-47g2SurrealDB 官方安全公告


LangSmith SDK TracingMiddleware 標頭注入與型別混淆組合導致任意伺服端檔案讀取(GHSA-f4xh-w4cj-qxq8)

GitHub Security Advisories · 2026-06-19

2026 年 6 月 19 日,LangChain 安全團隊披露 LangSmith SDK 的 TracingMiddleware 元件存在任意伺服端檔案讀取漏洞,公告編號為 GHSA-f4xh-w4cj-qxq8受影響版本為 langsmith Python SDK 0.8.18 以前的所有版本,漏洞由追蹤傳播標頭注入與型別檢查守衛失效兩個缺陷組合觸發,CVSS v3.1 評分為 7.7(High),向量字串為 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N,已於 0.8.18 修復。

漏洞機制

此漏洞由兩個獨立缺陷疊加觸發,缺一不可。第一個缺陷為追蹤傳播標頭注入(CWE-346,Origin Validation Error):TracingMiddleware 處理請求時,會讀取特定的追蹤傳播標頭(tracing-propagation header)並將其中的欄位合併至執行記錄(run object)中,而合併過程缺乏必要的輸入驗證。攻擊者可透過惡意標頭注入附件(attachments)相關的 run 屬性,包含指向伺服器本地任意路徑的參數值。

第二個缺陷為型別混淆(CWE-843,Type Confusion):程式碼中設有一道型別檢查守衛(type check guard),其設計意圖是阻止非預期的檔案系統存取。然而此守衛對「解碼後輸入」的型別判斷存在錯誤——標頭解碼後的資料型別與守衛所預期比對的型別不符,導致安全檢查從未被觸發(guard never engaged)。兩個缺陷組合後,後台追蹤執行緒(background tracing thread)依攻擊者指定的路徑開啟伺服器上的本地檔案,並將其內容作為追蹤附件(trace attachment)上傳至 LangSmith 服務,完成資料竊取。

整個攻擊流程不需要使用者互動(UI:N),且影響範圍越界(S:C,Scope Changed)——攻擊者藉由 TracingMiddleware 存取超出元件本身權限邊界的伺服器檔案系統資源。可讀取的檔案範圍取決於執行 LangSmith SDK 服務的作業系統進程權限,若服務以高權限或 root 執行,攻擊面顯著擴大,理論上可存取 /etc/passwd、私鑰、環境變數檔案等敏感資料。

利用條件的限制

成功完整利用此漏洞需滿足特定前提:攻擊者必須能向啟用 TracingMiddleware 的 HTTP 端點發送請求(網路可達,AV:N),並需具備工作區追蹤讀取(workspace trace-read)權限,才能從 LangSmith 服務取回已上傳的附件內容。若攻擊者僅能發送惡意請求,卻無法讀取工作區的追蹤記錄,則竊取的檔案內容無法被取得,降低了純外部攻擊者在黑盒環境下的完整利用難度。

然而對於具備工作區追蹤讀取權限的惡意內部人員,或通過帳號入侵取得對應存取權限的攻擊者,此漏洞危害仍然顯著。CVSS 要求的權限等級為低(PR:L,意味任何具有基本工作區存取的成員理論上均有觸發條件,無需管理員權限。

受影響版本

  • langsmith Python SDK 0.8.18 以前的所有版本均受影響
  • langsmith 0.8.18(含)以上已修復
  • CWE 分類:CWE-22(路徑遍歷)、CWE-346(來源驗證錯誤)、CWE-843(型別混淆)

修補與緩解

官方建議立即升級至 langsmith 0.8.18。此版本修正了追蹤傳播標頭的輸入驗證邏輯,確保外部提供的欄位無法注入附件屬性;同時修復了型別檢查守衛的型別比對邏輯,使其能正確攔截解碼輸入中的非預期型別,令守衛在所有預期路徑下均正確生效。

對於無法立即升級的部署,可採取以下緩解措施:

  • 限制 TracingMiddleware 僅接受來自可信內部服務的 HTTP 請求,不應暴露於未認證的外部網路
  • 在應用層或反向代理層過濾並移除追蹤傳播相關的 HTTP 標頭(如 traceparenttracestate 及各框架的自訂傳播標頭)
  • 以最小權限原則執行 LangSmith SDK 服務,嚴格限制進程可讀取的檔案系統路徑(例如透過 systemd 的 ReadOnlyPaths= 或容器檔案系統隔離)
  • 審計工作區的追蹤讀取權限,撤銷非必要的存取授權以降低竊取資料被取得的風險

原始來源:GitHub Advisory GHSA-f4xh-w4cj-qxq8LangSmith SDK 官方安全公告


End of article
0
Would love your thoughts, please comment.x
()
x