CVE-2026-120064
WysokieCVSS 7.5Streszczenie
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.
Ocena ryzyka
Aplikacja przekazująca niezaufane numery kolumn lub wierszy naraża swój proces na odczyty i zapisy poza granicami pamięci, co może prowadzić do awarii lub wykonania kodu.
Rekomendacja
Zaktualizuj psqlODBC do wersji 18.00.0006 lub nowszej.
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-120063Średnie
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.
- 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)
Several psqlODBC entry points use an application-supplied column number or row index as an array index without validating it. SQLBindCol with a column number above 32767 wraps the binding count negative and a later copy runs off the array. A negative SQL_DESC_COUNT on an application row descriptor unbinds columns at negative indexes. SQLColAttribute with a very large column number uses a negative index. SQLSetPos(SQL_ADD) does not check the row number against the rowset size. An application that forwards untrusted column or row numbers exposes its process to out-of-bounds reads and writes. Versions before psqlODBC 18.00.0006 are affected.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

