CVE-2026-120063
ŚrednieCVSS 5.9Streszczenie
W psqlODBC występuje przepełnienie bufora stosu podczas cytowania nazw schematów i tabel do bufora o rozmiarze 128 bajtów. Sprawdzenie długości pozwala zapisać do dwóch bajtów poza końcem bufora dla długich nazw pochodzących z tekstu SQL aplikacji lub z nazwy kolumny przesłanej przez serwer. Podatne są wersje przed psqlODBC 18.00.0006.
Ocena ryzyka
Aplikacja przekazująca niezaufany tekst SQL do sterownika naraża swój proces na uszkodzenie stosu, co może prowadzić do awarii lub potencjalnego wykonania kodu. Ryzyko dotyczy głównie środowisk, w których dane wejściowe użytkownika trafiają bezpośrednio do sterownika.
Rekomendacja
Zaktualizuj psqlODBC do wersji 18.00.0006 lub nowszej. Dodatkowo ogranicz przekazywanie niezaufanego tekstu SQL bezpośrednio do sterownika.
Inne podatności w psqlODBC
Zobacz wszystkie- CVE-2026-120067Średnie
W psqlODBC dla kursorów aktualizowalnych (domyślnie włączonych) sterownik dodaje ukryte kolumny ctid oraz oid do zapytania. Każda wartość jest kopiowana do 32-bajtowego bufora na stosie przy użyciu długości przesłanej przez serwer, bez sprawdzenia rozmiaru bufora, więc wartość 32 bajtów lub większa zapisuje poza bufor. Wersje przed psqlODBC 18.00.0006 są podatne.
- CVE-2026-120066Średnie
W systemach uniksowych, gdy włączone jest logowanie, psqlODBC domyślnie tworzy pliki logów w /tmp, nazwane na podstawie nazwy programu, użytkownika i identyfikatora procesu, z domyślnymi uprawnieniami (zwykle czytelnymi dla wszystkich) i podąża za dowiązaniami symbolicznymi przy ich otwieraniu. Lokalny użytkownik może odczytać tekst zapytań i dane z logów innego użytkownika oraz umieścić dowiązanie symboliczne w przewidywalnej ścieżce, aby sterownik dopisywał dane logów do wybranego przez atakującego pliku z uprawnieniami ofiary. Wersje przed psqlODBC 18.00.0006 są podatne.
- CVE-2026-120065Wysokie
W psqlODBC przy aktualizowalnym kursorze na tabeli bez OID z kolumną auto-increment int4 sterownik używa tej kolumny do identyfikacji wierszy, umieszczając jej nazwę w cudzysłowach bez podwajania znaków cudzysłowu w nazwie. Nazwa kolumny zawierająca cudzysłów zmienia wykonywane SQL, w tym to, które wiersze dotyczy UPDATE lub DELETE.
- CVE-2026-120064Wysokie
Kilka punktów wejścia psqlODBC używa numeru kolumny lub indeksu wiersza dostarczonego przez aplikację jako indeksu tablicy bez walidacji. SQLBindCol z numerem kolumny powyżej 32767 powoduje zawinięcie licznika powiązań na wartość ujemną, a ujemny SQL_DESC_COUNT odłącza kolumny pod ujemnymi indeksami; SQLSetPos(SQL_ADD) nie sprawdza numeru wiersza względem rozmiaru zbioru wierszy.
- CVE-2026-120062Wysokie
Funkcja SQLSpecialColumns w psqlODBC wstawia otrzymane nazwy tabeli i schematu do zapytania katalogowego bez ich escapowania, podczas gdy inne funkcje katalogowe je escapują. Aplikacja przekazująca niezaufaną nazwę tabeli lub schematu do SQLSpecialColumns pozwala wywołującemu wykonać dowolny SQL z uprawnieniami połączenia.
- CVE-2026-120061Wysokie
Parser sekwencji escape ODBC w psqlODBC zapisuje przesunięcia argumentów sekwencji {fn} do stałej 16-elementowej tablicy na stosie bez sprawdzania granic i bez inicjalizacji. Sekwencja z nadmiarem argumentów przepełnia stos, a odwołanie do niepodanego argumentu kopiuje dowolne bajty do zapytania; kopiowanie treści {d}, {t}, {ts} lub {escape} zapisuje też jeden bajt poza 128-bajtowym buforem stosu.
- CVE-2026-120060Średnie
psqlODBC ufa licznikom i długościom pochodzącym z danych serwera w trzech miejscach: SQLBulkOperations może spowodować niedomiar przy odejmowaniu rozmiaru, SQLStatistics iteruje klucze indeksu bez ograniczenia do stałego bufora, a dekodowanie ósemkowe bytea czyta do dwóch bajtów poza końcem obciętej sekwencji ucieczki. Serwer niezaufany w obecnych ustawieniach SSL może spowodować awarię klienta lub odczyt poza granicami. Podatne są wersje przed psqlODBC 18.00.0006.
- CVE-2026-120059Średnie
W psqlODBC nazwa kolumny auto-increment int4 zgłaszana przez serwer jest umieszczana w łańcuchu formatującym typu printf i później rozwijana podczas budowania klauzuli WHERE dla kursora aktualizowalnego. Nazwa kolumny zawierająca dyrektywy formatujące powoduje odczyt niepowiązanej pamięci, co może doprowadzić do awarii aplikacji lub skopiowania pamięci klienta do tekstu zapytania wysyłanego do serwera. Podatne są wersje przed psqlODBC 18.00.0006.
- CVE-2026-120058Wysokie
psqlODBC ustala rozmiar pamięci podręcznej wierszy na podstawie liczby kolumn pierwszego wyniku kursora, ale przy każdym kolejnym FETCH przelicza liczbę kolumn bez sprawdzenia zgodności. Serwer niezaufany w obecnych ustawieniach SSL może odpowiedzieć na późniejszy FETCH większą liczbą kolumn i spowodować zapis rekordów poza zaalokowaną pamięcią; odpowiedź keyset z mniejszą liczbą kolumn niż pól klucza powoduje niedomiar licznika.
- CVE-2026-120057Wysokie
psqlODBC kopiuje odpowiedź na odczyt dużego obiektu (loread) do bufora aplikacji, używając długości przesłanej przez serwer, bez porównania jej z rozmiarem bufora. Serwer niezaufany w obecnych ustawieniach SSL lub atakujący typu man-in-the-middle może zwrócić więcej bajtów niż mieści bufor i nadpisać sąsiednią pamięć procesu klienta danymi wybranymi przez serwer.
Oryginalny opis (angielski, źródło NVD)
When psqlODBC quotes a schema or table name into a 128-byte stack buffer, its length check lets it write up to two bytes past the end of the buffer for a long name. The names come from the application's SQL text: the table of a statement the driver parses to describe its columns, and the target of the last INSERT when the driver rewrites SELECT @@IDENTITY. In the @@IDENTITY rewrite, a column name sent by the server can also write one byte past the buffer. The bytes written past the buffer are a double quote and a NUL. An application that forwards untrusted SQL text to the driver exposes its process to stack corruption. Versions before psqlODBC 18.00.0006 are affected.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

