Apache Tomcat 三重漏洞:JNDIRealm 驗證繞過、安全限制繞過與 EncryptInterceptor Replay 攻擊
oss-security (openwall.org) · 2026-06-29
Apache Tomcat 於 2026 年 6 月 29 日同步披露三枚高嚴重性漏洞,分別為 CVE-2026-55957(JNDIRealm GSSAPI 驗證繞過)、CVE-2026-55956(Default Servlet 安全限制繞過)及 CVE-2026-55955(EncryptInterceptor 重放攻擊)。三項漏洞均獨立存在,影響多個仍受支援的 Tomcat 主版本,需分別套用修補程式。
漏洞機制
CVE-2026-55957 涉及 JNDIRealm 在 GSSAPI(Kerberos)驗證流程中的身分校驗缺陷。當 Realm 設定為使用 GSSAPI 機制時,Tomcat 在處理服務票券(Service Ticket)驗證回應後未能正確確認主體名稱(Principal Name)的綁定關係。攻擊者可透過提交格式特殊的 Kerberos 票券,在不知曉有效憑證的情況下獲得任意使用者身分。此類繞過屬於 CWE-287(不當驗證)範疇,對部署 Kerberos SSO 的企業環境威脅尤為直接。
CVE-2026-55956 的根因在於 Default Servlet 對特定 HTTP 方法的安全限制評估邏輯存在條件漏洞。當 web.xml 中定義的 <security-constraint> 元素未明確列舉所有 HTTP 方法(如僅限制 GET/POST 而未涵蓋 OPTIONS、TRACE 等),Tomcat 的 Default Servlet 在特定條件下會跳過約束判斷並直接提供受保護資源。攻擊者可利用此缺陷透過非預期方法存取本應需要驗證才能取得的靜態資源或目錄列表。此漏洞屬 CWE-284(不當存取控制),即使應用程式部署時依照官方文件配置安全限制,仍可能因方法枚舉不完整而暴露風險。
CVE-2026-55955 屬於加密通道層的重放保護缺失問題,影響 Tomcat 叢集的 Session 複寫通訊。EncryptInterceptor 負責對節點間訊息進行 AES 加密,然而其實作未引入 nonce、時間戳記或序列號等反重放機制。攻擊者若能在同一網段擷取叢集通訊封包,即可在不解密內容的前提下重放先前合法的 Session 同步訊息,造成 Session 狀態污染或節點間資料不一致。
受影響版本
- Apache Tomcat 11.0.0-M1 – 11.0.x(
CVE-2026-55957、CVE-2026-55956、CVE-2026-55955) - Apache Tomcat 10.1.0-M1 – 10.1.x(
CVE-2026-55957、CVE-2026-55956、CVE-2026-55955) - Apache Tomcat 9.0.0.M1 – 9.0.x(
CVE-2026-55956、CVE-2026-55955) - Apache Tomcat 8.5.x(
CVE-2026-55955,已進入 limited support)
修補與緩解
Apache 已於各受影響分支發布修正版本,應優先直接升級至最新穩定版。若短期內無法升級,針對 CVE-2026-55957 可暫時停用 JNDIRealm 的 GSSAPI 機制,改用 LDAP Simple Bind 並搭配 TLS 傳輸加密;針對 CVE-2026-55956 應在 web.xml 的每個 <security-constraint> 區塊中以 <http-method-omission> 或全方法枚舉補全覆蓋範圍;針對 CVE-2026-55955 應在叢集網路層面實施隔離(專用 VLAN 或 IPsec),確保 EncryptInterceptor 通訊無法被非信任主機擷取。
原始來源:oss-security CVE-2026-55955、oss-security CVE-2026-55956、oss-security CVE-2026-55957
OpenAM 認證後 RCE:Groovy Sandbox 逃逸允許 OS 指令執行(CVE-2026-47424)
GitHub Advisory Database (GHSA-69j4-qvqr-hpw3) · 2026-06-27
CVE-2026-47424 於 2026 年 6 月 27 日揭露,影響 OpenAM Community Edition(Maven 套件 org.openidentityplatform.openam:openam-scripting)16.0.6 及以前版本。具備腳本建立或編輯權限的認證使用者——例如 Realm 管理員——可利用 Groovy 沙箱逃逸以 OpenAM 應用程式伺服器的服務帳號身分執行任意作業系統指令,突破 Realm 作用域的管理邊界,危及整個 JVM 及其所管理的所有 Realm。
漏洞機制
問題根源為 Groovy 腳本引擎的預設類別允許清單(allowlist)與拒絕清單(denylist)設定不足,屬於 CWE-693(保護機制失敗)。OpenAM 的伺服器端腳本功能允許 Realm 管理員透過 Groovy DSL 撰寫驗證或授權邏輯,並以沙箱模式執行以限制危險操作。然而沙箱未能有效攔截透過反射或特定標準函式庫類別間接呼叫系統命令的路徑,導致攻擊者得以在看似合法的腳本中繞過隔離邊界並呼叫 Runtime.exec() 或 ProcessBuilder 等 API。
成功逃逸後,攻擊者可獲得與 OpenAM 伺服器程序相同的 OS 執行權限,包括讀取金鑰庫(keystore)、身分資料庫連線字串及所有 Realm 的 Session Token。由於 CVSS v4 將機密性、完整性與可用性影響均評為 High(基礎分數 7.5),在多租戶 IdP 部署場景中,單一 Realm 管理員帳號遭入侵即可橫向擴大至整個身分識別基礎架構。此漏洞需要網路存取能力與高權限帳號,但在允許外部管理員登入的雲端託管部署中,攻擊前提條件相對容易滿足。
受影響版本
- OpenAM Community Edition ≤ 16.0.6(
org.openidentityplatform.openam:openam-scripting)
修補與緩解
官方修補版本為 16.1.1,應立即升級。若無法即時升級,可透過 OpenAM 管理介面停用伺服器端 Groovy 腳本功能,或將腳本建立與編輯權限從 Realm 管理員角色中移除,嚴格限制為最高信任層級的操作員才能存取。同時應審查現有腳本內容,確認是否已有可疑的系統呼叫跡象,並檢閱應用程式伺服器日誌中異常的子程序啟動紀錄。
Chrome V8 雙邊界漏洞:FrameStateFunctionInfo 簽章比較缺失達成 Sandbox 逃逸與 Renderer RCE(CVE-2026-6307)
Nebusec Research · 2026-06-29
CVE-2026-6307 於 2026 年 3 月 29 日回報,3 月 31 日完成修補,詳細技術分析於 6 月 29 日公開。漏洞根源在於 V8 JIT 編譯器的 FrameStateFunctionInfo 等號運算子未比對 Wasm 函式簽章,導致不同回傳型別的 JS-to-Wasm 續接幀狀態在公共子表達式消除(CSE)階段被錯誤合併。此單一漏洞可獨立達成任意記憶體讀寫、V8 Heap Sandbox 逃逸及 Renderer 程序任意程式碼執行,無需搭配其他漏洞,影響 Chrome 106 至 147.0.7727.100。
漏洞機制
核心問題在於 FrameStateFunctionInfo 的等號運算子僅比較基底類別欄位,未涵蓋衍生類別 JSToWasmFrameStateFunctionInfo 中的 Wasm 簽章欄位。攻擊者可構造兩個回傳型別分別為 () -> externref 與 () -> i64 的 JS-to-Wasm 幀狀態;由於基底類別欄位完全相同,CSE 將這兩個幀狀態視為等價並合併,最終在反優化(deoptimization)時以 externref 的語意物化(materialize)一個攻擊者控制的 64 位元 i64 值作為 JavaScript 物件參考。
此行為直接提供了兩個高度可靠的漏洞原語:addrof(將物件的標記指標位元以 BigInt 洩露)及 fakeobj(將任意 i64 值當作合法物件參考,進而達成任意記憶體存取)。研究人員指出這兩個原語的成功率達 100%,不需要任何堆噴(heap spray)技巧,顯示漏洞的可利用性極高且穩定。
完整的 Renderer 程序接管流程分為兩個連續階段,因此研究報告稱之為「雙邊界漏洞」。第一階段透過 fakeobj 原語在 V8 Heap Sandbox 邊界外建立偽造物件,突破沙箱記憶體隔離邊界;第二階段利用取得的任意讀寫能力,將 Shellcode 以字面值方式布置於記憶體,並透過屬性寫入(property store)竄改鄰近的 JIT 編譯指令,將執行流重導向至 Shellcode 完成 Renderer RCE,同時穿越 Wasm 型別系統與 V8 Heap Sandbox 兩道防護邊界。
受影響版本
- Google Chrome 106.0.x – 147.0.7727.100(跨平台,含 Windows、macOS、Linux)
- 漏洞於 Chrome 106 引入,於 Chrome 147.0.7727.101 修復
修補與緩解
修補方式為在 JSToWasmFrameStateFunctionInfo 的等號運算子中加入簽章比較邏輯,並新增靜態斷言以防止未來的衍生類別遺漏相同欄位。使用者應立即更新至 Chrome 147.0.7727.101 或更新版本;企業環境應透過管理政策(如 Google Admin 或 Intune)強制推送更新,並在更新完成前評估是否透過企業政策停用 WebAssembly(DefaultJavaScriptJitSetting)以降低暴露面。Chrome 自回報至修補僅歷時 48 小時,反映此漏洞在 Google 內部安全評估中的高度優先級。