← Back to CVE Explorer

CVE-2026-55773

Full vulnerability record from the local CVENow database.

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.

Severity
HIGH
CVSS score
8.8 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-07-13 20:16:48.580000
Last modified
2026-10-24 22:10:00.210000
View original CVE JSON
{
  "id": "CVE-2026-55773",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-13T20:16:48.580",
  "lastModified": "2026-10-24T22:10:00.210",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    },
    {
      "lang": "es",
      "value": "CedarJava es una implementación Java de código abierto del lenguaje de políticas Cedar, utilizada para decisiones de autorización de grano fino. En versiones anteriores a la 2.3.6, 3.4.1 y 4.9.0, bajo ciertas circunstancias, un manejo inadecuado de la entrada podría permitir la inyección de expresiones Cedar a través de toCedarExpr() sin escape. El método toCedarExpr() en los tipos de valor Cedar no escapa caracteres especiales (” o \\) al convertir valores a código fuente Cedar. Si un integrador utiliza toCedarExpr() para construir texto de política en tiempo de ejecución a partir de valores controlados por el usuario, un actor podría inyectar expresiones Cedar arbitrarias. Por ejemplo, inyectar || true en una cláusula permit ... when { ... } podría hacer que el permiso sea incondicional, o inyectar && false en una cláusula forbid podría evitar que el forbid se active. Este problema requiere que el integrador utilice toCedarExpr() para construir texto de política en tiempo de ejecución a partir de entrada controlada por el usuario. Esta vulnerabilidad ha sido corregida en las versiones 2.3.6, 3.4.1 y 4.9.0."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "cedar-policy",
          "product": "cedar-java",
          "versions": [
            {
              "version": "< 2.3.6",
              "status": "affected"
            },
            {
              "version": ">= 3.1.2, < 3.4.1",
              "status": "affected"
            },
            {
              "version": ">= 4.0.0, < 4.9.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 8.8,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-15T14:18:12.881386Z",
          "id": "CVE-2026-55773",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-94"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/cedar-policy/cedar-java/security/advisories/GHSA-qmch-v2q9-wg4p",
      "source": "[email protected]"
    }
  ]
}