觀點 · 資訊分享
Apache CXF 一次修 5 個嚴重漏洞:OAuth 的 IP 綁定檢查寫反了,反而放行外人
Java 服務框架 Apache CXF 一次公開 5 個 9 分以上的漏洞,包含 OAuth2 的 IP 綁定判斷寫反、JWT 沒驗受眾、XXE 與兩個 JNDI 注入。官方建議升級到 4.2.2、4.1.7 或 3.6.12。
- 發布
- 2026-06-13
- 篇幅
- 約 4 分鐘 · 1,715 字
- 結構
- 8 節 + 3 題常見問題
- 標籤

一句話看懂:Java 框架 Apache CXF 一次公開 5 個 9 分以上的嚴重漏洞,其中 OAuth2 的 IP 綁定檢查寫反,會放行不該放行的人。

先用白話講:CXF 的漏洞是什麼意思?
CXF 像是 Java 後端的「櫃台系統」,負責接待各種網路請求、核對憑證。這次出問題的地方,好比櫃台人員把規則看反了:「只有這位客人能進」被執行成「除了這位客人,其他人都能進」。
發生什麼事
Apache CXF 公開了一批安全公告,NVD 與 GitHub 在 2026 年 6 月 12 日收錄;Apache 的公告也出現在 6 月 11 日的 oss-security 郵件列表上。以下是其中 5 個:
| CVE | 問題 | CVSS |
|---|---|---|
| CVE-2026-50628 | OAuth2:IP 綁定檢查寫反 | 9.8 |
| CVE-2026-50627 | OAuth2:JWT 沒驗受眾(aud) | 9.1 |
| CVE-2026-49875 | XXE(XML 外部實體) | 9.8 |
| CVE-2026-50632 | JMS 設定的 JNDI 注入 | 9.8 |
| CVE-2026-50633 | JCA 整合的 JNDI 注入 | 9.8 |
官方公告頁上還列了其他 CXF 漏洞,這篇只整理上面五個。
各個漏洞在說什麼?
- IP 綁定寫反(50628):啟用這個安全功能後,邏輯錯誤讓綁定 IP 的合法請求被拒絕,其他 IP 的請求反而被放行
- JWT 沒驗受眾(50627):發給 A 服務的令牌,可以拿去 B 服務重複使用,官方稱為令牌混淆與路由攻擊
- XXE(49875):解析 XML 時沒做必要的安全設定,可能被用來外部讀取資源
- JNDI 注入(50632、50633):JMS 設定若允許不受信任的人修改,或 JCA 部署描述檔被竄改,就可能執行程式碼;50632 是先前 CVE-2026-44417 修補不完整的後續
該怎麼因應?
- 先確認專案有沒有用到 CXF:看 Maven 或 Gradle 的依賴清單,注意它可能是被別的套件間接帶進來的
- 找出版本後,升級到上表對應的修補版
- 暫時無法升級的話,先確認 JMS、JCA 的設定不能被不受信任的人修改,也不要啟用用不到的 OAuth2 功能
給開發者的技術細節
| 套件 | 修補版 |
|---|---|
| cxf-rt-rs-security-oauth2(50628、50627) | 4.2.2、4.1.7 |
| cxf-core(49875) | 4.2.2、4.1.7、3.6.12 |
| cxf-rt-transports-jms(50632) | 4.2.2、4.1.7、3.6.12 |
| cxf-integration-jca(50633) | 4.2.2、4.1.7 |
- Maven 專案可用依賴樹指令找出實際用到的 CXF 版本
- 如果用的是 3.6 系列,OAuth2 與 JCA 這兩個公告沒有列出 3.6 的修補版,請以官方公告頁為準
我的看法
我自己沒有直接用 CXF,但接案時偶爾會遇到客戶的舊 Java 系統,裡面有沒有 CXF 常常沒人說得清楚。這類框架通常藏在更大的套件裡,是最容易被漏掉的依賴。
這次最值得學的是「IP 綁定寫反」:防護功能啟用了卻產生相反效果,只看設定頁面是發現不了的。自己寫權限相關程式時,一定要寫「該擋的真的被擋」的測試,而不是只測「合法請求能過」。
名詞小辭典
- OAuth2:讓一個服務在不洩漏密碼的情況下,授權另一個服務存取你的資料的通用流程。
- JWT:一種帶有簽章的令牌格式,裡面的 aud 欄位標明這張令牌是發給哪個服務用的。
- XXE:XML 解析器被誘導去讀取外部資源,可能洩漏檔案或發出內部請求。
- JNDI 注入:利用 Java 的名稱查找機制,讓程式載入並執行攻擊者指定的內容。
資料來源
常見問題
Apache CXF 是什麼?
Java 世界常用的網路服務框架,用來建立與呼叫 REST、SOAP 等服務,也包含 OAuth2、JMS 等模組。
CVE-2026-50628 的「寫反」是什麼意思?
OAuth2 有個功能可以把令牌綁在特定 IP。官方說明該檢查的邏輯錯誤,會拒絕從綁定 IP 來的合法請求,卻直接放行其他 IP,等於開啟這個功能反而變成反向的防護。
每個漏洞都要升級嗎?
各漏洞影響的模組不同:OAuth2 的兩個在 cxf-rt-rs-security-oauth2,XXE 在 cxf-core,JNDI 注入分別在 JMS 與 JCA 模組。沒用到那些模組的風險較低,但最簡單的做法還是直接升到修補版。
接著讀
全部觀點 →Tomcat 的 DIGEST 驗證漏洞:不存在的帳號,密碼打「null」就過關(CVE-2026-43512,CVSS 9.8)Apache Tomcat 在設定 DIGEST 驗證時,任何不在帳號庫裡的使用者,只要密碼填 null 就會被判定為驗證成功。影響 9.0、10.1、11.0 三條版本線,官方已釋出修正版。閱讀 →Spring Boot 4.0 預設防護在特定組合下形同虛設:CVE-2026-40976 評分 9.1,升到 4.0.6 就解決Spring Boot 4.0.0 到 4.0.5,如果沒自己寫 Spring Security 設定、又用了 Actuator 卻沒帶 health 模組,預設的網頁防護會失效,所有端點都可能被未登入的人直接存取。專案早在 4 月 23 日就公告並釋出 4.0.6。閱讀 →Cloudflare 為 Brotli 漏洞緊急上架 WAF 規則:預設只記錄不攔截,上線前先檢查你的覆寫設定Brotli 壓縮函式庫爆出 CVE-2026-111497 後,Cloudflare 在 10 月 25 日為 Managed Ruleset 緊急加了兩條規則,預設只記錄、不攔截。如果你曾把整組規則改成封鎖,新規則上線就會直接擋下符合的請求。閱讀 →