Description
CedarJava is an open source Java implementation of the Cedar policy language, used for fine-grained authorization decisions. In versions prior to 2.3.6, 3.4.1 and 4.9.0, under certain circumstances, improper input handling could allow Cedar-expression injection via unescaped toCedarExpr(). The toCedarExpr() method on Cedar Value types does not escape special characters (" or \) when converting values to Cedar source code. If an integrator uses toCedarExpr() to build policy text at runtime from user-controlled values, an actor could inject arbitrary Cedar expressions. For example, injecting || true into a permit ... when { ... } clause could make the permit unconditional, or injecting && false into a forbid clause could prevent the forbid from triggering. This issue requires the integrator to use toCedarExpr() to build policy text at runtime from user-controlled input. This vulnerability has been fixed in versions 2.3.6, 3.4.1, and 4.9.0.
Published: 2026-07-13
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

CedarJava is an open‑source Java implementation of the Cedar policy language. In versions before 2.3.6, 3.4.1, and 4.9.0, the toCedarExpr() method on Cedar Value types fails to escape quotation marks and backslashes when converting values to Cedar source code. This lack of escaping can allow Cedar expression injection when an integrator uses toCedarExpr() to build policy text at runtime from user‑controlled values, under certain circumstances. For example, injecting || true into a permit clause can make that permit unconditional, or inserting && false into a forbid clause can negate the forbid. Such injection enables an actor to alter policy logic and bypass intended authorization controls. This flaw is a code‑injection vulnerability (CWE‑94).

Affected Systems

Vendors: The CedarPolicy project provides the CedarJava library. The flaw impacts all releases prior to 2.3.6, 3.4.1 and 4.9.0; newer releases contain the fix.

Risk and Exploitability

The CVSS score of 8.8 marks this as a high‑severity vulnerability, indicating a potential for significant impact if exploited. The EPSS score of < 1 % suggests a low probability of real‑world exploitation at the time of analysis, and it is not currently listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation would occur through application integration, where an attacker supplies crafted user input to a component that invokes toCedarExpr() to construct policy text dynamically. When successful, the injected Cedar expressions can modify policy logic to grant or deny access in ways that bypass intended security controls.

Generated by OpenCVE AI on July 31, 2026 at 11:24 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade cedar-policy:cedar-java to 2.3.6, 3.4.1, or 4.9.0 or later, where toCedarExpr() now properly escapes input.
  • Audit all code that generates policy text at runtime and modify it to avoid dynamic construction from user‑controlled data; prefer static or pre‑validated policy definitions.
  • If immediate upgrade is not possible, apply a temporary safeguard by escaping quotation marks and backslashes in any user input before passing it to toCedarExpr() to neutralize injected expressions.

Generated by OpenCVE AI on July 31, 2026 at 11:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-qmch-v2q9-wg4p CedarJava has policy injection vulnerability
History

Mon, 27 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
First Time appeared Cedar-policy
Cedar-policy cedar-java
Vendors & Products Cedar-policy
Cedar-policy cedar-java

Mon, 13 Jul 2026 19:30:00 +0000

Type Values Removed Values Added
Description CedarJava is an open source Java implementation of the Cedar policy language, used for fine-grained authorization decisions. In versions prior to 2.3.6, 3.4.1 and 4.9.0, under certain circumstances, improper input handling could allow Cedar-expression injection via unescaped toCedarExpr(). The toCedarExpr() method on Cedar Value types does not escape special characters (" or \) when converting values to Cedar source code. If an integrator uses toCedarExpr() to build policy text at runtime from user-controlled values, an actor could inject arbitrary Cedar expressions. For example, injecting || true into a permit ... when { ... } clause could make the permit unconditional, or injecting && false into a forbid clause could prevent the forbid from triggering. This issue requires the integrator to use toCedarExpr() to build policy text at runtime from user-controlled input. This vulnerability has been fixed in versions 2.3.6, 3.4.1, and 4.9.0.
Title CedarJava has a policy injection vulnerability
Weaknesses CWE-94
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Subscriptions

Cedar-policy Cedar-java
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-15T14:18:27.118Z

Reserved: 2026-06-17T14:34:51.881Z

Link: CVE-2026-55773

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-31T11:30:05Z

Weaknesses
  • CWE-94

    Improper Control of Generation of Code ('Code Injection')