CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Lifecycle Timeline
4DescriptionNVD
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.
AnalysisAI
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 ContextAI
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.
RemediationAI
- 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.
More from same product – last 7 days
Command injection in the shell-quote npm package allows attackers who can influence object-token inputs to inject arbitr
Heap buffer overflow in NGINX Plus and NGINX Open Source ngx_http_rewrite_module allows unauthenticated remote attackers
Vendor StatusVendor
Ubuntu
Priority: Medium| Release | Status | Version |
|---|---|---|
| jammy | DNE | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| Release | Status | Version |
|---|---|---|
| xenial | needs-triage | - |
| jammy | DNE | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| Release | Status | Version |
|---|---|---|
| bionic | needs-triage | - |
| jammy | DNE | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| Release | Status | Version |
|---|---|---|
| bionic | needs-triage | - |
| jammy | DNE | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| 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 | - |
| 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 | - |
| Release | Status | Version |
|---|---|---|
| focal | needs-triage | - |
| jammy | DNE | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| Release | Status | Version |
|---|---|---|
| bionic | needs-triage | - |
| focal | needs-triage | - |
| jammy | DNE | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| Release | Status | Version |
|---|---|---|
| jammy | needs-triage | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| questing | DNE | - |
| 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 | - |
| Release | Status | Version |
|---|---|---|
| jammy | needs-triage | - |
| noble | DNE | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| focal | needs-triage | - |
| questing | DNE | - |
| Release | Status | Version |
|---|---|---|
| jammy | needs-triage | - |
| noble | needs-triage | - |
| oracular | DNE | - |
| plucky | DNE | - |
| upstream | needs-triage | - |
| focal | needs-triage | - |
| questing | DNE | - |
| 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 | - |
| 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 |
| 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| Release | Status | Fixed Version | Urgency |
|---|---|---|---|
| bullseye | fixed | 1.15.15-1~deb11u4 | - |
| (unstable) | not-affected | - | - |
| Release | Status | Fixed Version | Urgency |
|---|---|---|---|
| bookworm | fixed | 1.19.8-2 | - |
| (unstable) | not-affected | - | - |
| Release | Status | Fixed Version | Urgency |
|---|---|---|---|
| trixie | fixed | 1.24.4-1 | - |
| forky, sid | fixed | 1.24.13-2 | - |
| (unstable) | fixed | 1.24.4-1 | - |
| Release | Status | Fixed Version | Urgency |
|---|---|---|---|
| (unstable) | not-affected | - | - |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2025-18136