Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Impact only manifests in non-default integrator code that uses equals() for trust decisions (AC:H); it yields incorrect comparisons affecting integrity with minor confidentiality, no availability or RCE.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
CedarJava is an open source Java implementation of the Cedar policy language, used for fine-grained authorization decisions. In versions prior to 4.9.0, the EntityIdentifier.equals() has inverted null/self branches which could lead to incorrect equality comparisons. The EntityIdentifier.equals() method has inverted logic for null and self-reference checks, returning true for null comparisons and false for self-comparisons. This does not affect Cedar authorization decisions (computed in Rust from JSON), but could affect integrators who perform their own equality checks on entity identifiers. This issue has been fixed in version 4.9.0.
Articles & Coverage 1
AnalysisAI
Incorrect equality comparison in CedarJava (cedar-java) versions before 4.9.0 causes EntityIdentifier.equals() to return true when comparing against null and false when comparing an object to itself, due to inverted null/self-reference branches. Cedar's actual authorization decisions are unaffected because they are computed in Rust from JSON, but integrators who call equals() on entity identifiers in their own Java logic may make incorrect trust or access decisions. No public exploit identified at time of analysis; the issue is fixed in 4.9.0.
Technical ContextAI
CedarJava is the Java binding for Cedar, an open-source authorization policy language (developed by AWS/cedar-policy) used for fine-grained access control; the CPE cpe:2.3:a:cedar-policy:cedar-java:*:* confirms the affected component is the cedar-java library itself. The defect lives in the EntityIdentifier class's overridden equals(Object) method, where the standard Java contract (an object equals itself, and never equals null) is inverted - the null-check and self-reference branches are swapped, so o this returns false and o null returns true. Although the input labels this CWE-94 (Code Injection), that classification is inconsistent with the described behavior; the true root cause is an incorrect equality/comparison logic error (closer to CWE-697 'Incorrect Comparison' or CWE-595 'Comparison of Object References Instead of Object Contents'). Because Cedar's policy evaluation happens in a Rust engine consuming JSON, the flawed Java equals() only matters in code paths where a Java integrator directly compares EntityIdentifier objects.
RemediationAI
Upgrade cedar-java to version 4.9.0 or later, which corrects the inverted null/self branches in EntityIdentifier.equals() (Vendor-released patch: 4.9.0); this is the primary and definitive fix per GitHub Security Advisory GHSA-4r9r-4425-74p7 (https://github.com/cedar-policy/cedar-java/security/advisories/GHSA-4r9r-4425-74p7). If an immediate upgrade is not possible, integrators should audit their code for any use of EntityIdentifier.equals() (including implicit uses in collections such as HashSet/HashMap keys, contains(), or list comparisons) and avoid relying on it for security-relevant comparisons - instead compare the underlying identifier string values directly, which sidesteps the inverted logic. The trade-off of that workaround is added application-side code and the need to ensure no third-party dependency internally calls the flawed equals(); it is a stopgap only, so schedule the 4.9.0 upgrade as the durable remediation.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same weakness CWE-94 – Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-43524
GHSA-4r9r-4425-74p7