W bibliotece CedarJava przed wersją 4.9.0 metoda EntityIdentifier.equals() zawiera odwróconą logikę sprawdzania wartości null i samoreferencji, co może prowadzić do błędnych wyników porównań identyfikatorów encji. Problem może wpłynąć na decyzje autoryzacyjne implementowane przez integratorów korzystających z własnych porównań identyfikatorów.
▸ Pokaż oryginał (EN)
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.
Metoda EntityIdentifier.equals() zwraca true przy porównaniu z wartością null (zamiast false) oraz false przy porównaniu obiektu z samym sobą (zamiast true). Jest to wynik zamienionej logiki gałęzi obsługi tych dwóch przypadków brzegowych. Błąd dotyczy wyłącznie kodu Java — autoryzacja Cedar obliczana po stronie Rust z formatu JSON nie jest bezpośrednio narażona. Zagrożeni są natomiast integratorzy, którzy samodzielnie wykonują porównania obiektów EntityIdentifier w kodzie Java.
Atakujący lub błędna logika aplikacji może doprowadzić do nieprawidłowych decyzji autoryzacyjnych po stronie integratora — np. błędnego uznania dwóch różnych identyfikatorów encji za równe lub odwrotnie, co może skutkować nieuprawnionym dostępem lub nieuzasadnioną odmową dostępu.
Należy zaktualizować bibliotekę CedarJava do wersji 4.9.0, w której błąd został naprawiony. Integratorzy wykonujący własne porównania obiektów EntityIdentifier powinni zweryfikować poprawność logiki autoryzacyjnej po aktualizacji.
CedarJava (open source implementacja języka Cedar w Javie) w wersjach wcześniejszych niż 4.9.0
Błąd nie wpływa bezpośrednio na decyzje autoryzacyjne Cedar obliczane w Rust — ryzyko dotyczy wyłącznie integratorów korzystających z porównań EntityIdentifier po stronie Java.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H