OpenAM 18 个漏洞集中公开:10.0 分未认证窃取会话令牌,SAML 断言可伪造

OpenIdentityPlatform 的 OpenAM 在 16.1.4 版本中修复了 18 个漏洞,CVE 记录于 2026 年 11 月 8 日集中建档,分配方为 VulnCheck。最严重的一条是 CVE-2026-123551,CVSS 3.1 与 4.0 均为 10.0:未认证攻击者可以从通知 WebSocket 读到在线用户的实时会话令牌,其中包括管理员的 iPlanetDirectoryPro,直接完成会话劫持。另有两枚 9.3 分的漏洞分别对应 SAML 未签名断言伪造与自助注册提权。

事件概述

OpenAM 是常见的开源单点登录与身份网关,Sun/Oracle 时代的产品线延续至今,被大量政企内网、云平台与传统行业门户用来做 SSO 与统一认证。本次修复版本 16.1.4 发布于 2026 年 10 月 22 日,18 枚 CVE 直到 11 月 8 日才完成对外建档,中间约有半个月的窗口,由各部署方自行跟进。

受影响范围几乎覆盖全部在役版本:多数条目写的是「16.1.4 之前」,会话令牌泄露那条从 14.0.0 起即受影响。

关键漏洞清单

  • CVE-2026-123551(10.0):通知 WebSocket 的 agent-only 校验可被绕过——攻击者借 legacy Liberty ID-FF 端点上一个未校验的内部 forward 跳过检查,然后从 WS 通道收取在线会话令牌。拿到令牌即可冒充用户与管理员。
  • CVE-2026-123550(9.3):SAML v2.0 服务提供方在 WantAssertionsSigned 为 false 时,会在 ECP(PAOS)与 HTTP-Artifact 绑定上接受未签名断言。攻击者提交伪造断言,即以任意映射用户(含管理员)身份取得会话,并顺延劫持下游应用的 SSO。
  • CVE-2026-123549(9.3):自助注册未执行 Valid Creation Attributes 白名单,匿名攻击者可通过 legacy 自助服务 REST 端点或 User Self-Service 流程设置受限属性(含组成员关系),把自己加进管理组,拿到 OpenAM 的完整管理权。
  • CVE-2026-123543(8.7):反序列化资源耗尽。攻击者向远程 SDK 端点、经典登录页或管理控制台发送结构无上限的序列化 Java 数据,即可拖垮认证、会话校验与策略决策。
  • CVE-2026-123542(7.6):OAuth 2.0 设备授权流程未强制 PKCE,换取令牌时从不校验 code verifier,拿到已批准设备码的一方可以换出 access token 与 ID token。
  • CVE-2026-123538(7.5):SAML 1.x 断言只验签名不验签发方,keystore 中任意证书签的断言都会被接受,持有私钥的受信合作方可冒充其他合作方的用户。
  • CVE-2026-123553(6.9):Top Level Realm 内置身份(demo、anonymous、wsc、wsp、SecurityTokenService、agentAuth)的密码在所有安装中完全一致且公开可查,且能够通过认证。未认证攻击者可直接以此身份登录,agent 身份还能读取其他 agent profile 的配置。

其余条目集中在 SSRF(CRL 检查、联邦元数据、UMA 范围描述)、开放重定向、存储型 XSS 与 CSRF,评分 2.0 至 6.3 不等。单个危害有限,但在 SSO 场景里常被用作钓鱼与令牌窃取的辅助环节。

影响评估

身份网关是「一次突破、全域通行」的节点,这类漏洞的实际损失不看 CVSS,而看它背后挂了多少下游应用。CVE-2026-123551 的可怕之处在于不需要任何凭据:令牌是从服务端主动推给客户端的,攻击者只是找到了一个能订阅该通道的入口。真正落地利用时,同网段或能访问 OpenAM 前端代理的位置即可尝试。

三枚高分漏洞还构成了一条递进路径:先用 123553 的内置身份拿到一个合法会话,再用 123549 的注册缺陷把自己抬进管理组,最后用 123551 批量收敛其他在线用户的令牌。整个过程不做任何爆破,日志里看起来都是「正常登录」。

还要提醒一点:OpenAM 的漏洞历史说明它的默认配置长期偏向「开箱可用」——内置身份带默认密码、SAML 允许未签名断言、设备流不强制 PKCE,这些默认值的共同取向是降低集成难度,代价是把安全假设交给了部署方。16.1.4 修的是代码,但同一套默认值如果没有在配置层面显式收紧,下一次出现同类问题时仍会踩中。

修复建议

  • 升级到 16.1.4 或更高版本,这是本次唯一的闭环手段,官方未发布独立补丁。
  • 升级不能替代整改:内置身份需要在升级后逐个核实密码是否仍为默认值,能删就删;WantAssertionsSigned 应显式置为 true,不要依赖默认值。
  • 对通知 WebSocket 与管理控制台加网络层限制,只允许 agent 与运维网段访问,禁止从公网直连 /openam/notifications 一类通道。
  • 全量作废并重新签发 16.1.4 之前建立的所有会话,尤其是管理员会话;轮换 agent 与联合身份的共享密钥。
  • 审计日志重点看三类行为:内置身份(demo、wsc、wsp、agentAuth)的登录记录;短时间内自助注册后组成员变化的账号;SAML 断言无签名却建立会话的记录。
  • 在 WAF 层对 OpenAM 的序列化请求体做长度与结构限制,缓解 123543 的资源耗尽。

参考来源