{"id":"CVE-2026-45794","kind":"vulnerability","aliases":["CVE-2026-45794","GHSA-pp89-732f-3g8q"],"related":[],"title":"OpenAM has Unsafe Java Deserialization via SNS","description":"## Summary\n\n**Description**\n\nA Deserialization of Untrusted Data (CWE-502) issue exists in OpenAM's Push Notification SNS callback resource. The REST route that handles SNS push messages is mounted with anonymous access and, when a supplied message identifier has expired from the in-memory dispatcher, falls back to a CTS-stored predicate blob whose top-level keys are treated as Java class names and passed to Class.forName(...) before attacker-controlled JSON is deserialized via Jackson. This impacts OpenAM Community Edition through version 16.0.6. This issue was patched in version 16.1.1.\n\nArbitrary attacker-controlled code execution was not confirmed on tested stock classpaths for the latest release, but the flaw yields a reliable class-loading and Jackson-construction primitive whose impacts include remotely triggerable process execution, file writes, and DoS, depending on the deployment's classpath and environment.\n\n## Impact\nOpenAM Community Edition deployments through version 16.0.6 that enable the Push Notification Service with SNS callbacks are potentially affected. While the callback route itself is anonymous, the planting step requires a low-privileged user who can start Push Registration and read their own QR-code payload. After that user obtains the server-issued messageId, shared secret, and challenge, they can wait for the in-memory dispatcher entry to expire and then send anonymous SNS callbacks that overwrite the persistent CTS blob with attacker-controlled JSON. A later anonymous callback for the same messageId causes OpenAM to load an attacker-named class and construct it with attacker-controlled values.\n\nThe planted blob is processed server-side with internal CTS privileges, giving a reliable class-loading and Jackson-construction primitive that can corrupt the push-token record and trigger classpath-dependent side effects in the OpenAM JVM. Arbitrary attacker-controlled command execution was not confirmed on the tested stock classpaths; practical severity depends on enabled Push Registration flows, JDK version, bundled or co-deployed classes, and whether any reachable class-loading or construction side effects are security-relevant in the deployment.\n\n## Patch\nThis has been patched in OpenAM Community Edition version 16.1.1. Users are encouraged to update to the latest release.","summary":"OpenAM's Push Notification SNS callback route is anonymously reachable and, after a message entry expires, loads attacker-named Java classes and deserializes attacker-supplied JSON via Jackson. An attacker who first registers a push token can plant a payload and trigger class loading and object construction in the OpenAM JVM, with possible DoS, file writes or process execution depending on the classpath.","severity":"high","cvss":7.7,"epss":0.00627,"exploited":false,"exploited_at":null,"products":[{"name":"org.openidentityplatform.openam:openam-push-notification","fixed":["16.1.1"],"affected":"< 16.1.1","ecosystem":"maven"}],"ecosystems":["maven"],"tags":["cwe-502","identity","java","openam","package","self-hosted","sso"],"not_affected_if":["default-config","push-notification-disabled"],"how_to_check":"- Check the `openam-push-notification` Maven dependency version in the OpenAM deployment; affected if below `16.1.1`\n- Confirm whether the Push Notification Service with SNS callbacks is enabled in the OpenAM configuration","fix":"- Upgrade OpenAM Community Edition and the `openam-push-notification` artifact to `16.1.1`\n- Until patched, unknown whether disabling the Push Notification Service or blocking the SNS callback route is a sufficient workaround","status":"open","published_at":"2026-06-25T16:30:03+00:00","first_seen_at":"2026-10-28T15:29:40+00:00","triaged_at":"2026-10-28T15:30:59+00:00","updated_at":"2026-10-28T15:33:37+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-28T15:30:59Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade OpenAM Community Edition and the `openam-push-notification` artifact to `16.1.1`\n- Until patched, unknown whether disabling the Push Notification Service or blocking the SNS callback route is a sufficient workaround","reach":"internet","title":"OpenAM: unsafe Java deserialization in push SNS callback endpoint","impact":"high","summary":"OpenAM's Push Notification SNS callback route is anonymously reachable and, after a message entry expires, loads attacker-named Java classes and deserializes attacker-supplied JSON via Jackson. An attacker who first registers a push token can plant a payload and trigger class loading and object construction in the OpenAM JVM, with possible DoS, file writes or process execution depending on the classpath.","category":"package","nicknames":[],"who_cares":["openam","self-hosted","java","identity","sso"],"confidence":0.7,"needs_auth":"yes","worst_case":"Attacker loads arbitrary classes and constructs objects, possibly running code","analyst_note":"Check the GHSA-pp89-732f-3g8q advisory for exact deployment checks and any workaround short of upgrading; the sources do not confirm code execution on stock classpaths.","how_to_check":"- Check the `openam-push-notification` Maven dependency version in the OpenAM deployment; affected if below `16.1.1`\n- Confirm whether the Push Notification Service with SNS callbacks is enabled in the OpenAM configuration","needs_analyst":true,"not_affected_if":["default-config","push-notification-disabled"],"who_is_affected":"OpenAM Community Edition deployments through `16.0.6` that enable the Push Notification Service with SNS callbacks. The callback route is anonymous, but planting the payload requires a low-privileged user who can start Push Registration. Deployments without Push Notification enabled, or on `16.1.1` or later, are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000751,"input_tokens":4022,"output_tokens":698,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':9A,17A '-45794':10A,18A '-502':25B,107C '16.0.6':185C,250C '16.1.1':192C,459C '3g8q':15A '732f':14A 'access':130C 'affect':262C 'anonym':42B,129C,269C,320C,336C 'arbitrari':193C,401C 'attack':52B,59B,65B,171C,195C,331C,348C,356C,403C 'attacker-control':170C,194C,330C,355C,402C 'attacker-nam':51B,347C 'attacker-suppli':58B 'back':146C 'blob':153C,328C,361C 'bundl':425C 'callback':39B,116C,259C,265C,322C,337C 'caus':342C 'challeng':304C 'class':55B,78B,163C,217C,350C,375C,430C,436C 'class-load':216C,374C,435C 'class.forname':168C 'classpath':98B,205C,240C,393C,414C 'classpath-depend':392C 'co':428C 'co-deploy':427C 'code':197C,290C 'command':405C 'communiti':181C,245C,456C 'confirm':201C,409C 'construct':82B,222C,352C,380C,439C 'control':172C,196C,332C,357C,404C 'corrupt':384C 'cts':150C,327C,369C 'cts-store':149C 'cve':8A,16A 'cwe':24B,106C 'data':105C 'depend':95B,235C,394C,417C 'deploy':238C,247C,429C,448C 'descript':100C 'deseri':5A,57B,102C,175C 'dispatch':144C,313C 'dos':89B,234C 'edit':182C,246C,457C 'effect':396C,441C 'enabl':252C,419C 'encourag':462C 'entri':48B,314C 'environ':242C 'execut':94B,198C,230C,406C 'exist':109C 'expir':49B,138C,316C 'fall':145C 'file':90B,231C 'first':67B 'flaw':212C 'flow':422C 'ghsa':12A 'ghsa-pp89-732f-3g8q':11A 'give':371C 'handl':122C 'host':32B 'ident':26B 'identifi':136C 'impact':179C,225C,243C 'in-memori':141C,310C 'includ':226C 'intern':368C 'issu':108C,187C,299C 'jackson':63B,177C,221C,379C 'jackson-construct':220C,378C 'java':4A,27B,54B,162C 'jdk':423C 'json':61B,173C,333C 'jvm':86B,400C 'key':158C 'later':335C 'latest':208C,467C 'level':157C 'load':50B,79B,218C,345C,376C,437C 'low':276C 'low-privileg':275C 'memori':143C,312C 'messag':47B,125C,135C 'messageid':300C,341C 'mount':127C 'name':53B,164C,349C 'notif':37B,114C,255C 'notification':23A 'object':81B 'obtain':295C 'openam':1A,21A,28B,34B,85B,111C,180C,244C,343C,399C,455C 'openam-push-notification':20A 'org.openidentityplatform.openam':19A 'overwrit':324C 'packag':29B 'pass':166C 'patch':189C,449C,453C 'payload':75B,291C 'persist':326C 'plant':73B,271C,360C 'possibl':88B 'potenti':261C 'pp89':13A 'practic':415C 'predic':152C 'primit':223C,381C 'privileg':277C,370C 'process':93B,229C,363C 'push':22A,36B,70B,113C,124C,254C,282C,387C,420C 'push-token':386C 'qr':289C 'qr-code':288C 'reachabl':43B,434C 'read':285C 'record':389C 'regist':68B 'registr':283C,421C 'releas':209C,468C 'relev':445C 'reliabl':215C,373C 'remot':227C 'requir':273C 'resourc':117C 'rest':119C 'rout':40B,120C,266C 'secret':302C 'secur':444C 'security-relev':443C 'self':31B 'self-host':30B 'send':319C 'server':298C,365C 'server-issu':297C 'server-sid':364C 'servic':256C 'sever':416C 'share':301C 'side':366C,395C,440C 'sns':7A,38B,115C,123C,258C,321C 'sso':33B 'start':281C 'step':272C 'stock':204C,413C 'store':151C 'summari':99C 'suppli':60B,134C 'test':203C,412C 'token':71B,388C 'top':156C 'top-level':155C 'treat':160C 'trigger':77B,228C,391C 'unsaf':3A 'untrust':104C 'updat':464C 'user':278C,294C,460C 'valu':358C 'version':184C,191C,249C,424C,458C 'via':6A,62B,176C 'wait':307C 'whether':432C 'whose':154C,224C 'write':91B,232C 'yield':213C","nicknames":[],"mitigations":[],"who_affected":"OpenAM Community Edition deployments through `16.0.6` that enable the Push Notification Service with SNS callbacks. The callback route is anonymous, but planting the payload requires a low-privileged user who can start Push Registration. Deployments without Push Notification enabled, or on `16.1.1` or later, are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-06-25T16:30:03+00:00","kev":null,"cvss_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","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-pp89-732f-3g8q","url":"https://github.com/advisories/GHSA-pp89-732f-3g8q","severity":"high","published_at":"2026-06-25T16:30:03+00:00","modified_at":"2026-10-28T15:29:07+00:00","first_seen_at":"2026-10-28T15:29:40+00:00","fetched_at":"2026-10-28T15:29:40+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-45794","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45794","severity":null,"published_at":"2026-09-15T10:17:04+00:00","modified_at":"2026-09-30T17:43:24+00:00","first_seen_at":"2026-10-28T15:33:37+00:00","fetched_at":"2026-10-28T15:33:37+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}