CVE-2026-45794
nicheJava class-loading deserialization flaw in OpenAM push SNS callback (pre-16.1.1)
OpenAM (Open Access Management) versions prior to 16.1.1 contain an unsafe deserialization flaw (CWE-502) in the anonymous Push Notification SNS callback handled by SnsMessageResource. After a messageId expires from the in-memory dispatcher, the code falls back to a persistent CTS predicate blob whose top-level JSON keys are passed to Class.forName and whose contents are deserialized via Jackson, allowing blob replacement through anonymous callbacks. A low-privileged user who initiates Push Registration and obtains the messageId, shared secret, and challenge can wait for expiry, overwrite the blob, and trigger attacker-influenced class loading and construction inside the OpenAM JVM, enabling classpath-dependent process execution, file writes, or denial of service (command execution was not confirmed on the tested stock classpath). All deployments running OpenAM before 16.1.1 that expose the push notification SNS callback are affected. No public proof of concept exists and the issue is not in the CISA KEV catalog, so exploitation in the wild is not known.
What to do: Upgrade OpenAM to version 16.1.1 or later. Until patched, restrict or disable anonymous access to the SNS push notification callback (SnsMessageResource), and consider blocking or rate-limiting SNS callbacks referencing expired or unknown messageIds. Review logs for anomalous Push Registration activity, repeated anonymous callbacks targeting the same messageId after expiry, and any unexpected class loading, file writes, or JVM crashes on OpenAM hosts.
| Open Identity Platform Community OpenAM (Open Access Management) | all versions prior to 16.1.1 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Open Access Management (OpenAM) is an access management solution. Prior to 16.1.1, the anonymous Push Notification SNS callback handled by SnsMessageResource falls back to a CTS predicate blob after a messageId expires from the in-memory dispatcher, treats top-level blob keys as Java class names for Class.forName, and deserializes attacker-controlled JSON through Jackson. A low-privileged user who starts Push Registration and obtains the messageId, shared secret, and challenge can wait for expiry, replace the persistent blob through anonymous callbacks, and trigger class loading and construction in the OpenAM JVM. The primitive can cause classpath-dependent process execution, file writes, or denial of service, although command execution was not confirmed on the tested stock classpath. This issue is fixed in version 16.1.1.
- Weakness
- CWE-502
- Vector
- CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.