CVE-2026-42791
OCSP responder certificate validity period not checked in public_key
Improper Certificate Validation vulnerability in Erlang OTP public_key (pubkey_ocsp module) allows forged OCSP responses signed with an expired responder certificate to be accepted as valid. OCSP response verification in pubkey_ocsp:verify_response/5 and pubkey_ocsp:is_authorized_responder/3 in lib/public_key/src/pubkey_ocsp.erl does not check the validity period (notBefore/notAfter) of the OCSP responder certificate. An attacker who has obtained the private key of an expired CA-designated OCSP responder certificate can forge OCSP responses that Erlang/OTP accepts as valid. This affects TLS clients using OCSP stapling via the ssl application: a malicious or compromised server can present a revoked TLS certificate together with a forged OCSP response signed by an expired responder key, and the client will accept the revoked certificate as valid. It also affects applications calling public_key:pkix_ocsp_validate/5 directly, where the impact depends on the use case — server-side client certificate validation using this API may allow authentication bypass with a revoked client certificate. This issue affects OTP from OTP 27.0 before OTP 27.3.4.12, OTP 28.5.0.1, and OTP 29.0.1, corresponding to public_key from 1.16 before 1.17.1.3, 1.20.3.1, and 1.21.1.
Fixes and workarounds
Workaround
* For TLS clients using the ssl application, disable OCSP stapling by setting {stapling, no_staple} in the client options, or switch to CRL-based revocation checking with {crl_check, true}. * For applications calling public_key:pkix_ocsp_validate/5 directly, validate the responder certificate's validity period in application code before calling the function.
Source: CNA: EEFFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: EEFFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: EEFAffected products and versions
| Product | Versions | Authority |
|---|---|---|
| OTP Erlang otp
software-id |
≥ 27.0; < * (affected, otp); unaffected at 27.3.4.12; unaffected at 28.5.0.1; unaffected at 29.0.1
Other versions: unaffected |
CNA: EEF |
| OTP Erlang public_key
otp |
≥ 1.16; < * (affected, otp); unaffected at 1.17.1.3; unaffected at 1.20.3.1; unaffected at 1.21.1
Other versions: unaffected |
CNA: EEF |
| OTP Erlang erlang/otp
github |
≥ 2b1a742c651b90f8a7a1fb2ddde73f29915ea376; < * (affected, git); unaffected at 7995f1fdaee3da569bb810358ce0f546471d169b; unaffected at b3870e02405c709a872b01ba6086065620cdfe76
Other versions: unaffected |
CNA: EEF |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 4.0 / 6.3 medium |
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N | CNA: EEF |
Exploit evidence
No exploit evidence in collected sources. This is not proof of no exploitation.
References
- https://github.com/erlang/otp/security/advisories/GHSA-cjxj-wj6x-3fffCNA: EEF · vendor-advisory, related
- https://cna.erlef.org/cves/CVE-2026-42791.htmlCNA: EEF · related
- https://osv.dev/vulnerability/EEF-CVE-2026-42791CNA: EEF · related
- https://www.erlang.org/doc/system/versions.html#order-of-versionsCNA: EEF · x_version-scheme
- https://github.com/erlang/otp/commit/2b1a742c651b90f8a7a1fb2ddde73f29915ea376CNA: EEF · related
- https://github.com/erlang/otp/commit/7995f1fdaee3da569bb810358ce0f546471d169bCNA: EEF · patch
- https://github.com/erlang/otp/commit/b3870e02405c709a872b01ba6086065620cdfe76CNA: EEF · patch
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.