CVE-2025-46569
NoneCVSS
—
EPSS
0.5%
Published
May 1, 2025
CISA due date
—
Cloudanix analysis
A bug in a popular policy engine lets attackers send tricky web requests that can make the engine give wrong access decisions or stop working entirely.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Application
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Crafted HTTP request paths to the Data API allow injection of arbitrary Rego code into dynamically constructed policy evaluation queries, enabling manipulation of query success/failure outcomes, oracle-style attacks, erroneous authorization decisions, or computationally expensive payloads that trigger denial of service.
Why it matters to the business
Organizations using OPA for authorization decisions face risks of policy bypass, incorrect access grants, or service outages; the widespread use of OPA in cloud-native and microservices environments amplifies potential blast radius if unpatched.
How an attack unfolds
An attacker with network access to the OPA Data API sends an HTTP request whose path is specially constructed to inject Rego code into the internal query; this injected code can force the evaluation to succeed or fail on demand, leak decision information via side channels, or consume excessive resources leading to DoS.
How to fix it
Upgrade Open Policy Agent to version 1.4.0 or later, which incorporates commit 8b0720247e65b97fe7715ca15682fee4040df4d1. As a temporary mitigation, restrict network access to OPA's REST APIs to localhost or trusted networks only.
How to confirm the fix worked
Verify OPA version is 1.4.0 or newer via the /v1/data or version endpoint; attempt previously successful injection paths to confirm they no longer alter evaluation results or cause excessive CPU usage.
Typical attack path
- Identify reachable OPA Data API endpoint
- Craft HTTP request path containing Rego injection payload
- Submit request to trigger policy evaluation
- Observe result to confirm success/failure manipulation or resource exhaustion
How to detect it
Inspect OPA server logs for unusually long or malformed paths in Data API requests; monitor for spikes in CPU or evaluation latency correlated with specific client IPs or request patterns.
What your security team should do
- Immediately upgrade all OPA instances to 1.4.0 or the commit 8b0720247e65b97fe7715ca15682fee4040df4d1
- Apply network segmentation or firewall rules to limit Data API exposure
- Review and harden Rego policies to minimize impact of evaluation manipulation
- Enable detailed request logging for OPA Data API paths
The record
Open Policy Agent (OPA) is an open source, general-purpose policy engine. Prior to version 1.4.0, when run as a server, OPA exposes an HTTP Data API for reading and writing documents. Requesting a virtual document through the Data API entails policy evaluation, where a Rego query containing a single data document reference is constructed from the requested path. This query is then used for policy evaluation. A HTTP request path can be crafted in a way that injects Rego code into the constructed query. The evaluation result cannot be made to return any other data than what is generated by the requested path, but this path can be misdirected, and the injected Rego code can be crafted to make the query succeed or fail; opening up for oracle attacks or, given the right circumstances, erroneous policy decision results. Furthermore, the injected code can be crafted to be computationally expensive, resulting in a Denial Of Service (DoS) attack. This issue has been patched in version 1.4.0. A workaround involves having network access to OPA’s RESTful APIs being limited to `localhost` and/or trusted networks, unless necessary for production reasons.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/open-policy-agent/opa | 0 | 1.4.0 |
| Go | github.com/open-policy-agent/opa/server | 0 | 1.4.0 |
| Go | github.com/open-policy-agent/opa/v1/server | 0 | 1.4.0 |
| Chainguard | cloudbeat | 0 | 9.0.0-r2 |
| Chainguard | cloudbeat-fips | 0 | 9.0.0-r2 |
| Chainguard | conftest | 0 | 0.59.0-r1 |
| Chainguard | conftest-fips | 0 | 0.59.0-r1 |
| Chainguard | cosign | 0 | 2.5.0-r1 |
| Chainguard | cosign-fips | 0 | 2.5.0-r2 |
| Chainguard | dapr-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-daprd-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-daprd-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-daprd-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-daprd-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-daprd-fips-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-daprd-fips-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-daprd-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-daprd-fips-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-fips-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-injector-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-injector-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-injector-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-injector-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-injector-fips-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-injector-fips-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-injector-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-injector-fips-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-operator-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-operator-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-operator-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-operator-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-operator-fips-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-operator-fips-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-operator-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-operator-fips-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-placement-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-placement-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-placement-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-placement-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-placement-fips-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-placement-fips-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-placement-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-placement-fips-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-scheduler-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-scheduler-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-scheduler-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-scheduler-fips-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-sentry-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-sentry-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-sentry-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-sentry-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | dapr-sentry-fips-1.13 | 0 | 1.13.6-r3 |
| Chainguard | dapr-sentry-fips-1.13-oci-compat | 0 | 1.13.6-r3 |
| Chainguard | dapr-sentry-fips-1.14 | 0 | 1.14.5-r3 |
| Chainguard | dapr-sentry-fips-1.14-oci-compat | 0 | 1.14.5-r3 |
| Chainguard | datadog-agent | 0 | 0 |
| Chainguard | datadog-agent-core-integrations | 0 | 0 |
| Chainguard | datadog-agent-core-integrations-fips | 0 | 0 |
| Chainguard | datadog-agent-fakeintake | 0 | 0 |
| Chainguard | datadog-agent-fakeintake-fips | 0 | 0 |
| Chainguard | datadog-agent-fips | 0 | 0 |
| Chainguard | datadog-agent-jmx | 0 | 0 |
| Chainguard | datadog-agent-jmx-fips | 0 | 0 |
| Chainguard | datadog-agent-oci-compat | 0 | 0 |
| Chainguard | datadog-agent-oci-compat-fips | 0 | 0 |
| Chainguard | datadog-agent-s6-overlay | 0 | 0 |
| Chainguard | datadog-agent-s6-overlay-fips | 0 | 0 |
| Chainguard | datadog-cluster-agent | 0 | 7.71.2-r3 |
| Chainguard | datadog-cluster-agent-fips | 0 | 0 |
| Chainguard | datadog-cluster-agent-oci-compat | 0 | 7.71.2-r3 |
| Chainguard | datadog-cluster-agent-oci-compat-fips | 0 | 0 |
| Chainguard | dogstatsd | 0 | 0 |
| Chainguard | elastic-agent | 0 | 0 |
| Chainguard | elastic-agent-fips | 0 | 0 |
| Chainguard | gatekeeper-3.16 | 0 | 3.16.3-r21 |
| Chainguard | gatekeeper-3.16-compat | 0 | 3.16.3-r21 |
| Chainguard | gatekeeper-3.16-crds | 0 | 3.16.3-r21 |
| Chainguard | gatekeeper-3.16-crds-compat | 0 | 3.16.3-r21 |
| Chainguard | gatekeeper-3.16-gator | 0 | 3.16.3-r21 |
| Chainguard | gatekeeper-3.17 | 0 | 3.17.2-r10 |
| Chainguard | gatekeeper-3.17-compat | 0 | 3.17.2-r10 |
| Chainguard | gatekeeper-3.17-crds | 0 | 3.17.2-r10 |
| Chainguard | gatekeeper-3.17-crds-compat | 0 | 3.17.2-r10 |
| Chainguard | gatekeeper-3.17-gator | 0 | 3.17.2-r10 |
| Chainguard | gatekeeper-3.18 | 0 | 3.18.3-r1 |
| Chainguard | gatekeeper-3.18-compat | 0 | 3.18.3-r1 |
| Chainguard | gatekeeper-3.18-crds | 0 | 3.18.3-r1 |
| Chainguard | gatekeeper-3.18-crds-compat | 0 | 3.18.3-r1 |
| Chainguard | gatekeeper-3.18-gator | 0 | 3.18.3-r1 |
| Chainguard | gatekeeper-fips-3.16 | 0 | 3.16.3-r14 |
| Chainguard | gatekeeper-fips-3.16-compat | 0 | 3.16.3-r14 |
| Chainguard | gatekeeper-fips-3.17 | 0 | 3.17.2-r9 |
| Chainguard | gatekeeper-fips-3.17-compat | 0 | 3.17.2-r9 |
| Chainguard | gatekeeper-fips-3.18 | 0 | 3.18.3-r1 |
| Chainguard | gatekeeper-fips-3.18-compat | 0 | 3.18.3-r1 |
| Chainguard | kots | 0 | 1.124.16-r1 |
| Chainguard | kots-compat | 0 | 1.124.16-r1 |
| Chainguard | kots-symlink-compat | 0 | 1.124.16-r1 |
| Chainguard | kubescape | 0 | 0 |
| Chainguard | kyverno-1.11 | 0 | 1.11.5-r20 |
| Chainguard | kyverno-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-1.13 | 0 | 1.13.5-r2 |
| Chainguard | kyverno-1.14 | 0 | 1.14.1-r3 |
| Chainguard | kyverno-background-controller-1.11 | 0 | 1.11.5-r20 |
| Chainguard | kyverno-background-controller-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-background-controller-1.13 | 0 | 1.13.5-r2 |
| Chainguard | kyverno-background-controller-1.14 | 0 | 1.14.1-r3 |
| Chainguard | kyverno-background-controller-fips-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-background-controller-fips-1.13 | 0 | 1.13.5-r1 |
| Chainguard | kyverno-background-controller-fips-1.14 | 0 | 1.14.1-r1 |
| Chainguard | kyverno-cleanup-controller-1.11 | 0 | 1.11.5-r20 |
| Chainguard | kyverno-cleanup-controller-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-cleanup-controller-1.13 | 0 | 1.13.5-r2 |
| Chainguard | kyverno-cleanup-controller-1.14 | 0 | 1.14.1-r3 |
| Chainguard | kyverno-cleanup-controller-fips-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-cleanup-controller-fips-1.13 | 0 | 1.13.5-r1 |
| Chainguard | kyverno-cleanup-controller-fips-1.14 | 0 | 1.14.1-r1 |
| Chainguard | kyverno-cli-1.11 | 0 | 1.11.5-r20 |
| Chainguard | kyverno-cli-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-cli-1.13 | 0 | 1.13.5-r2 |
| Chainguard | kyverno-cli-1.14 | 0 | 1.14.1-r3 |
| Chainguard | kyverno-cli-fips-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-cli-fips-1.13 | 0 | 1.13.5-r1 |
| Chainguard | kyverno-cli-fips-1.14 | 0 | 1.14.1-r1 |
| Chainguard | kyverno-fips-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-fips-1.13 | 0 | 1.13.5-r1 |
| Chainguard | kyverno-fips-1.14 | 0 | 1.14.1-r1 |
| Chainguard | kyverno-init-container-1.11 | 0 | 1.11.5-r20 |
| Chainguard | kyverno-init-container-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-init-container-1.13 | 0 | 1.13.5-r2 |
| Chainguard | kyverno-init-container-1.14 | 0 | 1.14.1-r3 |
| Chainguard | kyverno-init-container-fips-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-init-container-fips-1.13 | 0 | 1.13.5-r1 |
| Chainguard | kyverno-init-container-fips-1.14 | 0 | 1.14.1-r1 |
| Chainguard | kyverno-notation-aws | 0 | 1.1-r15 |
| Chainguard | kyverno-notation-aws-compat | 0 | 1.1-r15 |
| Chainguard | kyverno-notation-aws-fips | 0 | 1.1-r15 |
| Chainguard | kyverno-reports-controller-1.11 | 0 | 1.11.5-r20 |
| Chainguard | kyverno-reports-controller-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-reports-controller-1.13 | 0 | 1.13.5-r2 |
| Chainguard | kyverno-reports-controller-1.14 | 0 | 1.14.1-r3 |
| Chainguard | kyverno-reports-controller-fips-1.12 | 0 | 1.12.7-r13 |
| Chainguard | kyverno-reports-controller-fips-1.13 | 0 | 1.13.5-r1 |
| Chainguard | kyverno-reports-controller-fips-1.14 | 0 | 1.14.1-r1 |
| Chainguard | policy-controller | 0 | 0.12.1-r1 |
| Chainguard | policy-controller-fips | 0 | 0.12.1-r1 |
| Chainguard | policy-controller-tester | 0 | 0.12.1-r1 |
| Chainguard | policy-controller-tester-fips | 0 | 0.12.1-r1 |
| Chainguard | policy-controller-webhook | 0 | 0.12.1-r1 |
| Chainguard | snyk-cli | 0 | 0 |
| Chainguard | spire-agent | 0 | 1.12.0-r3 |
| Chainguard | spire-agent-fips | 0 | 1.12.0-r4 |
| Chainguard | spire-oidc-discovery-provider | 0 | 1.12.0-r3 |
| Chainguard | spire-oidc-discovery-provider-fips | 0 | 1.12.0-r4 |
| Chainguard | spire-server | 0 | 1.12.0-r3 |
| Chainguard | spire-server-fips | 0 | 1.12.0-r4 |
| Chainguard | tfsec | 0 | 1.28.14-r1 |
| Chainguard | trivy | 0 | 0.62.1-r0 |
| Chainguard | trivy-fips | 0 | 0.62.1-r0 |
| Chainguard | witness | 0 | 0.9.1-r1 |
| Chainguard | zarf | 0 | 0 |
| Chainguard | zot | 0 | 0 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Manager Proxy 4.3 | cosign | 0 | 2.5.3-150400.3.30.1 |
| SUSE:Manager Server 4.3 | cosign | 0 | 2.5.3-150400.3.30.1 |
| Wolfi | conftest | 0 | 0.59.0-r1 |
| Wolfi | cosign | 0 | 2.5.0-r1 |
| Wolfi | cosign-fips | 0 | 2.5.0-r2 |
| Wolfi | datadog-agent | 0 | 0 |
| Wolfi | datadog-agent-core-integrations | 0 | 0 |
| Wolfi | datadog-agent-fakeintake | 0 | 0 |
| Wolfi | datadog-agent-jmx | 0 | 0 |
| Wolfi | datadog-agent-oci-compat | 0 | 0 |
| Wolfi | datadog-agent-s6-overlay | 0 | 0 |
| Wolfi | datadog-cluster-agent | 0 | 7.71.2-r3 |
| Wolfi | datadog-cluster-agent-oci-compat | 0 | 7.71.2-r3 |
| Wolfi | dogstatsd | 0 | 0 |
| Wolfi | gatekeeper-3.16 | 0 | 3.16.3-r21 |
| Wolfi | gatekeeper-3.16-compat | 0 | 3.16.3-r21 |
| Wolfi | gatekeeper-3.16-gator | 0 | 3.16.3-r21 |
| Wolfi | gatekeeper-3.17 | 0 | 3.17.2-r10 |
| Wolfi | gatekeeper-3.17-compat | 0 | 3.17.2-r10 |
| Wolfi | gatekeeper-3.17-crds | 0 | 3.17.2-r10 |
| Wolfi | gatekeeper-3.17-crds-compat | 0 | 3.17.2-r10 |
| Wolfi | gatekeeper-3.17-gator | 0 | 3.17.2-r10 |
| Wolfi | gatekeeper-3.18 | 0 | 3.18.3-r1 |
| Wolfi | gatekeeper-3.18-compat | 0 | 3.18.3-r1 |
| Wolfi | gatekeeper-3.18-crds | 0 | 3.18.3-r1 |
| Wolfi | gatekeeper-3.18-crds-compat | 0 | 3.18.3-r1 |
Related vulnerabilities
- CVE-2024-8260 OPA for Windows has an SMB force-authentication vulnerability Also affects github.com/open-policy-agent/opa
- CVE-2025-64329 containerd CRI server: Host memory exhaustion through Attach goroutine leak Also affects cloudbeat
- CVE-2024-25621 containerd affected by a local privilege escalation via wide permissions on CRI directory Also affects cloudbeat
- CVE-2025-52881 runc container escape and denial of service due to arbitrary write gadgets and procfs… Also affects cloudbeat
- CVE-2025-58058 xz is a pure golang package for reading and writing xz-compressed files. Also affects cloudbeat
- CVE-2025-8959 HashiCorp's go-getter library subdirectory download feature is vulnerable to symlink… Also affects cloudbeat
- CVE-2025-55198 Helm May Panic Due To Incorrect YAML Content Also affects cloudbeat
- CVE-2025-55199 Helm Charts with Specific JSON Schema Values Can Cause Memory Exhaustion Also affects cloudbeat