Vulnerability Details CVE-2026-63076
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.
Impact summary: 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.
CWE: CWE-476: NULL Pointer Dereference
Description: When verifying the password-based MAC protection of a CMP
message, OpenSSL library reads the protectionAlg algorithm parameter with
X509_ALGOR_get0(), which returns both the parameter type and its value
pointer. The value is then cast to an ASN1_STRING and treated as the
expected PBMParameter after only checking that pointer is not NULL. The
parameter type returned by X509_ALGOR_get0() 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
OSSL_CMP_SRV_process_request() 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.
FIPS impact: no
As the CMP code lives outside the FIPS module boundary, no FIPS modules
are affected by this CVE.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.013
EPSS Ranking 69.4%
CVSS Severity
CVSS v3 Score 7.5
Products affected by CVE-2026-63076
-
cpe:2.3:a:openssl:openssl:3.0.0
-
cpe:2.3:a:openssl:openssl:3.0.1
-
cpe:2.3:a:openssl:openssl:3.0.10
-
cpe:2.3:a:openssl:openssl:3.0.11
-
cpe:2.3:a:openssl:openssl:3.0.12
-
cpe:2.3:a:openssl:openssl:3.0.13
-
cpe:2.3:a:openssl:openssl:3.0.14
-
cpe:2.3:a:openssl:openssl:3.0.15
-
cpe:2.3:a:openssl:openssl:3.0.19
-
cpe:2.3:a:openssl:openssl:3.0.2
-
cpe:2.3:a:openssl:openssl:3.0.20
-
cpe:2.3:a:openssl:openssl:3.0.21
-
cpe:2.3:a:openssl:openssl:3.0.3
-
cpe:2.3:a:openssl:openssl:3.0.4
-
cpe:2.3:a:openssl:openssl:3.0.5
-
cpe:2.3:a:openssl:openssl:3.0.6
-
cpe:2.3:a:openssl:openssl:3.0.7
-
cpe:2.3:a:openssl:openssl:3.0.8
-
cpe:2.3:a:openssl:openssl:3.0.9
-
cpe:2.3:a:openssl:openssl:3.4.0
-
cpe:2.3:a:openssl:openssl:3.4.1
-
cpe:2.3:a:openssl:openssl:3.4.2
-
cpe:2.3:a:openssl:openssl:3.4.3
-
cpe:2.3:a:openssl:openssl:3.4.4
-
cpe:2.3:a:openssl:openssl:3.4.5
-
cpe:2.3:a:openssl:openssl:3.4.6
-
cpe:2.3:a:openssl:openssl:3.5.0
-
cpe:2.3:a:openssl:openssl:3.5.1
-
cpe:2.3:a:openssl:openssl:3.5.2
-
cpe:2.3:a:openssl:openssl:3.5.3
-
cpe:2.3:a:openssl:openssl:3.5.4
-
cpe:2.3:a:openssl:openssl:3.5.5
-
cpe:2.3:a:openssl:openssl:3.5.6
-
cpe:2.3:a:openssl:openssl:3.5.7
-
cpe:2.3:a:openssl:openssl:3.6.0
-
cpe:2.3:a:openssl:openssl:3.6.1
-
cpe:2.3:a:openssl:openssl:3.6.2
-
cpe:2.3:a:openssl:openssl:3.6.3
-
cpe:2.3:a:openssl:openssl:4.0.0