CVE-2025-30204
High · 7.5CVSS
7.5
EPSS
0.8%
Published
Mar 21, 2025
CISA due date
—
Cloudanix analysis
A token-handling component in some applications can be overwhelmed by specially crafted web requests, potentially causing those applications to slow down or stop working.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Trivial
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
The parse.ParseUnverified function splits untrusted input on periods via strings.Split, resulting in O(n) allocations proportional to input length when the Authorization header contains many period characters.
Why it matters to the business
Applications relying on this library for token handling can suffer denial of service through memory exhaustion, disrupting authentication flows and service availability; although published over a year ago with low exploit probability and no ransomware usage, its presence in Debian packages and Go ecosystems creates ongoing exposure for dependent services.
How an attack unfolds
An attacker sends an HTTP request whose Authorization header begins with 'Bearer ' followed by a large number of '.' characters; when the target application invokes parse.ParseUnverified on this untrusted data, the library performs excessive allocations leading to resource exhaustion.
How to fix it
Upgrade golang-jwt to version 5.2.2 or 4.5.2; on Debian 13 systems install package version 6.12.3-1 or later.
How to confirm the fix worked
Confirm golang-jwt version meets or exceeds 5.2.2 / 4.5.2 (or Debian package 6.12.3-1); replay a test request with an Authorization header of several thousand periods and verify memory usage remains bounded.
Typical attack path
- Craft HTTP request containing 'Bearer ' followed by thousands of period characters in the Authorization header
- Target an endpoint that performs JWT parsing without prior verification
- Invoke ParseUnverified on the malicious header value
- Trigger O(n) memory allocations causing service degradation or crash
How to detect it
Search web-server and application logs for Authorization headers containing unusually long sequences of period characters; correlate spikes in memory consumption with authentication endpoints.
- Authorization: Bearer \.{1000,}
- strings containing repeated '.' characters in HTTP auth headers
- high allocation counts in jwt.ParseUnverified calls
What your security team should do
- Upgrade all instances of golang-jwt to a fixed version without delay
- Audit Go applications for direct or transitive use of the vulnerable library
- Add length limits or sanitization on incoming Authorization headers as a defense-in-depth measure
- Review memory and request-volume monitoring to detect similar resource-exhaustion attempts
The record
golang-jwt is a Go implementation of JSON Web Tokens. Starting in version 3.2.0 and prior to versions 5.2.2 and 4.5.2, the function parse.ParseUnverified splits (via a call to strings.Split) its argument (which is untrusted data) on periods. As a result, in the face of a malicious request whose Authorization header consists of Bearer followed by many period characters, a call to that function incurs allocations to the tune of O(n) bytes (where n stands for the length of the function's argument), with a constant factor of about 16. This issue is fixed in 5.2.2 and 4.5.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/golang-jwt/jwt | 0 | No fix |
| Go | github.com/golang-jwt/jwt | 3.2.0 | No fix |
| Go | github.com/golang-jwt/jwt/v4 | 0 | 4.5.2 |
| Go | github.com/golang-jwt/jwt/v5 | 5.0.0-rc.1 | 5.2.2 |
| AlmaLinux:10 | grafana | 0 | 10.2.6-15.el10_0 |
| AlmaLinux:10 | grafana-selinux | 0 | 10.2.6-15.el10_0 |
| AlmaLinux:8 | osbuild-composer | 0 | 101-3.el8_10.alma.1 |
| AlmaLinux:8 | osbuild-composer-core | 0 | 101-3.el8_10.alma.1 |
| AlmaLinux:8 | osbuild-composer-worker | 0 | 101-3.el8_10.alma.1 |
| AlmaLinux:9 | grafana | 0 | 10.2.6-9.el9_5 |
| AlmaLinux:9 | grafana | 0 | 10.2.6-11.el9_6 |
| AlmaLinux:9 | grafana-selinux | 0 | 10.2.6-9.el9_5 |
| AlmaLinux:9 | grafana-selinux | 0 | 10.2.6-11.el9_6 |
| AlmaLinux:9 | osbuild-composer | 0 | 118.2-1.el9_5.alma.1 |
| AlmaLinux:9 | osbuild-composer | 0 | 132.2-1.el9_6.alma.1 |
| AlmaLinux:9 | osbuild-composer-core | 0 | 118.2-1.el9_5.alma.1 |
| AlmaLinux:9 | osbuild-composer-core | 0 | 132.2-1.el9_6.alma.1 |
| AlmaLinux:9 | osbuild-composer-worker | 0 | 118.2-1.el9_5.alma.1 |
| AlmaLinux:9 | osbuild-composer-worker | 0 | 132.2-1.el9_6.alma.1 |
| Chainguard | aactl | 0 | 0.4.12-r29 |
| Chainguard | actions-runner-controller | 0 | 0.10.1-r7 |
| Chainguard | actions-runner-controller-compat | 0 | 0.10.1-r7 |
| Chainguard | actions-runner-controller-fips | 0 | 0.10.1-r7 |
| Chainguard | actions-runner-controller-fips-compat | 0 | 0.10.1-r7 |
| Chainguard | agentbeat-fips | 0 | 8.17.3-r4 |
| Chainguard | amazon-cloudwatch-agent | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-all | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard-fips | 0 | 1.300054.0-r3 |
| Chainguard | amazon-cloudwatch-agent-compat | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-config-downloader | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-config-downloader-fips | 0 | 1.300054.0-r3 |
| Chainguard | amazon-cloudwatch-agent-config-translator | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-config-translator-fips | 0 | 1.300054.0-r3 |
| Chainguard | amazon-cloudwatch-agent-fips | 0 | 1.300054.0-r3 |
| Chainguard | amazon-cloudwatch-agent-operator | 0 | 2.2.0-r2 |
| Chainguard | amazon-cloudwatch-agent-operator-compat | 0 | 2.2.0-r2 |
| Chainguard | amazon-cloudwatch-agent-operator-fips | 0 | 2.2.0-r2 |
| Chainguard | amazon-cloudwatch-agent-operator-fips-compat | 0 | 2.2.0-r2 |
| Chainguard | amazon-cloudwatch-agent-start-amazon-cloudwatch-agent | 0 | 1.300054.0-r2 |
| Chainguard | amazon-cloudwatch-agent-start-amazon-cloudwatch-agent-fips | 0 | 1.300054.0-r3 |
| Chainguard | argo-cd-2.10 | 0 | 2.10.18-r14 |
| Chainguard | argo-cd-2.10-compat | 0 | 2.10.18-r14 |
| Chainguard | argo-cd-2.10-repo-server | 0 | 2.10.18-r14 |
| Chainguard | argo-cd-2.11 | 0 | 2.11.13-r7 |
| Chainguard | argo-cd-2.11-compat | 0 | 2.11.13-r7 |
| Chainguard | argo-cd-2.11-repo-server | 0 | 2.11.13-r7 |
| Chainguard | argo-cd-2.12 | 0 | 2.12.10-r8 |
| Chainguard | argo-cd-2.12-compat | 0 | 2.12.10-r8 |
| Chainguard | argo-cd-2.12-repo-server | 0 | 2.12.10-r8 |
| Chainguard | argo-cd-2.13 | 0 | 0 |
| Chainguard | argo-cd-2.13 | 0 | 2.13.6-r1 |
| Chainguard | argo-cd-2.13-compat | 0 | 0 |
| Chainguard | argo-cd-2.13-compat | 0 | 2.13.6-r1 |
| Chainguard | argo-cd-2.13-repo-server | 0 | 0 |
| Chainguard | argo-cd-2.13-repo-server | 0 | 2.13.6-r1 |
| Chainguard | argo-cd-2.14 | 0 | 2.14.7-r1 |
| Chainguard | argo-cd-2.14-compat | 0 | 2.14.7-r1 |
| Chainguard | argo-cd-2.14-repo-server | 0 | 2.14.7-r1 |
| Chainguard | argo-cd-fips-2.11 | 0 | 2.11.13-r6 |
| Chainguard | argo-cd-fips-2.11-compat | 0 | 2.11.13-r6 |
| Chainguard | argo-cd-fips-2.11-repo-server | 0 | 2.11.13-r6 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.10-r8 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.10-r8 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.10-r8 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.5-r8 |
| Chainguard | argo-cd-fips-2.13 | 0 | 0 |
| Chainguard | argo-cd-fips-2.13-compat | 0 | 2.13.5-r8 |
| Chainguard | argo-cd-fips-2.13-compat | 0 | 0 |
| Chainguard | argo-cd-fips-2.13-repo-server | 0 | 2.13.5-r8 |
| Chainguard | argo-cd-fips-2.13-repo-server | 0 | 0 |
| Chainguard | argo-cd-fips-2.14 | 0 | 2.14.7-r2 |
| Chainguard | argo-cd-fips-2.14-compat | 0 | 2.14.7-r2 |
| Chainguard | argo-cd-fips-2.14-repo-server | 0 | 2.14.7-r2 |
| Chainguard | argo-events | 0 | 1.9.5-r7 |
| Chainguard | argo-events-compat | 0 | 1.9.5-r7 |
| Chainguard | argo-events-compat | 0 | 1.9.8-r0 |
| Chainguard | argo-events-fips | 0 | 0 |
| Chainguard | argo-events-fips | 0 | 1.9.5-r6 |
| Chainguard | argo-events-fips-compat | 0 | 0 |
| Chainguard | argo-events-fips-compat | 0 | 1.9.5-r6 |
| Chainguard | argo-rollouts | 0 | 1.8.2-r0 |
| Chainguard | argo-rollouts-compat | 0 | 1.8.2-r0 |
| Chainguard | argo-rollouts-fips | 0 | 1.8.2-r1 |
| Chainguard | argo-workflow-cli | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-cli-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-controller | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-controller-compat-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-controller-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-executor | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-executor-compat-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflow-executor-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflows | 0 | 3.6.5-r3 |
| Chainguard | argo-workflows-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.5-r3 |
| Chainguard | argo-workflows-known-hosts-fips | 0 | 3.6.5-r3 |
| Chainguard | argo-workflows-ui | 0 | 3.6.5-r3 |
| Chainguard | argocd-image-updater | 0 | 0.15.2-r9 |
| Chainguard | argocd-image-updater-compat | 0 | 0.15.2-r9 |
| Chainguard | argocd-image-updater-fips | 0 | 0.15.2-r7 |
| Chainguard | atlantis | 0 | 0.33.0-r5 |
| Chainguard | atlantis-fips | 0 | 0.33.0-r7 |
| Chainguard | auditbeat-8 | 0 | 8.17.3-r6 |
| Chainguard | auditbeat-8-oci-entrypoint | 0 | 8.17.3-r6 |
| Chainguard | auditbeat-fips-8 | 0 | 8.17.3-r5 |
| Chainguard | aws-eks-pod-identity-agent | 0 | 0.1.23-r1 |
| Chainguard | aws-eks-pod-identity-agent-compat | 0 | 0.1.23-r1 |
| Chainguard | aws-eks-pod-identity-agent-fips | 0 | 0.1.23-r1 |
| Chainguard | azcopy | 0 | 10.28.0-r5 |
| Chainguard | azcopy-fips | 0 | 10.28.0-r5 |
| Chainguard | azure-aad-pod-identity-mic | 0 | 1.8.17-r21 |
| Chainguard | azure-aad-pod-identity-nmi | 0 | 1.8.17-r21 |
| Chainguard | azuredisk-csi-1.28 | 0 | 1.28.11-r11 |
| Chainguard | azuredisk-csi-1.28-compat | 0 | 1.28.11-r11 |
| Chainguard | azuredisk-csi-1.29 | 0 | 1.29.13-r1 |
| Chainguard | azuredisk-csi-1.29-compat | 0 | 1.29.13-r1 |
| Chainguard | azuredisk-csi-1.30 | 0 | 1.30.9-r4 |
| Chainguard | azuredisk-csi-1.30-compat | 0 | 1.30.9-r4 |
| Chainguard | azuredisk-csi-1.31 | 0 | 1.31.5-r2 |
| Chainguard | azuredisk-csi-1.31-compat | 0 | 1.31.5-r2 |
| Chainguard | azuredisk-csi-fips-1.28 | 0 | 1.28.11-r10 |
| Chainguard | azuredisk-csi-fips-1.29 | 0 | 1.29.13-r1 |
| Chainguard | azuredisk-csi-fips-1.30 | 0 | 1.30.9-r4 |
| Chainguard | azuredisk-csi-fips-1.31 | 0 | 1.31.5-r2 |
| Chainguard | bank-vaults | 0 | 1.20.4-r28 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r25 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r28 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r25 |
| Chainguard | beats-8 | 0 | 8.17.3-r6 |
| Chainguard | beats-fips-8 | 0 | 8.17.3-r5 |
| Chainguard | boring-registry | 0 | 0.16.3-r2 |
| Chainguard | boring-registry-fips | 0 | 0.16.3-r2 |
| Chainguard | buildctl | 0 | 0.20.1-r4 |
| Chainguard | buildctl-fips | 0 | 0.20.1-r4 |
| Chainguard | buildkitd | 0 | 0.20.1-r4 |
| Chainguard | buildkitd-fips | 0 | 0.20.1-r4 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-1.16 | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-1.16-acmesolver | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-1.16-cainjector | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-1.16-controller | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-1.16-startupapicheck | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-1.16-webhook | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-1.17 | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-acmesolver-1.12 | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-acmesolver-1.12-bitnami-compat | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-acmesolver-1.12-iamguarded-compat | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-acmesolver-1.16 | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-acmesolver-1.16-bitnami-compat | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-acmesolver-1.16-iamguarded-compat | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-acmesolver-1.17 | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-acmesolver-1.17-bitnami-compat | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-acmesolver-1.17-iamguarded-compat | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-acmesolver-fips-1.12 | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-acmesolver-fips-1.16 | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-acmesolver-fips-1.17 | 0 | 1.17.1-r5 |
| Chainguard | cert-manager-cainjector-1.12 | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-cainjector-1.12-bitnami-compat | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-cainjector-1.12-iamguarded-compat | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-cainjector-1.16 | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-cainjector-1.16-bitnami-compat | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-cainjector-1.16-iamguarded-compat | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-cainjector-1.17 | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-cainjector-1.17-bitnami-compat | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-cainjector-1.17-iamguarded-compat | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-cainjector-fips-1.12 | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-cainjector-fips-1.16 | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-cainjector-fips-1.17 | 0 | 1.17.1-r5 |
| Chainguard | cert-manager-controller-1.12 | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-controller-1.12-bitnami-compat | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-controller-1.12-iamguarded-compat | 0 | 1.12.16-r7 |
| Chainguard | cert-manager-controller-1.16 | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-controller-1.16-bitnami-compat | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-controller-1.16-iamguarded-compat | 0 | 1.16.4-r7 |
| Chainguard | cert-manager-controller-1.17 | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-controller-1.17-bitnami-compat | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-controller-1.17-iamguarded-compat | 0 | 1.17.1-r6 |
| Chainguard | cert-manager-controller-fips-1.12 | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-controller-fips-1.16 | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-controller-fips-1.17 | 0 | 1.17.1-r5 |
| Chainguard | cert-manager-fips-1.12 | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-fips-1.12-acmesolver | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-fips-1.12-cainjector | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-fips-1.12-cmctl | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-fips-1.12-controller | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-fips-1.12-webhook | 0 | 1.12.16-r6 |
| Chainguard | cert-manager-fips-1.16 | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-fips-1.16-acmesolver | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-fips-1.16-cainjector | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-fips-1.16-controller | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-fips-1.16-startupapicheck | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-fips-1.16-webhook | 0 | 1.16.4-r4 |
| Chainguard | cert-manager-fips-1.17 | 0 | 1.17.1-r5 |
| Chainguard | cert-manager-startupapicheck-1.16 | 0 | 1.16.4-r7 |
Related vulnerabilities
- CVE-2024-51744 golang-jwt is a Go implementation of JSON Web Tokens. Also affects github.com/golang-jwt/jwt/v4
- CVE-2025-22871 The net/http package improperly accepts a bare LF as a line terminator in chunked data… Also affects grafana
- CVE-2024-34156 Calling Decoder.Decode on a message which contains deeply nested structures can cause a… Also affects osbuild-composer
- CVE-2025-4123 A cross-site scripting (XSS) vulnerability exists in Grafana caused by combining a client… Also affects grafana
- CVE-2024-47875 DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. Also affects grafana
- CVE-2024-24791 The net/http HTTP/1.1 client mishandled the case where a server responds to a request… Also affects grafana
- CVE-2024-24788 A malformed DNS message in response to a query can cause the Lookup functions to get… Also affects grafana
- CVE-2024-1313 It is possible for a user in a different organization from the owner of a snapshot to… Also affects grafana