SurrealDB w wersjach przed 2.0.5, 2.1.x przed 2.1.5 oraz 2.2.x przed 2.2.2 nie escapuje poprawnie nazw tabel i pól podczas eksportu z linii komend, umożliwiając wstrzyknięcie kodu SurrealQL. Podatność pozwala uwierzytelnionemu użytkownikowi na przejęcie pełnej kontroli nad instancją SurrealDB przez privilege escalation.
▸ Pokaż oryginał (EN)
SurrealDB before 2.0.5, 2.1.x before 2.1.5, and 2.2.x before 2.2.2 fails to properly escape table and field names in the command-line export command. An authenticated System User with OWNER or EDITOR roles can create tables or fields with malicious names containing SurrealQL. When a higher-privileged user subsequently imports the exported backup, the injected SurrealQL executes, enabling privilege escalation and root-level takeover of the SurrealDB instance. Applications that let users define custom tables or fields are also exposed to a universal second-order SurrealQL injection even when query parameters are sanitized.
Uwierzytelniony użytkownik systemowy z rolą OWNER lub EDITOR tworzy tabele lub pola o złośliwych nazwach zawierających kod SurrealQL. Podczas eksportu backupu poleceniem CLI, te nazwy nie są odpowiednio eskejpowane, przez co trafiają do pliku eksportu w surowej postaci. Gdy uprzywilejowany użytkownik importuje taki backup, osadzony kod SurrealQL zostaje wykonany w kontekście jego uprawnień. Mechanizm ten stanowi tzw. second-order injection — wstrzyknięcie następuje etapem później niż wprowadzenie danych, co pozwala ominąć nawet poprawnie zaimplementowaną sanityzację parametrów zapytań.
Atakujący może dokonać privilege escalation i przejąć kontrolę na poziomie root nad instancją SurrealDB, uzyskując pełny dostęp do danych i możliwość wykonywania dowolnych operacji w bazie.
Należy zaktualizować SurrealDB do wersji 2.0.5, 2.1.5 lub 2.2.2 (odpowiednio do używanej gałęzi). Dodatkowo należy ograniczyć możliwość nadawania ról OWNER i EDITOR niezbędnym użytkownikom oraz monitorować tworzenie tabel i pól o niestandardowych nazwach. Pliki eksportowe przed importem powinny być weryfikowane przez uprzywilejowanych administratorów.
SurrealDB przed wersją 2.0.5, SurrealDB 2.1.x przed 2.1.5 oraz SurrealDB 2.2.x przed 2.2.2. Szczególnie narażone są aplikacje umożliwiające użytkownikom definiowanie własnych nazw tabel lub pól.
Podatność ma charakter second-order SurrealQL injection — wstrzyknięcie jest skuteczne nawet wtedy, gdy aplikacja poprawnie sanityzuje parametry zapytań na etapie ich wprowadzania. Wektor ataku wymaga interakcji dwóch użytkowników: atakującego tworzącego złośliwe struktury oraz uprzywilejowanego użytkownika wykonującego import backupu.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XSurrealdb
APPSurrealdb< 2.0.52.1.0 – 2.1.5 (bez)2.2.0 – 2.2.2 (bez)
Powiązane podatności
SurrealDB: Race condition w /rpc umożliwia przejęcie sesji uwierzytelnionej
Format string vulnerability w SurrealDB — RCE przez scripting
SurrealDB: Odczyt dowolnych plików przez filtr DEFINE ANALYZER
SurrealDB — brak walidacji zakresu w niestandardowych trasach API
SurrealDB — DoS poprzez przepełnienie stosu wywołaniami łańcuchów operatorów