CVE-2026-63076: Invalid Pointer Dereference in CMP Server via Crafted protectionAlg
A flaw was found in OpenSSL. OpenSSL CMP password based protection verification only checks whether the protectionAlg parameter was not NULL and not its ASN.1 type, before treating it as a PBMParameter. A crafted message can contain a parameter of a different type, which is then dereferenced as an invalid pointer.
A remote, unauthenticated attacker can crash an application acting as a CMP server that accepts PBM-protected messages, or a CMP client talking to a malicious or intercepted CMP server, resulting in a Denial of Service.
When verifying the password-based MAC protection of a CMP message, OpenSSL library reads the protectionAlg algorithm parameter with X509ALGORget0(), which returns both the parameter type and its value pointer. The value is then cast to an ASN1STRING and treated as the expected PBMParameter after only checking that pointer is not NULL. The parameter type returned by X509ALGORget0() was never consulted.
This happens during protection verification, before any MAC is computed, so no knowledge of the PBM shared secret is required; the only precondition is that PBM verification is reachable. On the server side this is reached from OSSLCMPSRVprocessrequest() for any application that stands up a CMP server accepting PBM-protected messages, and on the client side from CMP response validation against a malicious or on-path (MITM) server. The reliable consequence is a denial of service; there is no memory disclosure, no controlled memory write, and no path to code execution. CMP is a specialized feature that an application must explicitly enable.
As the CMP code lives outside the FIPS module boundary, no FIPS modules are affected by this CVE.
OpenSSL 4.0, 3.6, 3.5, 3.4, 3.0 are vulnerable to this issue. OpenSSL 1.1.1 and 1.0.2 are not affected by this issue. OpenSSL 4.0 users should upgrade to OpenSSL 4.0.2. OpenSSL 3.6 users should upgrade to OpenSSL 3.6.4. OpenSSL 3.5 users should upgrade to OpenSSL 3.5.8. OpenSSL 3.4 users should upgrade to OpenSSL 3.4.7. OpenSSL 3.0 users should upgrade to OpenSSL 3.0.22.
Other sources
Invalid Pointer Dereference in CMP Server via Crafted protectionAlg
— Microsoft
Issue summary: OpenSSL CMP password based protection verification only checks whether the protectionAlg parameter was not NULL and not its ASN.1 type, before treating it as a PBMParameter. A crafted message can contain a parameter of a different type, which is then dereferenced as an invalid pointer.
— Launchpad
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 20240524git3e722403cd16-19 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 3.3.7-6 - Upgrade
Upgrade
debian/opensslto a version that resolves this vulnerability.Fixed in 3.0.22-1~deb12u2Fixed in 3.5.7-1~deb13u2Fixed in 3.5.7-1~deb13u3Fixed in 3.6.5-1 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 3.0.22 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 3.4.7 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 3.5.8 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 3.6.4 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 4.0.2
Event History
Frequently Asked Questions
Which deployments are exposed to this denial-of-service condition?
Applications acting as CMP servers are exposed if they accept PBM-protected CMP messages and PBM verification is reachable. CMP clients can also be affected when communicating with a malicious or intercepted CMP server.
Does an attacker need the PBM shared secret to trigger the issue?
No. The invalid parameter is processed during protection verification before any MAC is computed, so knowledge of the PBM shared secret is not required.
What kind of input triggers the crash?
The attacker must supply a CMP message whose protectionAlg parameter is present but has a type other than the expected PBMParameter. The affected verification path casts and dereferences that value without checking its ASN.1 type.