Cloudanix VulnDB

CVE-2025-5889

Low · 3.1

CVSS

3.1

EPSS

0.6%

Published

Jun 9, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A software component used to process pattern text can be forced to work too hard, potentially slowing or disrupting affected services until it is updated.

Exploitation
Remote Authenticated
Attacker needs
Low Privilege
Complexity
High
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This is a denial-of-service weakness in the brace-expansion JavaScript package's expand logic in index.js. Maliciously crafted brace patterns can trigger inefficient regular-expression or parsing behavior, causing excessive CPU consumption and event-loop blocking in Node.js processes that pass attacker-controlled input to brace expansion. The impact is limited to availability; the issue does not directly provide code execution, data theft, or privilege escalation. Exploitation is considered difficult and high-complexity because an attacker must reach an application path that invokes brace expansion with controllable input and provide input that meaningfully amplifies processing cost.

Why it matters to the business

Applications, build tools, developer platforms, CI/CD systems, file-matching services, or APIs that process user-controlled glob or brace patterns through affected versions may experience slowdowns, request timeouts, degraded service quality, or partial outages. Because brace-expansion is commonly pulled in transitively by JavaScript tooling, exposure may exist even when the package is not used directly. Risk is moderated by the low CVSS score, low EPSS probability, lack of KEV listing, no known ransomware association, and high exploitation complexity, but the issue should still be remediated through dependency updates because public exploit details are available and the package is widely reusable across Node.js ecosystems.

How an attack unfolds

An attacker first identifies an application feature that accepts pattern-like input, such as file globs, include or exclude filters, search masks, archive paths, repository tooling parameters, or build configuration fields. If that input is passed into an affected brace-expansion version, the attacker submits a specially crafted brace expression designed to maximize expansion or regular-expression processing cost. The vulnerable expand function then spends disproportionate CPU time parsing or expanding the pattern, which can block the Node.js event loop or slow worker processes. Repeated submissions may cause sustained latency, failed requests, autoscaling pressure, or service unavailability. The attacker generally does not gain access to data or execution control; the objective is resource exhaustion.

How to fix it

Upgrade brace-expansion to a fixed version appropriate for the major release line: 1.1.12, 2.0.2, 3.0.1, or 4.0.1. For source-based deployments of juliangruber/brace-expansion, ensure the repository includes the fixed commit c85b8ad3f53d1eb65f4996a495cae61949855f7c or an equivalent patched release. For Chainguard kapp-fips, upgrade to 0.64.0-r1 or later. Because this package is often transitive, update package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, and container image dependencies, then rebuild and redeploy artifacts. If immediate upgrade is not possible, reduce exposure by rejecting or length-limiting untrusted brace/glob patterns, bounding expansion counts, applying request timeouts, rate-limiting pattern-processing endpoints, isolating pattern processing in worker processes, and monitoring CPU saturation in Node.js services.

How to confirm the fix worked

Confirm that dependency inventory and software composition analysis no longer report brace-expansion versions 1.1.11 or earlier in the 1.x line, 2.0.1 or earlier in the 2.x line, 3.0.0 or earlier in the 3.x line, or 4.0.0 or earlier in the 4.x line. Validate fixed package versions using package manager commands such as npm ls brace-expansion, yarn why brace-expansion, pnpm why brace-expansion, or SBOM/container scans. Confirm kapp-fips images or packages are at 0.64.0-r1 or later where applicable. Exercise application features that accept pattern syntax with normal and intentionally large inputs to verify that requests are bounded by input validation, timeout controls, and acceptable CPU behavior. Rebuild and redeploy from clean dependency locks so older transitive copies are not retained in shipped artifacts.

Typical attack path

  1. Discover an externally reachable or authenticated feature that accepts glob, brace, path-pattern, or filter syntax.
  2. Confirm that submitted patterns are processed by JavaScript tooling or application code that depends on brace-expansion.
  3. Craft a complex brace expression intended to trigger inefficient expansion or regex complexity in the vulnerable expand function.
  4. Submit the payload to the vulnerable endpoint, job, build, or processing workflow.
  5. Repeat or parallelize requests to consume CPU, block the Node.js event loop, and cause timeouts or degraded availability.

How to detect it

There are no reliable universal indicators proving exploitation because successful abuse primarily appears as resource exhaustion rather than a unique file, process, or network artifact. Review application access logs, API gateway logs, reverse proxy logs, job queue records, build-system logs, and Node.js application logs for requests or job parameters containing unusually long or deeply nested brace expressions, especially if they correlate with HTTP 408, 429, 500, 502, 503, or 504 responses, request timeouts, elevated CPU, event-loop lag, worker restarts, or container OOM/restart events. Focus on endpoints or workflows that accept file globs, include/exclude patterns, search masks, repository paths, archive filters, or build configuration. Compare suspicious activity against process metrics from APM, Kubernetes events, container runtime logs, and host telemetry to identify short periods of high CPU in node processes without corresponding traffic volume increases. For exposure detection, use SBOM and dependency scans to locate vulnerable brace-expansion versions in application bundles and container images.

What your security team should do

  • Inventory all JavaScript, Node.js, container, and CI/CD artifacts for affected brace-expansion versions, including transitive dependencies.
  • Prioritize remediation for internet-facing services, authenticated multi-tenant features, developer portals, build systems, and APIs that accept user-controlled glob, brace, or path-pattern input.
  • Upgrade to brace-expansion 1.1.12, 2.0.2, 3.0.1, or 4.0.1, and upgrade Chainguard kapp-fips to 0.64.0-r1 or later where present.
  • Regenerate lockfiles and rebuild containers or serverless packages to ensure vulnerable nested copies are removed.
  • Add input length limits, expansion limits, request timeouts, and rate limits around any feature that processes user-provided pattern syntax.
  • Search historical logs for abnormal bursts of complex brace-pattern inputs correlated with CPU spikes, timeouts, or Node.js event-loop lag.
  • Treat this as a moderate-priority availability issue rather than an emergency remote-code-execution event, unless exposed business-critical services process untrusted patterns at scale.

The record

A vulnerability was found in juliangruber brace-expansion up to 1.1.11/2.0.1/3.0.0/4.0.0. It has been rated as problematic. Affected by this issue is the function expand of the file index.js. The manipulation leads to inefficient regular expression complexity. The attack may be launched remotely. The complexity of an attack is rather high. The exploitation is known to be difficult. The exploit has been disclosed to the public and may be used. Upgrading to version 1.1.12, 2.0.2, 3.0.1 and 4.0.1 is able to address this issue. The name of the patch is a5b98a4f30d7813266b221435e1eaaf25a1b0ac5. It is recommended to upgrade the affected component.

Affected packages

Ecosystem Package Introduced Fixed
npm brace-expansion 1.0.0 1.1.12
npm brace-expansion 2.0.0 2.0.2
npm brace-expansion 3.0.0 No fix
npm brace-expansion 3.0.0 3.0.1
npm brace-expansion 4.0.0 No fix
npm brace-expansion 4.0.0 4.0.1
Chainguard arangodb-3.11 0 3.11.14-r3
Chainguard arangodb-3.11-compat 0 3.11.14-r3
Chainguard arangodb-3.12 0 3.12.5-r1
Chainguard arangodb-3.12-compat 0 3.12.5-r1
Chainguard argo-workflow-cli 0 3.6.10-r1
Chainguard argo-workflow-controller 0 3.6.10-r1
Chainguard argo-workflow-controller-compat 0 3.6.10-r1
Chainguard argo-workflow-executor 0 3.6.10-r1
Chainguard argo-workflow-executor-compat 0 3.6.10-r1
Chainguard argo-workflows 0 3.6.10-r1
Chainguard argo-workflows-known-hosts 0 3.6.10-r1
Chainguard argo-workflows-ui 0 3.6.10-r1
Chainguard code-server 0 4.100.3-r1
Chainguard code-server-compat 0 4.100.3-r1
Chainguard emsdk 0 5.0.0-r1
Chainguard eslint 0 9.29.0-r0
Chainguard foxx-cli 0 2.1.1-r1
Chainguard graalvm-23 0 23.0.2-r3
Chainguard graalvm-23-ce 0 23.0.2-r3
Chainguard graalvm-23-ce-dbg 0 23.0.2-r3
Chainguard graalvm-23-ce-default-jdk 0 23.0.2-r3
Chainguard graalvm-23-ce-jmods 0 23.0.2-r3
Chainguard graalvm-23-ce-nodejs 0 23.0.2-r3
Chainguard graalvm-23-ce-nodejs-dbg 0 23.0.2-r3
Chainguard graalvm-23-ce-nodejs-default-jdk 0 23.0.2-r3
Chainguard graalvm-23-ce-nodejs-jmods 0 23.0.2-r3
Chainguard graalvm-23-dbg 0 23.0.2-r3
Chainguard graalvm-23-default-jdk 0 23.0.2-r3
Chainguard graalvm-23-graalpy 0 23.0.2-r3
Chainguard graalvm-23-graalpy-venv 0 23.0.2-r3
Chainguard graalvm-23-jmods 0 23.0.2-r3
Chainguard graalvm-23-native-image-dev 0 23.0.2-r3
Chainguard graalvm-23-static 0 23.0.2-r3
Chainguard graalvm-23-truffleruby 0 23.0.2-r3
Chainguard graalvm-24 0 24.0.1-r2
Chainguard graalvm-24-ce 0 24.0.1-r2
Chainguard graalvm-24-ce-dbg 0 24.0.1-r2
Chainguard graalvm-24-ce-default-jdk 0 24.0.1-r2
Chainguard graalvm-24-ce-jmods 0 24.0.1-r2
Chainguard graalvm-24-ce-nodejs 0 24.0.1-r2
Chainguard graalvm-24-ce-nodejs-dbg 0 24.0.1-r2
Chainguard graalvm-24-ce-nodejs-default-jdk 0 24.0.1-r2
Chainguard graalvm-24-ce-nodejs-jmods 0 24.0.1-r2
Chainguard graalvm-24-graalpy 0 24.0.1-r2
Chainguard graalvm-24-graalpy-venv 0 24.0.1-r2
Chainguard graalvm-24-truffleruby 0 24.0.1-r2
Chainguard kibana-7 0 7.17.28-r45
Chainguard kibana-7-bitnami 0 7.17.28-r45
Chainguard kibana-8 0 8.18.2-r3
Chainguard kibana-8-bitnami 0 8.18.2-r3
Chainguard kibana-8-iamguarded 0 8.18.2-r3
Chainguard kibana-9 0 9.0.2-r3
Chainguard kibana-9-bitnami 0 9.0.2-r3
Chainguard kibana-9-iamguarded 0 9.0.2-r3
Chainguard kubeflow-centraldashboard 0 1.10.0-r1
Chainguard kubeflow-pipelines 0 2.5.0-r3
Chainguard kubeflow-pipelines-apiserver 0 2.5.0-r3
Chainguard kubeflow-pipelines-cache-deployer 0 2.5.0-r3
Chainguard kubeflow-pipelines-cache-deployer-compat 0 2.5.0-r3
Chainguard kubeflow-pipelines-cache_server 0 2.5.0-r3
Chainguard kubeflow-pipelines-frontend 0 2.5.0-r3
Chainguard kubeflow-pipelines-metadata-envoy-config 0 2.5.0-r3
Chainguard kubeflow-pipelines-metadata-writer 0 2.5.0-r3
Chainguard kubeflow-pipelines-metadata-writer-compat 0 2.5.0-r3
Chainguard kubeflow-pipelines-persistence_agent 0 2.5.0-r3
Chainguard kubeflow-pipelines-scheduledworkflow 0 2.5.0-r3
Chainguard kubeflow-pipelines-viewer-crd-controller 0 2.5.0-r3
Chainguard lerna 0 8.2.2-r2
Chainguard node-gyp 0 11.3.0-r0
Chainguard npm 0 11.4.2-r0
Chainguard npm-10.8.2 0 10.8.2-r4
Chainguard npm-doc 0 11.4.2-r0
Chainguard opensearch-dashboards-2 0 2.19.2-r2
Chainguard opensearch-dashboards-2-alerting-dashboards-plugin 0 2.19.2-r2
Chainguard opensearch-dashboards-2-anomaly-detection-dashboards-plugin 0 2.19.2-r2
Chainguard opensearch-dashboards-2-compat 0 2.19.2-r2
Chainguard opensearch-dashboards-2-config 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-maps 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-notifications 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-observability 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-query-workbench 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-reporting 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-search-relevance 0 2.19.2-r2
Chainguard opensearch-dashboards-2-dashboards-visualizations 0 2.19.2-r2
Chainguard opensearch-dashboards-2-fips 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-alerting-dashboards-plugin 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-anomaly-detection-dashboards-plugin 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-config 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-maps 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-notifications 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-observability 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-query-workbench 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-reporting 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-search-relevance 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-dashboards-visualizations 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-index-management-dashboards-plugin 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-ml-commons-dashboards 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-security-analytics-dashboards-plugin 0 2.19.2-r1
Chainguard opensearch-dashboards-2-fips-security-dashboards-plugin 0 2.19.2-r1
Chainguard opensearch-dashboards-2-index-management-dashboards-plugin 0 2.19.2-r2
Chainguard opensearch-dashboards-2-ml-commons-dashboards 0 2.19.2-r2
Chainguard opensearch-dashboards-2-security-analytics-dashboards-plugin 0 2.19.2-r2
Chainguard opensearch-dashboards-2-security-dashboards-plugin 0 2.19.2-r2
Chainguard opensearch-dashboards-3 0 3.0.0-r1
Chainguard opensearch-dashboards-3-alerting-dashboards-plugin 0 3.0.0-r1
Chainguard opensearch-dashboards-3-anomaly-detection-dashboards-plugin 0 3.0.0-r1
Chainguard opensearch-dashboards-3-config 0 3.0.0-r1
Chainguard opensearch-dashboards-3-dashboards-maps 0 3.0.0-r1
Chainguard opensearch-dashboards-3-dashboards-notifications 0 3.0.0-r1
Chainguard opensearch-dashboards-3-dashboards-observability 0 3.0.0-r1
Chainguard opensearch-dashboards-3-dashboards-query-workbench 0 3.0.0-r1
Chainguard opensearch-dashboards-3-dashboards-reporting 0 3.0.0-r1
Chainguard opensearch-dashboards-3-dashboards-search-relevance 0 3.0.0-r1
Chainguard opensearch-dashboards-3-fips-anomaly-detection-dashboards-plugin 0 3.5.0-r4
Chainguard opensearch-dashboards-3-fips-dashboards-observability 0 3.5.0-r4
Chainguard opensearch-dashboards-3-fips-dashboards-query-workbench 0 3.5.0-r4
Chainguard opensearch-dashboards-3-fips-dashboards-search-relevance 0 3.5.0-r4
Chainguard opensearch-dashboards-3-fips-security-analytics-dashboards-plugin 0 3.5.0-r4
Chainguard opensearch-dashboards-3-index-management-dashboards-plugin 0 3.0.0-r1
Chainguard opensearch-dashboards-3-ml-commons-dashboards 0 3.0.0-r1
Chainguard opensearch-dashboards-3-security-analytics-dashboards-plugin 0 3.0.0-r1
Chainguard opensearch-dashboards-3-security-dashboards-plugin 0 3.0.0-r1
Chainguard prism 0 5.14.2-r2
Chainguard pulumi 0 3.176.0-r0
Chainguard pulumi-language-go 0 3.176.0-r0
Chainguard pulumi-language-nodejs 0 3.176.0-r0
Chainguard pulumi-language-python 0 3.176.0-r0
Chainguard rancher-api-ui 0 1.2.3-r1
Chainguard renovate 0 40.51.0-r0
Chainguard sqlpad 0 7.5.4-r0
Chainguard sqlpad-compat 0 7.5.4-r0
Chainguard tileserver-gl 0 5.3.1-r4
Chainguard tileserver-gl-compat 0 5.3.1-r4
Chainguard tileserver-gl-fips 0 5.3.1-r3
Chainguard tileserver-gl-fips-compat 0 5.3.1-r3
Chainguard vitess-20-binaries 0 20.0.8-r8
Chainguard vitess-20-compat 0 20.0.8-r8
Chainguard vitess-21-binaries 0 21.0.6-r0
Chainguard vitess-21-compat 0 21.0.6-r0
Chainguard vitess-22 0 22.0.3-r0
Chainguard vitess-22-binaries 0 22.0.2-r0
Chainguard vitess-22-compat 0 22.0.2-r0
Chainguard vitess-23 0 23.0.1-r0
Chainguard vitess-23-binaries 0 23.0.0-r2
Chainguard vitess-23-compat 0 23.0.0-r2
Debian:11 node-brace-expansion 0 No fix
Debian:12 node-brace-expansion 0 No fix
Debian:13 node-brace-expansion 0 No fix
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS python-pytest 0 8.3.5-150400.3.9.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS python-pytest-cov 0 6.2.1-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS python-pytest-mock 0 3.14.0-150400.13.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS python-pytest 0 8.3.5-150400.3.9.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS python-pytest-cov 0 6.2.1-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS python-pytest-mock 0 3.14.0-150400.13.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS python-pytest 0 8.3.5-150400.3.9.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS python-pytest-cov 0 6.2.1-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS python-pytest-mock 0 3.14.0-150400.13.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS python-pytest 0 8.3.5-150400.3.9.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS python-pytest-cov 0 6.2.1-150400.12.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS python-pytest-mock 0 3.14.0-150400.13.6.1
SUSE:Linux Enterprise Module for Package Hub 15 SP6 python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP4 aws-cli 0 1.33.26-150400.34.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP4 python-boto3 0 1.34.138-150400.27.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP4 python-botocore 0 1.34.144-150400.41.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 aws-cli 0 1.33.26-150400.34.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 python-boto3 0 1.34.138-150400.27.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 python-botocore 0 1.34.144-150400.41.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 aws-cli 0 1.33.26-150400.34.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 python-boto3 0 1.34.138-150400.27.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 python-botocore 0 1.34.144-150400.41.7.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 aws-cli 0 1.33.26-150400.34.7.1
SUSE:Linux Enterprise Module for Python 3 15 SP6 python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise Module for Python 3 15 SP6 python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise Module for Python 3 15 SP6 python-pytest 0 8.3.5-150400.3.9.1
SUSE:Linux Enterprise Module for Python 3 15 SP6 python-pytest-cov 0 6.2.1-150400.12.6.1
SUSE:Linux Enterprise Module for Python 3 15 SP6 python-pytest-mock 0 3.14.0-150400.13.6.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-boto3 0 1.34.138-150400.27.7.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-botocore 0 1.34.144-150400.41.7.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-pytest 0 8.3.5-150400.3.9.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-pytest-cov 0 6.2.1-150400.12.6.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-pytest-mock 0 3.14.0-150400.13.6.1
SUSE:Linux Enterprise Server 15 SP4-LTSS python-coverage 0 7.6.10-150400.12.6.1
SUSE:Linux Enterprise Server 15 SP4-LTSS python-pluggy 0 1.5.0-150400.14.10.1
SUSE:Linux Enterprise Server 15 SP4-LTSS python-pytest 0 8.3.5-150400.3.9.1

Related vulnerabilities