CVE-2025-22874

| EUVD-2025-18136 HIGH
2025-06-11 [email protected]
7.5
CVSS 3.1
Share

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

4
Patch Released
Mar 31, 2026 - 21:13 nvd
Patch available
Analysis Generated
Mar 14, 2026 - 21:09 vuln.today
EUVD ID Assigned
Mar 14, 2026 - 21:09 euvd
EUVD-2025-18136
CVE Published
Jun 11, 2025 - 17:15 nvd
HIGH 7.5

Description

Calling Verify with a VerifyOptions.KeyUsages that contains ExtKeyUsageAny unintentionally disabledpolicy validation. This only affected certificate chains which contain policy graphs, which are rather uncommon.

Analysis

Certificate policy validation bypass in cryptographic verification routines where specifying ExtKeyUsageAny in VerifyOptions.KeyUsages inadvertently disables policy validation checks. This affects applications performing X.509 certificate chain verification, particularly those validating certificates containing policy constraint graphs (an uncommon but security-critical scenario). An attacker can present a malicious certificate chain that would normally be rejected due to policy violations, potentially enabling unauthorized certificate acceptance and compromising trust validation in PKI-dependent systems.

Technical Context

This vulnerability exists in certificate verification logic (likely Go's crypto/x509 package or similar cryptographic libraries) where the ExtKeyUsageAny constant, when included in VerifyOptions.KeyUsages parameters, creates an unintended code path that bypasses policy validation mechanisms. X.509 certificate policies (defined in RFC 5280) are constraints used in PKI hierarchies to ensure certificates conform to specific validation rules. The bug appears to be a logic error where the presence of ExtKeyUsageAny flag causes the verification routine to skip policy graph evaluation entirely, rather than properly handling the 'any' EKU designation alongside policy validation. The issue is particularly dangerous because policy constraints are a sophisticated but essential security control in enterprise and government PKI deployments, and their bypass is non-obvious to callers who may not expect ExtKeyUsageAny to affect policy validation at all.

Affected Products

Based on the technical nature (certificate verification with policy handling), the most likely affected product is Go's standard library crypto/x509 package (CPE: cpe:2.3:a:golang:go:*). The vulnerability likely affects all Go versions from an undisclosed vulnerable version through a specific patch version. Without vendor advisory references in the provided data, specific version ranges cannot be confirmed, but similar CVEs in Go typically affect versions spanning multiple minor releases. Other cryptographic libraries implementing X.509 verification (OpenSSL, BoringSSL, libcurl with x509 policy support, or NSS) may be similarly affected depending on their implementation. Applications using these libraries for certificate verification—including TLS servers, certificate validation utilities, OCSP responders, and PKI infrastructure components—inherit this vulnerability.

Remediation

1) IMMEDIATE: Update affected cryptographic libraries to patched versions (vendor must provide specific version numbers in advisory—typically next minor or patch release). 2) CODE-LEVEL FIX: Cease using ExtKeyUsageAny in VerifyOptions.KeyUsages parameters when policy validation is required; instead, explicitly enumerate required EKU values or omit the KeyUsages check if policies must be validated. 3) VALIDATION LOGIC: For applications validating certificates with policy constraints, audit code to ensure policy validation is not inadvertently disabled by EKU parameters. 4) TESTING: Add regression tests that verify policy constraints are enforced even when EKU parameters are specified. 5) TEMPORARY MITIGATION: If patching is delayed, implement external policy validation checks separate from the VerifyOptions path. Consult vendor (Go, OpenSSL, etc.) security advisories for exact patch versions and availability timelines.

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: +0.0
CVSS: +38
POC: 0

Vendor Status

Ubuntu

Priority: Medium
golang
Release Status Version
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.6
Release Status Version
xenial needs-triage -
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.8
Release Status Version
bionic needs-triage -
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.9
Release Status Version
bionic needs-triage -
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.10
Release Status Version
trusty needs-triage -
xenial needs-triage -
bionic needs-triage -
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.13
Release Status Version
xenial needs-triage -
bionic needs-triage -
focal needs-triage -
jammy needs-triage -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.14
Release Status Version
focal needs-triage -
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.16
Release Status Version
bionic needs-triage -
focal needs-triage -
jammy DNE -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.17
Release Status Version
jammy needs-triage -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
questing DNE -
golang-1.18
Release Status Version
xenial needs-triage -
bionic needs-triage -
jammy needs-triage -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
focal needs-triage -
questing DNE -
golang-1.20
Release Status Version
jammy needs-triage -
noble DNE -
oracular DNE -
plucky DNE -
upstream needs-triage -
focal needs-triage -
questing DNE -
golang-1.21
Release Status Version
jammy needs-triage -
noble needs-triage -
oracular DNE -
plucky DNE -
upstream needs-triage -
focal needs-triage -
questing DNE -
golang-1.22
Release Status Version
plucky DNE -
upstream needs-triage -
jammy not-affected code not present
noble not-affected code not present
oracular not-affected code not present
focal needs-triage -
questing DNE -
golang-1.23
Release Status Version
jammy needs-triage -
noble needs-triage -
upstream needs-triage -
oracular ignored end of life, was needs-triage
questing needs-triage -
plucky ignored end of life, was needs-triage
golang-1.24
Release Status Version
oracular DNE -
upstream needs-triage -
jammy needs-triage -
noble needs-triage -
questing needs-triage -
plucky ignored end of life, was needs-triage

Debian

Bug #1107364
golang-1.15
Release Status Fixed Version Urgency
bullseye fixed 1.15.15-1~deb11u4 -
(unstable) not-affected - -
golang-1.19
Release Status Fixed Version Urgency
bookworm fixed 1.19.8-2 -
(unstable) not-affected - -
golang-1.24
Release Status Fixed Version Urgency
trixie fixed 1.24.4-1 -
forky, sid fixed 1.24.13-2 -
(unstable) fixed 1.24.4-1 -
golang-1.23
Release Status Fixed Version Urgency
(unstable) not-affected - -

Share

CVE-2025-22874 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy