Kilka dni temu specjalista Rapid7 odkrył podatność SQL injection o wysokim poziomie krytyczności, dotyczącą interaktywnego narzędzia PostgreSQL psql. Luka otrzymała identyfikator CVE-2025-1094 i wynik bazowy CVSS 8,1/10. Dotknięte są wszystkie obsługiwane wersje przed PostgreSQL 17.3, 16.7, 15.11, 14.16 i 13.19.
Odkrycia dokonano przed przypadek podczas badań nad wykorzystaniem innej krytycznej luki RCE, CVE-2024-12356, o której pisaliśmy na początku lutego. Ekipa Rapid7 zauważyła, że w każdym testowanym scenariuszu udane wykorzystanie luki CVE-2024-12356 musiało obejmować wykorzystanie luki CVE-2025-1094 w celu zdalnego wykonania kodu. Chociaż CVE-2024-12356 zostało załatane przez BeyondTrust w grudniu 2024 r., a poprawka skutecznie blokuje wykorzystanie zarówno CVE-2024-12356, jak i CVE-2025-1094, nie rozwiązała ona głównej przyczyny CVE-2025-1094, która pozostała zero-dayem do momentu odkrycia i zgłoszenia do PostgreSQL przez Rapid7.
Luka została odkryta przez Stephena Fewera, głównego badacza ds. bezpieczeństwa w Rapid7, i jest opisywania oraz analizowana zgodnie z polityką ujawniania podatności w zabezpieczeniach Rapid7.
Na czym polega podatność?
CVE-2025-1094 wynika z błędnego założenia architektury PostgreSQL. Brzmi ono następująco – gdy kontrolowane przez atakującego niezaufane dane wejściowe zostały bezpiecznie odszyfrowane za pomocą procedur ucieczki ciągu PostgreSQL, nie można ich wykorzystać do wygenerowania udanego ataku wstrzyknięcia kodu SQL. Specjaliści Rapid7 odkryli, że SQL injection jest w rzeczywistości nadal możliwe w pewnym scenariuszu – gdy odszyfrowane niezaufane dane wejściowe są dołączone jako część instrukcji SQL wykonywanej przez interaktywne narzędzie psql.
Ze względu na sposób, w jaki procedury ucieczki ciągu PostgreSQL obsługują nieprawidłowe znaki UTF-8, w połączeniu ze sposobem przetwarzania nieprawidłowych sekwencji bajtów w nieprawidłowych znakach UTF-8 przez psql, atakujący może wykorzystać CVE-2025-1094 do wygenerowania wstrzyknięcia kodu SQL.
Następnie haker może osiągnąć stan wykonania dowolnego kodu (ACE), wykorzystując zdolność interaktywnego narzędzia do uruchamiania metapoleceń. Metapolecenia rozszerzają funkcjonalność narzędzi interaktywnych, zapewniając szeroki wachlarz dodatkowych operacji, które narzędzie interaktywne może wykonać. Metapolecenie, oznaczone symbolem wykrzyknika, umożliwia wykonanie polecenia powłoki systemu operacyjnego. Atakujący może wykorzystać CVE-2025-1094 do wykonania takiego polecenia, kontrolując w ten sposób wykonywane polecenie na poziomie powłoki systemu operacyjnego.
Alternatywnie atakujący, który może wygenerować wstrzyknięcie kodu SQL za pośrednictwem CVE-2025-1094, może oczywiście wykonać dowolne kontrolowane przez niego polecenia SQL.
Co robić?
Aby załagodzić podatność CVE-2025-1094, użytkownicy powinni dokonać aktualizacji do PostgreSQL 17.3, 16.7, 15.11, 14.16 lub 13.19. W celu uzyskania dodatkowych informacji, warto zapoznać się z oficjalnym komunikatem i ostrzeżeniem PostgreSQL.