CVE-2025-22872
Medium · 6.5CVSS
6.5
EPSS
0.5%
Published
Apr 16, 2025
CISA due date
—
Cloudanix analysis
A parsing error in certain git tools on Red Hat Enterprise Linux 9 can cause web content with unusual tags to be handled incorrectly, which may affect how some applications display or process that content until the packages are updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The tokenizer misclassifies tags with unquoted attribute values ending in / as self-closing; when Parse functions are used this places subsequent content in the wrong DOM scope, but only inside foreign content such as <math> or <svg> contexts.
Why it matters to the business
Applications that rely on the affected git packages for HTML or SVG processing may render or handle web content incorrectly, creating operational risk in environments that process untrusted markup through these tools; the long period since disclosure increases exposure window for organizations still running older RHEL 9 git packages.
How an attack unfolds
An attacker supplies specially crafted markup containing a tag with an unquoted attribute ending in / inside an SVG or MathML fragment; the tokenizer marks the tag self-closing, causing later content to be placed in the wrong scope during DOM construction and potentially altering application behavior that consumes the parsed tree.
How to fix it
Upgrade every listed package to the exact fixed version 0:2.39.3-1.el9_2 (or later) on Red Hat Enterprise Linux 9; verify the new packages are installed with rpm -q and restart any services or processes that load the git libraries.
How to confirm the fix worked
Confirm installed package versions match or exceed the fixed releases, then run regression tests that exercise HTML parsing of foreign-content tags with unquoted attributes ending in / to ensure correct self-closing behavior and DOM scope.
Typical attack path
- Identify an application or workflow that uses the vulnerable git packages to parse foreign-content HTML/SVG/MathML
- Craft a tag with an unquoted attribute value terminated by / inside the foreign-content section
- Feed the markup through Tokenizer or Parse functions
- Observe or trigger incorrect DOM scope assignment that leads to unexpected processing or output
How to detect it
Search application and system logs for parsing of foreign-content markup, review any custom code paths that call Tokenizer or Parse on untrusted input, and examine audit trails for unexpected DOM output or rendering anomalies after markup ingestion.
What your security team should do
- Immediately schedule the listed git package upgrades across all RHEL 9 systems
- Add the fixed package versions to patch-automation and image-building pipelines
- Scan build and runtime environments for any older git package versions still present
- Review custom tooling that invokes git's HTML parsing paths for additional hardening opportunities
The record
The tokenizer incorrectly interprets tags with unquoted attribute values that end with a solidus character (/) as self-closing. When directly using Tokenizer, this can result in such tags incorrectly being marked as self-closing, and when using the Parse functions, this can result in content following such tags as being placed in the wrong scope during DOM construction, but only when tags are in foreign content (e.g. <math>, <svg>, etc contexts).
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | golang.org/x/net | 0 | 0.38.0 |
| Chainguard | aactl | 0 | 0.4.12-r31 |
| Chainguard | actions-runner-controller | 0 | 0.11.0-r2 |
| Chainguard | actions-runner-controller-compat | 0 | 0.11.0-r2 |
| Chainguard | actions-runner-controller-fips | 0 | 0.11.0-r2 |
| Chainguard | actions-runner-controller-fips-compat | 0 | 0.11.0-r2 |
| Chainguard | addon-resizer | 0 | 1.8.23-r5 |
| Chainguard | addon-resizer-compat | 0 | 1.8.23-r5 |
| Chainguard | addon-resizer-fips | 0 | 1.8.23-r5 |
| Chainguard | addon-resizer-fips-compat | 0 | 1.8.23-r5 |
| Chainguard | amass | 0 | 4.2.0-r23 |
| Chainguard | amazon-cloudwatch-agent | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-all | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard-fips | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-compat | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-downloader | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-downloader-fips | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-translator | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-translator-fips | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-fips | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-operator | 0 | 2.2.0-r4 |
| Chainguard | amazon-cloudwatch-agent-operator-compat | 0 | 2.2.0-r4 |
| Chainguard | amazon-cloudwatch-agent-operator-fips | 0 | 2.2.0-r4 |
| Chainguard | amazon-cloudwatch-agent-operator-fips-compat | 0 | 2.2.0-r4 |
| Chainguard | amazon-cloudwatch-agent-start-amazon-cloudwatch-agent | 0 | 1.300055.0-r1 |
| Chainguard | amazon-cloudwatch-agent-start-amazon-cloudwatch-agent-fips | 0 | 1.300055.0-r1 |
| Chainguard | amazon-eks-ami | 0 | 20250403-r1 |
| Chainguard | amazon-k8s-cni | 0 | 1.19.3-r4 |
| Chainguard | amazon-k8s-cni-compat | 0 | 1.19.3-r4 |
| Chainguard | amazon-k8s-cni-fips | 0 | 1.19.3-r6 |
| Chainguard | amazon-k8s-cni-init | 0 | 1.19.3-r4 |
| Chainguard | amazon-k8s-cni-init-compat | 0 | 1.19.3-r4 |
| Chainguard | amazon-k8s-cni-init-fips | 0 | 1.19.3-r6 |
| Chainguard | amazon-k8s-cni-init-fips-compat | 0 | 1.19.3-r6 |
| Chainguard | amazon-ssm-agent | 0 | 3.3.2299.0-r1 |
| Chainguard | amazon-ssm-agent-ecs-exec | 0 | 3.3.2299.0-r1 |
| Chainguard | ansible-operator | 0 | 1.37.2-r3 |
| Chainguard | ansible-operator-compat | 0 | 1.37.2-r3 |
| Chainguard | apache-beam-python-3.11-sdk | 0 | 2.64.0-r2 |
| Chainguard | apm-server | 0 | 9.0.0-r1 |
| Chainguard | apm-server-compat | 0 | 9.0.0-r1 |
| Chainguard | apm-server-fips | 0 | 8.17.4-r2 |
| Chainguard | argo-cd-2.10 | 0 | 2.10.18-r15 |
| Chainguard | argo-cd-2.10-compat | 0 | 2.10.18-r15 |
| Chainguard | argo-cd-2.10-repo-server | 0 | 2.10.18-r15 |
| Chainguard | argo-cd-2.11 | 0 | 2.11.13-r8 |
| Chainguard | argo-cd-2.11-compat | 0 | 2.11.13-r8 |
| Chainguard | argo-cd-2.11-repo-server | 0 | 2.11.13-r8 |
| Chainguard | argo-cd-2.12 | 0 | 2.12.12-r2 |
| Chainguard | argo-cd-2.12-compat | 0 | 2.12.12-r2 |
| Chainguard | argo-cd-2.12-repo-server | 0 | 2.12.12-r2 |
| Chainguard | argo-cd-2.13 | 0 | 2.13.7-r2 |
| Chainguard | argo-cd-2.13-compat | 0 | 2.13.7-r2 |
| Chainguard | argo-cd-2.13-repo-server | 0 | 2.13.7-r2 |
| Chainguard | argo-cd-2.14 | 0 | 2.14.10-r2 |
| Chainguard | argo-cd-2.14-compat | 0 | 2.14.10-r2 |
| Chainguard | argo-cd-2.14-repo-server | 0 | 2.14.10-r2 |
| Chainguard | argo-cd-3.0 | 0 | 3.0.0-r2 |
| Chainguard | argo-cd-3.0-compat | 0 | 3.0.0-r2 |
| Chainguard | argo-cd-3.0-iamguarded-compat | 0 | 3.0.0-r2 |
| Chainguard | argo-cd-3.0-repo-server | 0 | 3.0.0-r2 |
| Chainguard | argo-cd-fips-2.10 | 0 | 2.10.18-r13 |
| Chainguard | argo-cd-fips-2.10-compat | 0 | 2.10.18-r13 |
| Chainguard | argo-cd-fips-2.10-repo-server | 0 | 2.10.18-r13 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.12-r2 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.12-r2 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.12-r2 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.7-r2 |
| Chainguard | argo-cd-fips-2.13-compat | 0 | 2.13.7-r2 |
| Chainguard | argo-cd-fips-2.13-repo-server | 0 | 2.13.7-r2 |
| Chainguard | argo-cd-fips-2.14 | 0 | 2.14.10-r2 |
| Chainguard | argo-cd-fips-2.14-compat | 0 | 2.14.10-r2 |
| Chainguard | argo-cd-fips-2.14-repo-server | 0 | 2.14.10-r2 |
| Chainguard | argo-cd-fips-3.0 | 0 | 3.0.0-r1 |
| Chainguard | argo-cd-fips-3.0-compat | 0 | 3.0.0-r1 |
| Chainguard | argo-cd-fips-3.0-iamguarded-compat | 0 | 3.0.0-r1 |
| Chainguard | argo-cd-fips-3.0-repo-server | 0 | 3.0.0-r1 |
| Chainguard | argo-events | 0 | 1.9.6-r1 |
| Chainguard | argo-events-compat | 0 | 1.9.6-r1 |
| Chainguard | argo-events-fips | 0 | 1.9.6-r1 |
| Chainguard | argo-events-fips-compat | 0 | 1.9.6-r1 |
| Chainguard | argo-rollouts | 0 | 1.8.2-r2 |
| Chainguard | argo-rollouts-compat | 0 | 1.8.2-r2 |
| Chainguard | argo-rollouts-fips | 0 | 1.8.2-r3 |
| Chainguard | argo-workflow-cli | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-cli-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-controller | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-controller-compat-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-controller-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-executor | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-executor-compat-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflow-executor-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflows | 0 | 3.6.5-r5 |
| Chainguard | argo-workflows-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.5-r5 |
| Chainguard | argo-workflows-known-hosts-fips | 0 | 3.6.5-r5 |
| Chainguard | argo-workflows-ui | 0 | 3.6.5-r5 |
| Chainguard | argocd-image-updater | 0 | 0.16.0-r2 |
| Chainguard | argocd-image-updater-compat | 0 | 0.16.0-r2 |
| Chainguard | argocd-image-updater-fips | 0 | 0.16.0-r3 |
| Chainguard | atlantis | 0 | 0.34.0-r1 |
| Chainguard | atlantis-fips | 0 | 0.34.0-r1 |
| Chainguard | authservice | 0 | 1.0.4-r7 |
| Chainguard | authservice-compat | 0 | 1.0.4-r7 |
| Chainguard | authservice-fips | 0 | 1.0.4-r7 |
| Chainguard | authservice-fips-compat | 0 | 1.0.4-r7 |
| Chainguard | aws-application-networking-k8s | 0 | 1.1.0-r7 |
| Chainguard | aws-application-networking-k8s-compat | 0 | 1.1.0-r7 |
| Chainguard | aws-application-networking-k8s-fips | 0 | 1.1.0-r2 |
| Chainguard | aws-application-networking-k8s-fips-compat | 0 | 1.1.0-r2 |
| Chainguard | aws-ebs-csi-driver | 0 | 1.42.0-r0 |
| Chainguard | aws-efs-csi-driver | 0 | 2.1.7-r2 |
| Chainguard | aws-efs-csi-driver-fips | 0 | 2.1.7-r2 |
| Chainguard | aws-iam-authenticator | 0 | 0.6.31-r1 |
| Chainguard | aws-load-balancer-controller | 0 | 2.12.0-r3 |
| Chainguard | aws-load-balancer-controller-compat | 0 | 2.12.0-r3 |
| Chainguard | aws-load-balancer-controller-fips | 0 | 2.12.0-r3 |
| Chainguard | aws-network-policy-agent | 0 | 1.2.0-r3 |
| Chainguard | aws-network-policy-agent-compat | 0 | 1.2.0-r3 |
| Chainguard | aws-network-policy-agent-compat-fips | 0 | 1.2.0-r1 |
| Chainguard | aws-network-policy-agent-fips | 0 | 1.2.0-r1 |
| Chainguard | aws-privateca-issuer | 0 | 1.4.1-r4 |
| Chainguard | aws-privateca-issuer-compat | 0 | 1.4.1-r4 |
| Chainguard | aws-privateca-issuer-compat-fips | 0 | 1.4.1-r4 |
| Chainguard | aws-privateca-issuer-fips | 0 | 1.4.1-r4 |
| Chainguard | aws-s3-controller | 0 | 1.0.28-r2 |
| Chainguard | aws-s3-controller-compat | 0 | 1.0.28-r2 |
| Chainguard | azcopy | 0 | 10.28.1-r2 |
| Chainguard | azcopy-fips | 0 | 10.28.1-r2 |
| Chainguard | azure-aad-pod-identity-mic | 0 | 1.8.17-r23 |
| Chainguard | azure-aad-pod-identity-nmi | 0 | 1.8.17-r23 |
| Chainguard | azure-service-operator | 0 | 2.12.0-r3 |
| Chainguard | azure-service-operator-compat | 0 | 2.12.0-r3 |
| Chainguard | azure-service-operator-fips | 0 | 2.12.0-r2 |
| Chainguard | azure-workload-identity-webhook | 0 | 1.5.0-r2 |
| Chainguard | azure-workload-identity-webhook-compat | 0 | 1.5.0-r2 |
| Chainguard | azuredisk-csi-1.28 | 0 | 1.28.12-r2 |
| Chainguard | azuredisk-csi-1.28-compat | 0 | 1.28.12-r2 |
| Chainguard | azuredisk-csi-1.29 | 0 | 1.29.14-r2 |
| Chainguard | azuredisk-csi-1.29-compat | 0 | 1.29.14-r2 |
| Chainguard | azuredisk-csi-1.30 | 0 | 1.30.11-r2 |
| Chainguard | azuredisk-csi-1.30-compat | 0 | 1.30.11-r2 |
| Chainguard | azuredisk-csi-1.31 | 0 | 1.31.7-r1 |
| Chainguard | azuredisk-csi-1.31-compat | 0 | 1.31.7-r1 |
| Chainguard | azuredisk-csi-fips-1.28 | 0 | 1.28.12-r2 |
| Chainguard | azuredisk-csi-fips-1.29 | 0 | 1.29.14-r2 |
| Chainguard | azuredisk-csi-fips-1.30 | 0 | 1.30.11-r2 |
| Chainguard | azurefile-csi-1.32 | 0 | 1.32.1-r1 |
| Chainguard | azurefile-csi-1.32-compat | 0 | 1.32.1-r1 |
| Chainguard | bank-vaults | 0 | 1.20.4-r30 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r27 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r30 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r27 |
| Chainguard | blob-csi-1.24 | 0 | 1.24.9-r2 |
| Chainguard | blob-csi-1.24-compat | 0 | 1.24.9-r2 |
| Chainguard | blob-csi-1.25 | 0 | 1.25.5-r2 |
| Chainguard | blob-csi-1.25-compat | 0 | 1.25.5-r2 |
| Chainguard | blob-csi-1.26 | 0 | 1.26.2-r2 |
| Chainguard | blob-csi-1.26-compat | 0 | 1.26.2-r2 |
| Chainguard | blob-csi-fips-1.23 | 0 | 1.23.11-r2 |
| Chainguard | blob-csi-fips-1.23-compat | 0 | 1.23.11-r2 |
| Chainguard | bom | 0 | 0.6.0-r20 |
| Chainguard | buildah | 0 | 1.39.4-r2 |
| Chainguard | caddy | 0 | 2.9.1-r9 |
| Chainguard | caddy-fips | 0 | 2.10.0-r0 |
| Chainguard | caddy-man | 0 | 2.9.1-r9 |
| Chainguard | caddy-man | 0 | 2.10.0-r0 |
| Chainguard | caddy-src | 0 | 2.9.1-r9 |
| Chainguard | cadvisor | 0 | 0.52.1-r5 |
| Chainguard | cadvisor-compat | 0 | 0.52.1-r5 |
| Chainguard | cadvisor-fips | 0 | 0.52.1-r4 |
| Chainguard | cass-operator | 0 | 1.23.2-r2 |
| Chainguard | cass-operator-compat | 0 | 1.23.2-r2 |
| Chainguard | cass-operator-compat-fips | 0 | 1.23.2-r2 |
| Chainguard | cass-operator-config | 0 | 1.23.2-r2 |
| Chainguard | cass-operator-fips | 0 | 1.23.2-r2 |
| Chainguard | cass-operator-fips-no-pvc-delete | 0 | 1.23.2-r2 |
| Chainguard | cass-operator-fips-no-pvc-delete-compat | 0 | 1.23.2-r2 |
| Chainguard | cert-exporter | 0 | 2.14.0-r11 |
| Chainguard | cert-exporter-fips | 0 | 2.14.0-r11 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.16-r9 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.16-r9 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.16-r9 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.16-r9 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.16-r9 |
| Chainguard | cert-manager-1.15 | 0 | 1.15.5-r42 |
| Chainguard | cert-manager-1.15-acmesolver | 0 | 1.15.5-r42 |
| Chainguard | cert-manager-1.15-cainjector | 0 | 1.15.5-r42 |
| Chainguard | cert-manager-1.15-controller | 0 | 1.15.5-r42 |
| Chainguard | cert-manager-1.15-startupapicheck | 0 | 1.15.5-r42 |
| Chainguard | cert-manager-1.15-webhook | 0 | 1.15.5-r42 |
| Chainguard | cert-manager-1.16 | 0 | 1.16.4-r9 |
| Chainguard | cert-manager-1.16-acmesolver | 0 | 1.16.4-r9 |
| Chainguard | cert-manager-1.16-cainjector | 0 | 1.16.4-r9 |
| Chainguard | cert-manager-1.16-controller | 0 | 1.16.4-r9 |
| Chainguard | cert-manager-1.16-startupapicheck | 0 | 1.16.4-r9 |
| Chainguard | cert-manager-1.16-webhook | 0 | 1.16.4-r9 |
Related vulnerabilities
- CVE-2026-27141 Due to missing nil check, sending 0x0a-0x0f HTTP/2 frames will cause a running server to… Also affects golang.org/x/net
- CVE-2025-58190 The html.Parse function in golang.org/x/net/html has an infinite parsing loop when… Also affects golang.org/x/net
- CVE-2025-47911 The html.Parse function in golang.org/x/net/html has quadratic parsing complexity when… Also affects golang.org/x/net
- CVE-2025-22870 Matching of hosts against proxy patterns can improperly treat an IPv6 zone ID as a… Also affects golang.org/x/net
- CVE-2024-45338 An attacker can craft an input to the Parse functions that would be processed… Also affects golang.org/x/net
- CVE-2023-45288 An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by… Also affects golang.org/x/net
- CVE-2023-44487 The HTTP/2 protocol allows a denial of service (server resource consumption) because… Also affects golang.org/x/net
- CVE-2026-33186 gRPC-Go is the Go language implementation of gRPC. Also affects aactl