觀點 · 資訊分享

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#CVE-2026-33439#Java 反序列化#身分驗證#資安
OpenAM 爆出免登入就能執行指令的漏洞:2021 年補過一次,還有另一個入口沒關

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

OpenAM 免登入遠端執行漏洞資訊圖卡:16.0.5 以前的 OpenAM,不用登入就能被叫去執行指令,請升級

先用白話講: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 分制,越高越嚴重。

資料來源

常見問題

什麼是「免登入遠端程式碼執行」?
意思是攻擊者不需要任何帳號密碼,只要能連到你的伺服器,就可能讓它執行任意指令,等於把整台機器的控制權拿走,是最嚴重的漏洞類型之一。
我該怎麼檢查自己有沒有中?
先確認有沒有在用 OpenIdentityPlatform 的 OpenAM,並查看版本;16.0.5 以前(含)都在受影響範圍。有的話升級到 16.0.6,並檢查伺服器紀錄有沒有可疑的請求。
什麼是反序列化?
把一串資料還原成程式裡的物件。如果這串資料來自外部、又沒檢查就還原,攻擊者就能塞入惡意內容,讓程式照著執行。
LINE