Avo 管理框架授權繞過:低權限用戶可任意操控資料關聯
GitHub Security Advisories · 2026-06-17
Ruby 管理介面框架 Avo 的關聯附加端點存在授權缺失漏洞,編號 CVE-2026-55518(GHSA-8fq9-273g-6mrg),於 2026 年 6 月 17 日公開披露。漏洞允許已通過身份驗證的低權限用戶,繞過原本應阻擋其操作的授權策略,直接向後端寫入端點發送請求,建立任意資料關聯。CVSS 評分達 9.6,屬於「重大」(Critical)等級,影響 Avo 3.32.0 及以下穩定版本與部分 4.x beta 版本。
漏洞機制
Avo 的 AssociationsController 負責管理物件之間的關聯關係。問題根源在於授權守衛僅掛載於表單渲染動作,而非實際寫入動作。具體而言,before_action :authorize_attach_action 只宣告在 only: :new,代表系統在顯示「新增關聯」表單時會呼叫 attach_<association>? 政策檢查,一旦政策回傳 false,用戶便看不到表單介面。
然而,實際執行關聯寫入的 create 動作完全沒有相對應的授權檢查。攻擊者只要以低權限帳號登入後,手動構造一個 POST 請求直送 /resources/:resource_name/:id/:related_name,並在請求主體帶入 fields[related_id],即可跳過所有 UI 層的攔截,直接完成關聯寫入。公告附帶的概念驗證(PoC)腳本以 Python 示範了完整攻擊流程:先確認 GET /new 被阻擋,再直接 POST 到 create 端點,並驗證資料庫中新增了本不應存在的關聯記錄。
這種模式在 Rails 生態系統中屬於常見的「表單保護、端點暴露」反模式——前端渲染路徑有守衛,但對應的資料變更路徑卻沒有。可能的危害場景包含:將普通用戶附加到具備管理員身份的群組、跨越多租戶邊界操控成員關係、修改帶有存取控制語意的所有權欄位,以及規避任何設計在 attach_*? 政策中的商業邏輯限制。
受影響版本
- Avo ≤ 3.32.0(穩定版系列)
- Avo ≥ 4.0.0.beta.1,且 < 4.0.0.beta.51(beta 系列)
修補與緩解
官方已在以下版本中修補此漏洞,修補方式為將 authorize_attach_action 的 before_action 同時覆蓋到 create 動作,確保策略檢查在實際關聯寫入前強制執行:
- Avo 3.32.1
- Avo 4.0.0.beta.51
建議所有使用 Avo 管理介面的 Rails 專案立即升級至修補版本。若短期內無法升級,可考慮暫時透過 Rack middleware 或 Rails routes constraint 封鎖對 POST /resources/*/*/ 系列路徑的存取,並強制要求此類請求通過額外的應用層授權驗證。升級後亦應補充回歸測試,確認在政策拒絕 attach 的情況下,直接 POST 請求確實會返回 403 而非靜默成功。
HAPI FHIR 工具庫 XXE 漏洞:未受保護的 Saxon XSLT 工廠導致任意檔案讀取與 SSRF
GitHub Security Advisories · 2026-06-17
Java 醫療資訊交換框架 HAPI FHIR 的核心工具庫 ca.uhn.hapi.fhir:org.hl7.fhir.utilities 被發現存在 XML 外部實體注入(XXE)漏洞,編號 CVE-2026-55471(GHSA-2f55-g35j-5jmf),於 2026 年 6 月 17 日公開披露。攻擊者若能控制傳入的 XML 內容,即可透過此漏洞讀取伺服器上的任意檔案,或發動伺服器端請求偽造(SSRF)攻擊。CVSS 4.0 評分為 9.2,屬於「重大」等級,漏洞由研究員 tonghuaroot 發現並回報。
漏洞機制
XsltUtilities 類別中同時存在兩組 XSLT 轉換方法:transform() 系列與 saxonTransform() 系列。前者在建立 TransformerFactory 時已呼叫了內部的 newXXEProtectedTransformerFactory() 輔助方法,會設定 ACCESS_EXTERNAL_DTD="" 與 ACCESS_EXTERNAL_STYLESHEET="" 兩個屬性,阻斷外部資源的載入。然而 saxonTransform() 的三個過載方法(位於 XsltUtilities.java 第 61、91、106 行)卻直接以裸 new net.sf.saxon.TransformerFactoryImpl() 建立工廠,完全沒有套用任何外部存取限制。
這個不一致性導致只要應用程式呼叫的是 saxonTransform(),攻擊者便能在 XML 文件內嵌入外部實體宣告,讓 Saxon 解析器在執行 XSLT 轉換時自動解析並將檔案內容注入輸出結果。研究人員提供的概念驗證同時演示了本地檔案洩漏(File Disclosure)與帶外 SSRF 回呼兩種攻擊手法,兩者可在單一次轉換呼叫中同步觸發。
HAPI FHIR 廣泛用於 IG Publisher(FHIR 實作指引發布工具)、FHIR Validator 以及各類轉換工具。這些工具的輸入來源通常包含外部上傳的套件、網路下載的樣式表或可能遭受中間人攻擊的網路請求,使得此漏洞的攻擊面相當廣泛。由於 FHIR 工具鏈常部署於醫療機構的內部網路,SSRF 的危害尤為值得重視——攻擊者可借此探測或存取醫院內網中不應對外暴露的服務。
受影響版本
ca.uhn.hapi.fhir:org.hl7.fhir.utilities≤ 6.9.9
修補與緩解
官方在 6.9.10 版中修復了此漏洞,修補方式為新增一個對應 Saxon 的受保護工廠輔助方法,並將 saxonTransform() 的三個過載全部改用此受保護工廠,確保外部實體存取受到管控。
- Maven 座標:
ca.uhn.hapi.fhir:org.hl7.fhir.utilities:6.9.10
建議所有引用此套件的 Java 專案立即升級至 6.9.10 或更新版本,包含直接依賴與透過 HAPI FHIR 間接依賴的場景。若短期內無法升級,應確認應用程式的 XML 輸入來源是否可信:對於處理外部或用戶提交 XML 的使用場景,應在應用層前置一道輸入驗證步驟,拒絕含有 DOCTYPE 宣告的文件,以降低被利用的風險。
Deno WebSocket 握手解析缺陷:非 ASCII 標頭位元組觸發程序崩潰
GitHub Security Advisories · 2026-06-17
JavaScript 與 TypeScript 執行環境 Deno 在 WebSocket 用戶端握手處理流程中存在拒絕服務(DoS)漏洞,編號 CVE-2026-55517(GHSA-x2qc-cmh9-f4hf),於 2026 年 6 月 17 日公開披露。攻擊者只要控制 WebSocket 伺服器端點,便能透過在握手回應標頭中注入非 ASCII 位元組,導致整個 Deno 程序立即崩潰。CVSS 評分為 4.3(中等),影響 Deno ≤ 2.7.4,由研究員 snoopysecurity 回報。
漏洞機制
在 WebSocket 協定握手階段,伺服器回應中的 Sec-WebSocket-Protocol 與 Sec-WebSocket-Extensions 標頭需要被用戶端解析與處理。Deno 的實作在讀取這兩個標頭值時,使用了底層的 HeaderValue::to_str() 方法,但未對呼叫失敗的情況進行任何錯誤處理。
HeaderValue::to_str() 要求標頭值只能包含可見 ASCII 字元(0x20–0x7E),一旦遇到超出此範圍的位元組(0x80–0xFF),該方法會回傳錯誤。然而 Deno 的相關程式碼對此錯誤採用了直接取值操作(unwrap 或等效),導致 Rust 執行緒發生 panic。由於 Deno 未在此路徑設置 panic 捕獲邊界,單一執行緒的 panic 會直接終止整個程序,而非優雅地關閉該 WebSocket 連線。
此漏洞需要攻擊者能控制 WebSocket 伺服器,或能對明文 ws:// 連線執行中間人攻擊以竄改回應標頭。攻擊不會造成資料洩漏或記憶體安全問題,危害僅限於程序可用性(Availability)。攻擊成立的前提是受害應用程式必須主動發起 WebSocket 連線,且伺服器端(或中間人)能夠在握手回應標頭中注入非 ASCII 位元組。
受影響版本
- Deno ≤ 2.7.4
修補與緩解
Deno 2.7.5 修正了此問題,修補方式為在解析這兩個標頭時加入優雅的失敗處理邏輯:當標頭值包含非 ASCII 位元組時,直接跳過該標頭而非觸發 panic,同時在修補版本中補充了對應的回歸測試。
- 升級至 Deno 2.7.5 或更新版本
若無法立即升級,有兩項緩解措施可降低風險:一是確保應用程式僅連接至可信任的 WebSocket 伺服器端點;二是優先使用加密的 wss:// 連線取代明文 ws://,以防止中間人攻擊在握手期間注入惡意標頭。對於需要連接外部或不完全受信任伺服器的 Deno 應用,升級至 2.7.5 是目前唯一能完全消除此風險的手段。