Biblioteka cruddl, służąca do generowania GraphQL API dla baz danych ArangoDB, zawiera podatność umożliwiającą wstrzykiwanie dowolnych zapytań AQL (ArangoDB Query Language). Dotyczy wyłącznie schematów wykorzystujących dyrektywę `@flexSearchFulltext` i pozwala uwierzytelnionemu użytkownikowi na wykonanie nieautoryzowanych operacji bezpośrednio w bazie danych.
▸ Pokaż oryginał (EN)
cruddl is software for creating a GraphQL API for a database, using the GraphQL SDL to model a schema. If cruddl starting with version 1.1.0 and prior to versions 2.7.0 and 3.0.2 is used to generate a schema that uses `@flexSearchFulltext`, users of that schema may be able to inject arbitrary AQL queries that will be forwarded to and executed by ArangoDB. Schemas that do not use `@flexSearchFulltext` are not affected. The attacker needs to have `READ` permission to at least one root entity type that has `@flexSearchFulltext` enabled. The issue has been fixed in version 3.0.2 and in version 2.7.0 of cruddl. As a workaround, users can temporarily remove `@flexSearchFulltext` from their schemas.
Podatność wynika z braku odpowiedniej sanityzacji danych wejściowych przekazywanych do mechanizmu pełnotekstowego wyszukiwania (`@flexSearchFulltext`). Atakujący posiadający uprawnienie `READ` do co najmniej jednego typu encji z włączoną dyrektywą `@flexSearchFulltext` może osadzić w zapytaniu GraphQL złośliwy fragment kodu AQL. Spreparowane zapytanie jest następnie przekazywane bez filtrowania do silnika ArangoDB i tam wykonywane. Zakres oddziaływania wykracza poza kontekst aplikacji (Scope: Changed), co potęguje powagę podatności.
Atakujący może odczytywać, modyfikować lub usuwać dane w bazie ArangoDB, a potencjalnie również wykonywać inne nieautoryzowane operacje bazodanowe wykraczające poza przyznaną mu rolę. Skutkuje to pełną utratą poufności, integralności i dostępności danych.
Należy zaktualizować cruddl do wersji 2.7.0 lub 3.0.2, w których problem został naprawiony. Jako obejście tymczasowe (workaround) można usunąć dyrektywę `@flexSearchFulltext` ze wszystkich schematów do czasu wdrożenia patcha.
cruddl w wersjach od 1.1.0 do 2.6.x oraz od 3.0.0 do 3.0.1 — wyłącznie gdy wygenerowany schemat GraphQL zawiera dyrektywę `@flexSearchFulltext`. Schematy nieużywające tej dyrektywy nie są podatne.
Podatność zgłoszona i naprawiona przez zespół AEB Labs; szczegóły dostępne w security advisory repozytorium GitHub (GHSA-qm4w-4995-vg7f). Atak wymaga posiadania konta z uprawnieniem READ do przynajmniej jednego obiektu z włączonym @flexSearchFulltext.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HAeb Cruddl
APPAeb1.1.0 – 2.7.0 (bez)3.0.0 – 3.0.2 (bez)