CVE-2024-45341
Medium · 6.1CVSS
6.1
EPSS
0.5%
Published
Jan 28, 2025
CISA due date
—
Cloudanix analysis
A flaw in how digital certificates are checked could allow an attacker to bypass security rules and impersonate trusted services within a private corporate network.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Authentication Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A flaw in the certificate validation logic allows a specially crafted X.509 certificate to bypass URI name constraints. If a certificate's Subject Alternative Name (SAN) contains a URI with an IPv6 address that includes a zone ID, the validation process may incorrectly accept the certificate, even if it violates the defined name constraint. This leads to a partial authentication bypass, as a malicious certificate can be mistaken for a legitimate one within a restricted namespace.
Why it matters to the business
This vulnerability can allow an attacker to impersonate trusted services or users within private enterprise networks that use Public Key Infrastructure (PKI) with URI name constraints for access control. This could lead to unauthorized access to sensitive internal applications and data, undermining network segmentation and trust boundaries. The impact is confined to organizations with private PKIs that utilize this specific, non-standard certificate feature.
How an attack unfolds
An attacker first identifies a target organization that relies on a private PKI and uses URI name constraints to secure internal services. The attacker then crafts a malicious X.509 certificate containing a URI with an IPv6 address and a zone ID (e.g., `https://[fe80::1%eth0]/resource`). After getting this certificate signed by a CA trusted within the target's environment, the attacker presents it to a vulnerable client or server. The flawed validation logic incorrectly accepts the certificate, bypassing the name constraint and granting the attacker the same level of access as the legitimate service they are impersonating.
How to fix it
Upgrade affected systems to a patched version that correctly validates certificate name constraints involving IPv6 addresses with zone IDs. For the specified Red Hat products, update to version `0:4.3.19-20211013.0.el7_9` or a later release. As a preventative measure, organizations should review their internal CA policies and consider disallowing the issuance of certificates that contain URIs with IPv6 zone IDs.
How to confirm the fix worked
To confirm remediation, verify that all affected components have been upgraded to the fixed versions or later. To test for the vulnerability in a safe environment, create a test certificate containing a URI with an IPv6 address and zone ID. Configure a service with a name constraint that should explicitly reject this certificate. If the connection attempt using the test certificate is correctly denied, the system is not vulnerable. If the connection is allowed, the system remains vulnerable.
Typical attack path
- The attacker identifies a target using a private PKI with URI name constraints for authentication.
- The attacker crafts a malicious certificate containing a URI with an IPv6 address and a zone ID in the Subject Alternative Name field.
- The attacker obtains a signature for this certificate from a Certificate Authority that is trusted by the target system.
- The attacker positions themselves to present the certificate, for example by setting up a malicious server or performing a Man-in-the-Middle attack.
- A user or automated system connects, and the vulnerable application attempts to validate the malicious certificate.
- The application's flawed validation logic incorrectly accepts the certificate, bypassing the URI name constraint.
- The attacker successfully impersonates a legitimate internal service and gains unauthorized access.
How to detect it
To detect potential exploitation, security teams should monitor certificate validation logs and network traffic for anomalies. Look for successful TLS handshakes involving certificates that contain a URI with an IPv6 address and a zone ID (e.g., `...%eth0`). If your organization maintains a Certificate Transparency log for your internal PKI, search it for issued certificates matching this pattern. Successful authentications from unexpected sources using certificates with these non-standard URIs should be investigated as potential indicators of compromise.
- pcre:/subjectAlternativeName:URI:.*//\[[a-fA-F0-9:]+%[a-zA-Z0-9_.-]+\]/
What your security team should do
- Immediately patch all vulnerable systems, prioritizing those that are part of a private PKI and use URI name constraints for access control.
- Audit your internal Certificate Authority infrastructure to determine if URI name constraints are in use and if any certificates with IPv6 zone IDs have been issued.
- Update certificate issuance policies to prohibit or flag certificates containing URIs with IPv6 zone IDs in the Subject Alternative Name field.
The record
A certificate with a URI which has a IPv6 address with a zone ID may incorrectly satisfy a URI name constraint that applies to the certificate chain. Certificates containing URIs are not permitted in the web PKI, so this only affects users of private PKIs which make use of URIs.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | stdlib | 0 | 1.22.11 |
| AlmaLinux:10 | delve | 0 | 1.24.1-1.el10_0 |
| AlmaLinux:10 | go-toolset | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-bin | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-docs | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-misc | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-src | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-tests | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:8 | delve | 0 | 1.24.1-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | go-toolset | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-bin | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-docs | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-misc | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-src | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-tests | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| Bitnami | golang | 0 | 1.22.11 |
| Chainguard | aactl | 0 | 0.4.12-r22 |
| Chainguard | actions-runner-controller | 0 | 0.10.1-r2 |
| Chainguard | actions-runner-controller-fips | 0 | 0.10.1-r2 |
| Chainguard | age | 0 | 1.2.1-r1 |
| Chainguard | age-fips | 0 | 1.2.1-r1 |
| Chainguard | amazon-cloudwatch-agent-fips | 0 | 1.300052.0-r0 |
| Chainguard | amazon-k8s-cni | 0 | 1.19.2-r1 |
| Chainguard | amazon-k8s-cni-fips | 0 | 1.19.2-r2 |
| Chainguard | amazon-k8s-cni-init-fips | 0 | 1.19.2-r2 |
| Chainguard | amazon-k8s-cni-init-fips-compat | 0 | 1.19.2-r2 |
| Chainguard | ansible-operator | 0 | 1.37.1-r1 |
| Chainguard | apache-beam-java-11-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-java-17-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-java-21-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-java-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-python-3.11-sdk | 0 | 2.62.0-r0 |
| Chainguard | argo-cd-fips-2.10 | 0 | 2.10.18-r5 |
| Chainguard | argo-cd-fips-2.10-compat | 0 | 2.10.18-r5 |
| Chainguard | argo-cd-fips-2.10-repo-server | 0 | 2.10.18-r5 |
| Chainguard | argo-cd-fips-2.11 | 0 | 2.11.13-r0 |
| Chainguard | argo-cd-fips-2.11-compat | 0 | 2.11.13-r0 |
| Chainguard | argo-cd-fips-2.11-repo-server | 0 | 2.11.13-r0 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.10-r0 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.10-r0 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.10-r0 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.4-r0 |
| Chainguard | argo-events | 0 | 1.9.5-r1 |
| Chainguard | argo-events-fips | 0 | 1.9.5-r1 |
| Chainguard | argo-rollouts | 0 | 1.7.2-r4 |
| Chainguard | argo-workflow-cli | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-controller | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-executor | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.3-r1 |
| Chainguard | argo-workflows | 0 | 3.6.3-r1 |
| Chainguard | argo-workflows-fips | 0 | 3.6.2-r4 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.3-r1 |
| Chainguard | argo-workflows-ui | 0 | 3.6.3-r1 |
| Chainguard | atlantis | 0 | 0.32.0-r1 |
| Chainguard | atlantis-fips | 0 | 0.32.0-r1 |
| Chainguard | authservice-fips | 0 | 1.0.4-r0 |
| Chainguard | aws-application-networking-k8s | 0 | 1.1.0-r2 |
| Chainguard | aws-ebs-csi-driver | 0 | 1.52.1-r0 |
| Chainguard | aws-efs-csi-driver | 0 | 2.1.4-r1 |
| Chainguard | aws-efs-csi-driver-fips | 0 | 2.1.4-r1 |
| Chainguard | aws-flb-cloudwatch | 0 | 1.9.4-r14 |
| Chainguard | aws-flb-cloudwatch-compat | 0 | 1.9.4-r14 |
| Chainguard | aws-flb-cloudwatch-compat-fips | 0 | 1.9.4-r7 |
| Chainguard | aws-flb-cloudwatch-fips | 0 | 1.9.4-r7 |
| Chainguard | aws-flb-firehose | 0 | 1.7.2-r14 |
| Chainguard | aws-flb-firehose-compat | 0 | 1.7.2-r14 |
| Chainguard | aws-flb-firehose-compat-fips | 0 | 1.7.2-r7 |
| Chainguard | aws-flb-firehose-fips | 0 | 1.7.2-r7 |
| Chainguard | aws-flb-kinesis | 0 | 1.10.2-r15 |
| Chainguard | aws-flb-kinesis-fips | 0 | 1.10.2-r8 |
| Chainguard | aws-load-balancer-controller | 0 | 2.11.0-r2 |
| Chainguard | aws-load-balancer-controller-fips | 0 | 2.12.0-r1 |
| Chainguard | aws-network-policy-agent | 0 | 1.1.6-r1 |
| Chainguard | aws-network-policy-agent-compat | 0 | 1.1.6-r1 |
| Chainguard | aws-network-policy-agent-fips | 0 | 1.1.6-r1 |
| Chainguard | aws-privateca-issuer | 0 | 1.4.0-r3 |
| Chainguard | aws-privateca-issuer-compat-fips | 0 | 1.4.0-r3 |
| Chainguard | aws-privateca-issuer-fips | 0 | 1.4.0-r3 |
| Chainguard | aws-signer-notation-plugin | 0 | 1.0.350-r1 |
| Chainguard | aws-signer-notation-plugin-fips | 0 | 1.0.350-r1 |
| Chainguard | azure-aad-pod-identity-mic | 0 | 1.8.17-r16 |
| Chainguard | azuredisk-csi-1.28 | 0 | 1.28.11-r6 |
| Chainguard | azuredisk-csi-1.29 | 0 | 1.29.12-r1 |
| Chainguard | azuredisk-csi-1.29-compat | 0 | 1.29.12-r1 |
| Chainguard | azuredisk-csi-1.30 | 0 | 1.30.7-r1 |
| Chainguard | azuredisk-csi-1.31 | 0 | 1.31.2-r1 |
| Chainguard | azuredisk-csi-fips-1.28 | 0 | 1.28.11-r5 |
| Chainguard | azuredisk-csi-fips-1.29 | 0 | 1.29.12-r1 |
| Chainguard | azuredisk-csi-fips-1.30 | 0 | 1.30.7-r1 |
| Chainguard | azuredisk-csi-fips-1.31 | 0 | 1.31.2-r1 |
| Chainguard | bank-vaults | 0 | 1.20.4-r23 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r19 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r23 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r19 |
| Chainguard | bazelisk | 0 | 1.25.0-r1 |
| Chainguard | bazelisk-default | 0 | 1.25.0-r1 |
| Chainguard | beats-7 | 0 | 7.17.27-r1 |
| Chainguard | beats-8 | 0 | 8.17.1-r0 |
| Chainguard | beats-fips-7 | 0 | 7.17.27-r1 |
| Chainguard | beats-fips-8 | 0 | 8.17.1-r0 |
| Chainguard | bom | 0 | 0.6.0-r15 |
| Chainguard | boring-registry | 0 | 0.15.5-r1 |
| Chainguard | boring-registry-fips | 0 | 0.15.5-r1 |
| Chainguard | buildkitd-fips | 0 | 0.19.0-r0 |
| Chainguard | cadvisor | 0 | 0.51.0-r3 |
| Chainguard | cadvisor-fips | 0 | 0.50.0-r4 |
| Chainguard | calico-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-3.29 | 0 | 3.29.1-r4 |
| Chainguard | calico-apiserver-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-apiserver-compat-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-compat-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-apiserver-compat-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-app-policy-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-app-policy-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-app-policy-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-app-policy-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-cni-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-cni-compat-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-compat-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-cni-compat-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-compat-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-cni-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-felix-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-felix-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-felix-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-felix-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-fips-3.28 | 0 | 3.28.2-r5 |
| Chainguard | calico-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-key-cert-provisioner-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-key-cert-provisioner-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-kube-controllers-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-kube-controllers-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-kube-controllers-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-kube-controllers-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-node-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-node-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-node-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-node-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-pod2daemon-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-pod2daemon-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-pod2daemon-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-pod2daemon-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-pod2daemon-flexvol-compat-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-pod2daemon-flexvol-compat-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-pod2daemon-flexvol-compat-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typha-client-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typha-client-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-typha-client-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typha-client-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-typhad-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typhad-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-typhad-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typhad-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calicoctl-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calicoctl-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calicoctl-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calicoctl-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | capslock | 0 | 0.2.7-r1 |
| Chainguard | cass-operator | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-compat-fips | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-fips | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-fips-no-pvc-delete | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-fips-no-pvc-delete-compat | 0 | 1.23.0-r2 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.15 | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-acmesolver | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-cainjector | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-controller | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-startupapicheck | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-webhook | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.16 | 0 | 1.16.3-r1 |
| Chainguard | cert-manager-acmesolver-1.12 | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-acmesolver-1.12-bitnami-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-acmesolver-1.12-iamguarded-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-acmesolver-1.15 | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-acmesolver-1.15-bitnami-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-acmesolver-1.15-iamguarded-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-acmesolver-fips-1.16 | 0 | 1.16.3-r1 |
| Chainguard | cert-manager-cainjector-1.12 | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-cainjector-1.12-bitnami-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-cainjector-1.12-iamguarded-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-cainjector-1.15 | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-cainjector-1.15-bitnami-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-cainjector-1.15-iamguarded-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-cainjector-fips-1.16 | 0 | 1.16.3-r1 |
| Chainguard | cert-manager-cmctl | 0 | 2.1.1-r4 |
Related vulnerabilities
- CVE-2025-68121 During session resumption in crypto/tls, if the underlying Config has its ClientCAs or… Also affects stdlib
- CVE-2025-22873 It was possible to improperly access the parent directory of an os.Root by opening a… Also affects stdlib
- GO-2026-4403 Improper access to parent directory of root in os Also affects stdlib
- CVE-2025-61726 The net/url package does not set a limit on the number of query parameters in a query. Also affects stdlib
- CVE-2025-61728 archive/zip uses a super-linear file name indexing algorithm that is invoked the first… Also affects stdlib
- CVE-2025-61730 During the TLS 1.3 handshake if multiple messages are sent in records that span… Also affects stdlib
- CVE-2025-61727 An excluded subdomain constraint in a certificate chain does not restrict the usage of… Also affects stdlib
- CVE-2025-61729 Within HostnameError.Error(), when constructing an error string, there is no limit to the… Also affects stdlib