CVE-2025-27144
NoneCVSS
—
EPSS
0.4%
Published
Feb 24, 2025
CISA due date
—
Cloudanix analysis
A library used to handle signed and encrypted tokens can be overwhelmed by specially crafted input, causing the programs that depend on it to run out of memory and stop working.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The library uses strings.Split on untrusted compact JWS/JWE input, allocating memory proportional to the number of dot characters; a token containing thousands of dots exhausts available memory and triggers a denial of service.
Why it matters to the business
Applications that accept JWTs or JWE tokens from untrusted sources can be forced offline, causing service outages and loss of availability for any system relying on this library.
How an attack unfolds
An attacker crafts a compact serialization containing an extremely large number of dot separators, submits it to any endpoint that passes the value to Go JOSE's Parse or Decrypt functions, and repeats the request to drive memory consumption until the process terminates or becomes unresponsive.
How to fix it
Upgrade go-jose/go-jose to commit 99b346cec4e86d102284642c5dcbe9bb0cacfc22 (version 4.0.5 or later). As an immediate mitigation, add an input check that rejects any token containing more than a small fixed number of '.' characters before it reaches the library.
How to confirm the fix worked
Confirm the running binary or module version reports a commit at or after 99b346cec4e86d102284642c5dcbe9bb0cacfc22; re-test with a token containing 10 000 dots and verify that memory usage remains bounded and no crash occurs.
Typical attack path
- Locate an HTTP or API endpoint that accepts JWT/JWE tokens without prior validation.
- Generate a compact token string consisting of a valid header and payload separated by thousands of '.' characters.
- Send the malformed token in an authentication or decryption request.
- Repeat the request at a rate sufficient to exhaust server memory before garbage collection can reclaim it.
How to detect it
Inspect application logs and request logs for tokens containing unusually high dot counts; correlate with memory-usage spikes or OOM events on the process; look for repeated requests from the same source containing long sequences of '.' characters.
What your security team should do
- Upgrade all instances of go-jose/go-jose to the fixed commit within the next maintenance window.
- Add a lightweight pre-validation filter that limits the number of '.' characters in any incoming token.
- Review other JWT-processing libraries in the environment for similar unbounded-split patterns.
- Monitor memory and request-rate metrics on services that accept JWTs to detect anomalous spikes.
The record
Go JOSE provides an implementation of the Javascript Object Signing and Encryption set of standards in Go, including support for JSON Web Encryption (JWE), JSON Web Signature (JWS), and JSON Web Token (JWT) standards. In versions on the 4.x branch prior to version 4.0.5, when parsing compact JWS or JWE input, Go JOSE could use excessive memory. The code used strings.Split(token, ".") to split JWT tokens, which is vulnerable to excessive memory consumption when processing maliciously crafted tokens with a large number of `.` characters. An attacker could exploit this by sending numerous malformed tokens, leading to memory exhaustion and a Denial of Service. Version 4.0.5 fixes this issue. As a workaround, applications could pre-validate that payloads passed to Go JOSE do not contain an excessive number of `.` characters.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/go-jose/go-jose | 0 | No fix |
| Go | github.com/go-jose/go-jose | 0 | 3.0.4 |
| Go | github.com/go-jose/go-jose/v3 | 0 | 3.0.4 |
| Go | github.com/go-jose/go-jose/v4 | 0 | 4.0.5 |
| Go | github.com/square/go-jose | 0 | No fix |
| AlmaLinux:10 | buildah | 0 | 2:1.39.4-1.el10_0 |
| AlmaLinux:10 | buildah-tests | 0 | 2:1.39.4-1.el10_0 |
| AlmaLinux:10 | osbuild-composer | 0 | 134.1-3.el10_0.alma.1 |
| AlmaLinux:10 | osbuild-composer-core | 0 | 134.1-3.el10_0.alma.1 |
| AlmaLinux:10 | osbuild-composer-worker | 0 | 134.1-3.el10_0.alma.1 |
| AlmaLinux:10 | podman | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | podman-docker | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | podman-remote | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | podman-tests | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | skopeo | 0 | 2:1.18.1-1.el10_0 |
| AlmaLinux:10 | skopeo-tests | 0 | 2:1.18.1-1.el10_0 |
| AlmaLinux:9 | buildah | 0 | 2:1.39.4-1.el9_6 |
| AlmaLinux:9 | buildah-tests | 0 | 2:1.39.4-1.el9_6 |
| AlmaLinux:9 | skopeo | 0 | 2:1.18.1-1.el9_6 |
| AlmaLinux:9 | skopeo-tests | 0 | 2:1.18.1-1.el9_6 |
| Chainguard | aactl | 0 | 0.4.12-r25 |
| Chainguard | apko | 0 | 0.25.1-r2 |
| Chainguard | argo-cd-2.10 | 0 | 2.10.18-r9 |
| Chainguard | argo-cd-2.10-compat | 0 | 2.10.18-r9 |
| Chainguard | argo-cd-2.10-repo-server | 0 | 2.10.18-r9 |
| Chainguard | argo-cd-2.11 | 0 | 2.11.13-r2 |
| Chainguard | argo-cd-2.11-compat | 0 | 2.11.13-r2 |
| Chainguard | argo-cd-2.11-repo-server | 0 | 2.11.13-r2 |
| Chainguard | argo-cd-2.12 | 0 | 2.12.10-r3 |
| Chainguard | argo-cd-2.12-compat | 0 | 2.12.10-r3 |
| Chainguard | argo-cd-2.12-repo-server | 0 | 2.12.10-r3 |
| Chainguard | argo-cd-2.13 | 0 | 2.13.5-r3 |
| Chainguard | argo-cd-2.13-compat | 0 | 2.13.5-r3 |
| Chainguard | argo-cd-2.13-repo-server | 0 | 2.13.5-r3 |
| Chainguard | argo-cd-2.14 | 0 | 2.14.2-r2 |
| Chainguard | argo-cd-2.14-compat | 0 | 2.14.2-r2 |
| Chainguard | argo-cd-2.14-repo-server | 0 | 2.14.2-r2 |
| Chainguard | argo-cd-fips-2.10 | 0 | 2.10.18-r7 |
| Chainguard | argo-cd-fips-2.10-compat | 0 | 2.10.18-r7 |
| Chainguard | argo-cd-fips-2.10-repo-server | 0 | 2.10.18-r7 |
| Chainguard | argo-cd-fips-2.11 | 0 | 2.11.13-r2 |
| Chainguard | argo-cd-fips-2.11-compat | 0 | 2.11.13-r2 |
| Chainguard | argo-cd-fips-2.11-repo-server | 0 | 2.11.13-r2 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.10-r3 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.10-r3 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.10-r3 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.5-r2 |
| Chainguard | argo-cd-fips-2.13-compat | 0 | 2.13.5-r2 |
| Chainguard | argo-cd-fips-2.13-repo-server | 0 | 2.13.5-r2 |
| Chainguard | argo-cd-fips-2.14 | 0 | 2.14.2-r2 |
| Chainguard | argo-cd-fips-2.14-compat | 0 | 2.14.2-r2 |
| Chainguard | argo-cd-fips-2.14-repo-server | 0 | 2.14.2-r2 |
| Chainguard | argo-workflow-cli | 0 | 3.6.4-r1 |
| Chainguard | argo-workflow-cli-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller | 0 | 3.6.4-r1 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.4-r1 |
| Chainguard | argo-workflow-controller-compat-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor | 0 | 3.6.4-r1 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.4-r1 |
| Chainguard | argo-workflow-executor-compat-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows | 0 | 3.6.4-r1 |
| Chainguard | argo-workflows-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.4-r1 |
| Chainguard | argo-workflows-known-hosts-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-ui | 0 | 3.6.4-r1 |
| Chainguard | argocd-image-updater | 0 | 0.15.2-r5 |
| Chainguard | argocd-image-updater-compat | 0 | 0.15.2-r5 |
| Chainguard | argocd-image-updater-fips | 0 | 0.15.2-r4 |
| Chainguard | bank-vaults | 0 | 1.20.4-r25 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r21 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r25 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r21 |
| Chainguard | boring-registry | 0 | 0.16.3-r1 |
| Chainguard | boring-registry-fips | 0 | 0.16.0-r2 |
| Chainguard | buildah | 0 | 1.39.0-r2 |
| Chainguard | caddy | 0 | 2.9.1-r5 |
| Chainguard | caddy-fips | 0 | 2.9.1-r5 |
| Chainguard | caddy-man | 0 | 2.9.1-r5 |
| Chainguard | caddy-src | 0 | 2.9.1-r5 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-1.16 | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-1.16-acmesolver | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-1.16-cainjector | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-1.16-controller | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-1.16-startupapicheck | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-1.16-webhook | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-acmesolver-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-acmesolver-1.12-bitnami-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-acmesolver-1.12-iamguarded-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-acmesolver-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-acmesolver-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-acmesolver-1.16 | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-acmesolver-1.16-bitnami-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-acmesolver-1.16-iamguarded-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-acmesolver-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-acmesolver-1.17-bitnami-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-acmesolver-1.17-iamguarded-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-acmesolver-fips-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-acmesolver-fips-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-acmesolver-fips-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-acmesolver-fips-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-cainjector-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-cainjector-1.12-bitnami-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-cainjector-1.12-iamguarded-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-cainjector-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-cainjector-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-cainjector-1.16 | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-cainjector-1.16-bitnami-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-cainjector-1.16-iamguarded-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-cainjector-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-cainjector-1.17-bitnami-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-cainjector-1.17-iamguarded-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-cainjector-fips-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-cainjector-fips-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-cainjector-fips-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-cainjector-fips-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-controller-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-controller-1.12-bitnami-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-controller-1.12-iamguarded-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-controller-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-controller-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-controller-1.16 | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-controller-1.16-bitnami-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-controller-1.16-iamguarded-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-controller-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-controller-1.17-bitnami-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-controller-1.17-iamguarded-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-controller-fips-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-controller-fips-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-controller-fips-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-controller-fips-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-fips-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-fips-1.12-acmesolver | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-fips-1.12-cainjector | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-fips-1.12-cmctl | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-fips-1.12-controller | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-fips-1.12-webhook | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-fips-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-fips-1.15-acmesolver | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-fips-1.15-cainjector | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-fips-1.15-controller | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-fips-1.15-startupapicheck | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-fips-1.15-webhook | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-fips-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-fips-1.16-acmesolver | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-fips-1.16-cainjector | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-fips-1.16-controller | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-fips-1.16-startupapicheck | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-fips-1.16-webhook | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-fips-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-istio-csr | 0 | 0.14.0-r2 |
| Chainguard | cert-manager-istio-csr-compat | 0 | 0.14.0-r2 |
| Chainguard | cert-manager-startupapicheck-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-startupapicheck-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-startupapicheck-1.16 | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-startupapicheck-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-startupapicheck-fips-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-startupapicheck-fips-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-startupapicheck-fips-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-webhook-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-webhook-1.12-bitnami-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-webhook-1.12-iamguarded-compat | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-webhook-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-webhook-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-webhook-1.16 | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-webhook-1.16-bitnami-compat | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-webhook-1.16-iamguarded-compat | 0 | 1.16.5-r6 |
| Chainguard | cert-manager-webhook-1.17 | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-webhook-1.17-bitnami-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-webhook-1.17-iamguarded-compat | 0 | 1.17.1-r1 |
| Chainguard | cert-manager-webhook-fips-1.12 | 0 | 1.12.16-r1 |
| Chainguard | cert-manager-webhook-fips-1.15 | 0 | 1.15.5-r3 |
| Chainguard | cert-manager-webhook-fips-1.16 | 0 | 1.16.4-r1 |
| Chainguard | cert-manager-webhook-fips-1.17 | 0 | 1.17.1-r1 |
| Chainguard | chainctl | 0 | 0.2.59-r0 |
| Chainguard | cilium-1.14 | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-clustermesh-apiserver | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-container-init | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-container-init-compat | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-hubble-relay | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-iptables | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-operator-aws | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.14-operator-generic | 0 | 1.14.19-r2 |
| Chainguard | cilium-1.15 | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-clustermesh-apiserver | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-container-init | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-container-init-compat | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-hubble-relay | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-iptables | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-operator-aws | 0 | 1.15.19-r3 |
| Chainguard | cilium-1.15-operator-generic | 0 | 1.15.19-r3 |
Related vulnerabilities
- CVE-2025-47913 SSH clients receiving SSH_AGENT_SUCCESS when expecting a typed response will panic and… Also affects buildah
- CVE-2025-52881 runc container escape and denial of service due to arbitrary write gadgets and procfs… Also affects buildah
- CVE-2025-22871 The net/http package improperly accepts a bare LF as a line terminator in chunked data… Also affects buildah
- CVE-2025-47907 Cancelling a query (e.g. Also affects podman
- CVE-2025-22869 SSH servers which implement file transfer protocols are vulnerable to a denial of service… Also affects podman
- CVE-2024-9341 A flaw was found in Go. Also affects buildah
- CVE-2024-34156 Calling Decoder.Decode on a message which contains deeply nested structures can cause a… Also affects buildah
- CVE-2024-34158 Calling Parse on a "// +build" build tag line with deeply nested expressions can cause a… Also affects buildah