Cloudanix VulnDB

CVE-2025-29786

High · 7.5

CVSS

7.5

EPSS

0.6%

Published

Mar 17, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A missing size check lets anyone send an extremely long calculation string that can crash the application by using up all available memory.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Trivial
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Unbounded expression input causes the parser to build an arbitrarily large AST, exhausting memory and triggering an OOM crash of the host process.

Why it matters to the business

Applications that accept user-controlled expressions without length limits can be forced offline, producing service outages and requiring manual restarts or scaling events.

How an attack unfolds

An attacker submits a single, extremely long expression string to any endpoint that invokes the Expr parser without prior size validation; the parser allocates nodes for every token until memory is exhausted and the process terminates.

How to fix it

Upgrade expr-lang/expr to version 1.17.0 or later (commit 3be6386f86a53e713a5b083e33582d94710653cc) which enforces compile-time node and memory budgets. Until the upgrade is complete, enforce an explicit maximum expression length (for example 4 KB) and reject or truncate longer inputs before parsing.

How to confirm the fix worked

After upgrade, attempt to compile an expression exceeding the new node budget and confirm the parser returns a controlled error instead of consuming unbounded memory; monitor process RSS and restart behavior under load tests with large inputs.

Typical attack path

  1. Identify an application endpoint or API that passes untrusted strings to Expr.Eval or Compile
  2. Craft or generate an expression whose length exceeds any implicit limits (tens or hundreds of megabytes)
  3. Send the oversized expression in a single request
  4. Observe process crash or memory-pressure alerts confirming resource exhaustion

How to detect it

Search application and web-server logs for unusually long request bodies or query parameters containing expression syntax; correlate with sudden memory spikes or OOM termination events in process monitors.

What your security team should do

  • Immediately add input-length validation (maximum 4 KB or equivalent node count) to every call site that invokes the Expr parser
  • Upgrade all instances of expr-lang/expr to 1.17.0 or newer within the next sprint
  • Add memory-usage and OOM-kill alerts for processes that embed the Expr library
  • Review downstream dependents to determine breadth of exposure across the ecosystem

The record

Expr is an expression language and expression evaluation for Go. Prior to version 1.17.0, if the Expr expression parser is given an unbounded input string, it will attempt to compile the entire string and generate an Abstract Syntax Tree (AST) node for each part of the expression. In scenarios where input size isn’t limited, a malicious or inadvertent extremely large expression can consume excessive memory as the parser builds a huge AST. This can ultimately lead to*excessive memory usage and an Out-Of-Memory (OOM) crash of the process. This issue is relatively uncommon and will only manifest when there are no restrictions on the input size, i.e. the expression length is allowed to grow arbitrarily large. In typical use cases where inputs are bounded or validated, this problem would not occur. The problem has been patched in the latest versions of the Expr library. The fix introduces compile-time limits on the number of AST nodes and memory usage during parsing, preventing any single expression from exhausting resources. Users should upgrade to Expr version 1.17.0 or later, as this release includes the new node budget and memory limit safeguards. Upgrading to v1.17.0 ensures that extremely deep or large expressions are detected and safely aborted during compilation, avoiding the OOM condition. For users who cannot immediately upgrade, the recommended workaround is to impose an input size restriction before parsing. In practice, this means validating or limiting the length of expression strings that your application will accept. For example, set a maximum allowable number of characters (or nodes) for any expression and reject or truncate inputs that exceed this limit. By ensuring no unbounded-length expression is ever fed into the parser, one can prevent the parser from constructing a pathologically large AST and avoid potential memory exhaustion. In short, pre-validate and cap input size as a safeguard in the absence of the patch.

Affected packages

Ecosystem Package Introduced Fixed
Go github.com/expr-lang/expr 0 1.17.0
Chainguard amazon-cloudwatch-agent 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-all 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard-fips 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-compat 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-config-downloader 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-config-downloader-fips 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-config-translator 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-config-translator-fips 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-fips 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-start-amazon-cloudwatch-agent 0 1.300053.1-r1
Chainguard amazon-cloudwatch-agent-start-amazon-cloudwatch-agent-fips 0 1.300053.1-r1
Chainguard argo-cd-2.13 0 2.13.5-r8
Chainguard argo-cd-2.13-compat 0 2.13.5-r8
Chainguard argo-cd-2.13-repo-server 0 2.13.5-r8
Chainguard argo-cd-2.14 0 2.14.5-r4
Chainguard argo-cd-2.14-compat 0 2.14.5-r4
Chainguard argo-cd-2.14-repo-server 0 2.14.5-r4
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.13 0 2.13.5-r7
Chainguard argo-cd-fips-2.13-compat 0 2.13.5-r7
Chainguard argo-cd-fips-2.13-repo-server 0 2.13.5-r7
Chainguard argo-cd-fips-2.14 0 2.14.7-r0
Chainguard argo-cd-fips-2.14-compat 0 2.14.7-r0
Chainguard argo-cd-fips-2.14-repo-server 0 2.14.7-r0
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-rollouts 0 1.9.0-r1
Chainguard argo-rollouts-fips 0 1.9.0-r1
Chainguard argo-workflow-cli 0 3.6.5-r2
Chainguard argo-workflow-cli-fips 0 3.6.5-r2
Chainguard argo-workflow-controller 0 3.6.5-r2
Chainguard argo-workflow-controller-compat 0 3.6.5-r2
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.5-r2
Chainguard argo-workflow-executor-compat 0 3.6.5-r2
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.5-r2
Chainguard argo-workflows-fips 0 3.6.5-r2
Chainguard argo-workflows-known-hosts 0 3.6.5-r2
Chainguard argo-workflows-known-hosts-fips 0 3.6.5-r2
Chainguard argo-workflows-ui 0 3.6.5-r2
Chainguard coredns 0 1.12.0-r9
Chainguard coredns-compat 0 1.12.0-r9
Chainguard coredns-fips 0 1.12.0-r9
Chainguard eks-distro-1.29 0 1.29.34-r1
Chainguard eks-distro-1.30 0 1.30.27-r2
Chainguard eks-distro-1.31 0 1.31.16-r1
Chainguard eks-distro-1.32 0 1.32.8-r1
Chainguard eks-distro-coredns-1.29 0 1.29.34-r1
Chainguard eks-distro-coredns-1.30 0 1.30.27-r2
Chainguard eks-distro-coredns-1.31 0 1.31.16-r1
Chainguard eks-distro-coredns-1.32 0 1.32.8-r1
Chainguard eks-distro-coredns-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-coredns-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-coredns-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-coredns-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-apiserver-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-apiserver-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-apiserver-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-apiserver-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-apiserver-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-apiserver-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-apiserver-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-apiserver-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-controller-manager-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-controller-manager-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-controller-manager-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-controller-manager-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-controller-manager-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-controller-manager-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-controller-manager-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-controller-manager-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-proxy-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-proxy-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-proxy-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-proxy-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-proxy-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-proxy-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-proxy-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-proxy-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-scheduler-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-scheduler-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-scheduler-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-scheduler-1.32 0 1.32.8-r1
Chainguard eks-distro-kube-scheduler-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kube-scheduler-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kube-scheduler-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kube-scheduler-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-attacher-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-attacher-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-attacher-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-attacher-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-attacher-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-attacher-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-attacher-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-attacher-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-provisioner-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-provisioner-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-provisioner-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-provisioner-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-provisioner-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-provisioner-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-provisioner-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-provisioner-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-resizer-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-resizer-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-resizer-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-resizer-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-resizer-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-resizer-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-resizer-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-resizer-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-controller-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-validation-webhook-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-validation-webhook-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-snapshot-validation-webhook-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-validation-webhook-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-snapshot-validation-webhook-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-snapshot-validation-webhook-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-snapshotter-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-snapshotter-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-snapshotter-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-snapshotter-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-external-snapshotter-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-external-snapshotter-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-external-snapshotter-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-external-snapshotter-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-livenessprobe-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-livenessprobe-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-livenessprobe-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-livenessprobe-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-livenessprobe-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-livenessprobe-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-livenessprobe-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-livenessprobe-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-fips-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-fips-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-fips-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-csi-node-driver-registrar-fips-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-pause-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-pause-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-pause-1.31 0 1.31.16-r1
Chainguard eks-distro-kubernetes-pause-1.32 0 1.32.8-r1
Chainguard eks-distro-kubernetes-pause-compat-1.29 0 1.29.34-r1
Chainguard eks-distro-kubernetes-pause-compat-1.30 0 1.30.27-r2
Chainguard eks-distro-kubernetes-pause-compat-1.31 0 1.31.16-r1
Chainguard elastic-agent-fips 0 8.17.3-r4
Chainguard grafana-alloy 0 1.7.4-r2
Chainguard grafana-alloy-compat 0 1.7.4-r2
Chainguard grafana-alloy-fips 0 1.7.4-r2
Chainguard k8sgpt 0 0.4.1-r1
Chainguard kargo 0 1.3.1-r3
Chainguard kargo-oci-compat 0 1.3.1-r3
Chainguard keda-2.14 0 2.14.1-r14
Chainguard keda-2.14-adapter 0 2.14.1-r14
Chainguard keda-2.14-admission-webhooks 0 2.14.1-r14
Chainguard keda-2.14-compat 0 2.14.1-r14
Chainguard keda-2.14-metrics-apiserver 0 2.14.1-r14
Chainguard keda-2.15 0 2.15.1-r14
Chainguard keda-2.15-adapter 0 2.15.1-r14
Chainguard keda-2.15-admission-webhooks 0 2.15.1-r14
Chainguard keda-2.15-compat 0 2.15.1-r14
Chainguard keda-2.15-metrics-apiserver 0 2.15.1-r14
Chainguard keda-2.16 0 2.16.1-r8
Chainguard keda-2.16-admission-webhooks 0 2.16.1-r8
Chainguard keda-2.16-compat 0 2.16.1-r8
Chainguard keda-2.16-metrics-apiserver 0 2.16.1-r8
Chainguard keda-adapter-fips 0 2.16.1-r7
Chainguard keda-admission-webhooks-fips 0 2.16.1-r7
Chainguard keda-fips 0 2.16.1-r7
Chainguard keda-metrics-apiserver-fips 0 2.16.1-r7
Chainguard kubectl-argo-rollouts 0 1.9.0-r1
Chainguard kubectl-argo-rollouts-fips 0 1.9.0-r1
Chainguard kubeflow-pipelines 0 2.4.0-r9
Chainguard kubeflow-pipelines-apiserver 0 2.4.0-r9
Chainguard kubeflow-pipelines-cache-deployer 0 2.4.0-r9

Related vulnerabilities