觀點 · 資訊分享
OpenAM 爆出免登入就能執行指令的漏洞:2021 年補過一次,還有另一個入口沒關
開源身分驗證系統 OpenAM 16.0.5 以前的版本,有個不用登入就能讓伺服器執行任意指令的漏洞(CVE-2026-33439,NVD 評分 9.8)。官方已在 16.0.6 修好,用 OpenAM 的團隊要盡快升級。
- 發布
- 2026-04-07
- 篇幅
- 約 4 分鐘 · 1,707 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

一句話看懂:開源身分驗證系統 OpenAM 在 16.0.5 以前的版本,有個不用登入就能讓伺服器執行任意指令的漏洞(CVE-2026-33439),官方已在 16.0.6 修好,請盡快升級。

先用白話講:OpenAM 是什麼?
很多公司內部有一堆系統,每個都要登入很麻煩,所以會用「單一登入」:只在大門口刷一次證,就能進所有房間。OpenAM 就是一套開源、自己架設的「大門管理系統」,負責檢查你是誰、能進哪些房間。
大門管理系統本身要是被攻破,整棟樓的門禁都會跟著失守。所以它的漏洞特別嚴重。
發生什麼事
2026 年 4 月 7 日,OpenIdentityPlatform 在 GitHub 公開了編號 CVE-2026-33439 的安全公告:
- 受影響:OpenAM 16.0.5(含)以前的版本
- 已修補:16.0.6
- NVD 嚴重度評分 9.8(滿分 10);GitHub 這邊的評分是 9.3,同樣是「嚴重」等級
- 攻擊者不需要登入,就能讓伺服器以應用程式身分執行任意指令
- 發現者是 Rahul Maini 與 Hacktron AI
為什麼會有這個洞?
用生活比喻:櫃台收到一個包裹,照規定要先 X 光檢查才能拆。2021 年有人發現一個窗口的包裹沒檢查(CVE-2021-35464),官方補上檢查。但這次的公告指出,另一個窗口(jato.clientSession 這個參數)一直沒被補到,還是會直接拆包裹。
公告說,只要某些頁面(例如忘記密碼頁)會用到 <jato:form> 這種標籤,就有機會從那裡進來。
給開發者的技術細節
- 漏洞類型:CWE-502,不受信任資料的反序列化。
ClientSession.deserializeAttributes()沒有類別白名單,直接做ObjectInputStream.readObject() - 對照:2021 年修過的
jato.pageSession已有WhitelistObjectInputStream(約 40 個安全類別白名單),但jato.clientSession這條路沒有套用 - 影響範圍:只要有至少一個對外可存取、且頁面含
<jato:form>標籤的 JATO 端點(例如密碼重設頁)就可能受影響 - 修補:升級到 16.0.6。公告建議的長期做法還包括:盤點所有呼叫
Encoder.deserialize()的地方,並在 JVM 層加上 JEP 290 反序列化過濾器當第二道防線 - 臨時措施:官方公告沒有提供不升級的替代方案;若短時間升不了,建議先限制外部網路直接連到 OpenAM(例如只開放需要的來源),並留意伺服器紀錄。這是一般性的防護做法,不是官方保證的緩解方式
- 目前狀態:這份公告沒有提到已出現實際攻擊事件;後續是否有攻擊活動,請以官方與 CISA 等機構的最新資料為準
我的看法
自己架設單一登入、替客戶管理帳號的團隊,要特別注意這類漏洞:身分系統通常是整個環境最有價值的目標,又常常直接放在公網上。這次的情況也提醒我,「上次修過」不代表「同一類都修完」,補洞時最好把同樣寫法全部盤點一遍。
如果你是用雲端 SaaS 做登入(不是自己架 OpenAM),這則公告不影響你;如果是接案時遇到客戶自己架 OpenAM,先把版本查清楚,這種「免登入 + 能執行指令」的組合,值得今天就排進升級計畫。
名詞小辭典
- 單一登入(SSO):登入一次,就能使用多個系統,不用每個系統各登入一次。
- 遠端程式碼執行(RCE):攻擊者可以從遠端讓你的伺服器執行他指定的指令。
- 反序列化(Deserialization):把傳過來的一串資料還原成程式裡的物件;資料來源不可信時風險很高。
- CVSS:衡量漏洞嚴重度的 0 到 10 分制,越高越嚴重。