GHSA-gf8h-gq53-288j
OpenAM: WebAuthn Java deserialization RCE via ObjectInputFilter depth>1 bypass
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Maven | org.openidentityplatform.openam:openam-auth-webauthn | < 16.1.2 | 16.1.2 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Summary
The GHSA-6c99-87fr-6q7r fix wrapped WebAuthn authenticator deserialization in an `ObjectInputFilter` meant to allow only `AuthenticatorImpl`, but it short-circuits to `ALLOWED` for any object at stream `depth > 1`. Because the Java serialization filter is consulted for every class in the graph (and `depth == 1` only for the root's concrete class), the allowlist constrains only the root and leaves the entire nested graph unchecked.
### Impact
An attacker can craft a stream rooted at `AuthenticatorImpl` with an arbitrary gadget chain nested inside. The gadget's `readObject`/`readResolve` executes during `readObject()` — before the cast and before any assertion verification — enabling remote code execution when a gadget is on the classpath. The deserialization sink is reached pre-authentication via an attacker-chosen `userHandle`.
References
External links from the advisory. They lead to third-party sites.