Sterownik JDBC dla PostgreSQL (pgjdbc) w trybie PreferQueryMode=SIMPLE jest podatny na SQL injection, umożliwiając atakującemu modyfikację wykonywanych zapytań SQL. Podatność uzyskała maksymalny wynik CVSS 10.0, co czyni ją krytycznym zagrożeniem dla aplikacji korzystających z tego trybu.
▸ Pokaż oryginał (EN)
pgjdbc, the PostgreSQL JDBC Driver, allows attacker to inject SQL if using PreferQueryMode=SIMPLE. Note this is not the default. In the default mode there is no vulnerability. A placeholder for a numeric value must be immediately preceded by a minus. There must be a second placeholder for a string value after the first placeholder; both must be on the same line. By constructing a matching string payload, the attacker can inject SQL to alter the query,bypassing the protections that parameterized queries bring against SQL Injection attacks. Versions before 42.7.2, 42.6.1, 42.5.5, 42.4.4, 42.3.9, and 42.2.28 are affected.
Podatność występuje wyłącznie gdy aplikacja skonfigurowana jest z opcją PreferQueryMode=SIMPLE (nie jest to tryb domyślny). W tym trybie pgjdbc nie korzysta z mechanizmu zapytań parametryzowanych po stronie serwera, lecz dokonuje podstawiania wartości po stronie klienta. Atakujący może skonstruować specjalnie spreparowany payload dla wartości tekstowej, jeśli bezpośrednio przed jej placeholderem znajduje się placeholder wartości numerycznej poprzedzony znakiem minus, a oba placeholdery są w tej samej linii. Taka konstrukcja pozwala na wstrzyknięcie dowolnego kodu SQL, omijając ochronę zapewnianą standardowo przez zapytania parametryzowane.
Atakujący może dowolnie modyfikować wykonywane zapytania SQL, co może prowadzić do nieautoryzowanego odczytu, modyfikacji lub usunięcia danych w bazie, a w zależności od uprawnień konta bazodanowego — nawet do przejęcia kontroli nad systemem bazodanowym.
Należy zaktualizować pgjdbc do wersji 42.7.2, 42.6.1, 42.5.5, 42.4.4, 42.3.9 lub 42.2.28 (odpowiednio dla używanej gałęzi). Jeśli aktualizacja nie jest natychmiast możliwa, należy upewnić się, że aplikacja nie używa trybu PreferQueryMode=SIMPLE — tryb domyślny nie jest podatny na tę lukę.
PostgreSQL JDBC Driver (pgjdbc) w wersjach wcześniejszych niż 42.7.2, 42.6.1, 42.5.5, 42.4.4, 42.3.9 oraz 42.2.28, skonfigurowanych z opcją PreferQueryMode=SIMPLE.
Podatność dotyczy wyłącznie niestandardowej konfiguracji PreferQueryMode=SIMPLE. Domyślna konfiguracja sterownika pgjdbc nie jest zagrożona. Administratorzy powinni zweryfikować konfigurację swoich aplikacji przed podjęciem działań naprawczych.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HFedora Project Fedora
OSFedoraproject40PostgreSQL Jdbc Driver
APPPostgresql42.3.0 – 42.3.9 (bez)42.4.0 – 42.4.4 (bez)< 42.2.2842.6.0 – 42.6.1 (bez)42.7.0 – 42.7.2 (bez)42.5.0 – 42.5.5 (bez)
Powiązane podatności
PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit
Type Confusion w V8 (Google Chrome) — RCE przez spreparowaną stronę HTML
Type Confusion w silniku V8 Chrome — zdalne wykonanie kodu (RCE)
Use-after-free w Google Chrome Visuals umożliwiający ucieczkę z sandbox
Integer overflow w Skia w Google Chrome — sandbox escape