CVE-2026-73193
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 39 - wyżej niż 39% wszystkich znanych CVE
Streszczenie
W bibliotece DBI dla Perla przed wersją 1.652 występuje podatność na zapis poza zakresem pamięci sterty na 32-bitowym Perlu, spowodowana zawinięciem liczby całkowitej przy obliczaniu rozmiaru bufora wyjściowego w funkcji preparse. Bardzo długie zapytanie może spowodować zapis poza przydzielony bufor.
Ocena ryzyka
Na 32-bitowych systemach atakujący może wykorzystać tę podatność do zapisu dowolnych danych poza pamięcią, co może prowadzić do wykonania kodu lub awarii aplikacji.
Rekomendacja
Zaleca się aktualizację DBI do wersji 1.652 lub nowszej, która zawiera poprawkę.
Inne podatności w DBI
Zobacz wszystkie- CVE-2026-78030Krytyczne
Wersje DBI przed 1.653 dla Perla ładują dowolne moduły przez niezweryfikowane atrybuty dbm_type i dbm_mldbm w DBD::DBM. Atrybuty te są przekazywane do require bez sprawdzenia, czy wartość wskazuje moduł, co pozwala na załadowanie i wykonanie kodu z dowolnego pliku.
- CVE-2026-73194Krytyczne
W bibliotece DBI dla Perla przed wersją 1.652 występuje podatność na zapis poza zakresem pamięci sterty (heap out-of-bounds write) spowodowany niezweryfikowanym numerycznym placeholderem, który ustawia licznik bindowania w funkcji preparse. Specjalnie spreparowane zapytanie może doprowadzić do zapisu poza przydzielony bufor.
- CVE-2026-60082Krytyczne
Podatność w bibliotece DBI dla Perla przed wersją 1.651 nie wymusza spójności uchwytu instrukcji z wierszem. Gdy uchwyt instrukcji nie miał pól, ale źródłowy wiersz nie był pusty, wewnętrzny pomocnik bufora wierszy odczytywał dane z ujemnego indeksu tablicy.
- CVE-2026-14740Krytyczne
Podatność w bibliotece DBI dla języka Perl przed wersją 1.650 powoduje odczyt o jeden bajt poza dozwolonym obszarem pamięci podczas przetwarzania początkowego komentarza SQL w metodzie preparse. Problem występuje przy usuwaniu komentarza na początku zapytania SQL.
- CVE-2026-14739Krytyczne
Podatność w bibliotece DBI dla Perla przed wersją 1.650 powoduje przepełnienie sterty podczas wstępnego parsowania zapytań SQL zawierających ekstremalnie dużą liczbę placeholderów. Poprawka dla CVE-2026-10879 nie alokowała wystarczającej ilości pamięci do obsługi około 1,2 miliona placeholderów. Wersja 1.650 wprowadza twardy limit 99 999 placeholderów.
- CVE-2026-9698Krytyczne
DBI dla Perla przed wersją 1.648 zapisuje komunikaty błędów w buforze o ograniczonej wielkości (200 bajtów) bez kontroli długości. Atakujący mogący wpływać na treść błędu mogą spowodować przepełnienie bufora.
- CVE-2026-88816Wysokie
Wersje DBI dla Perla przed 1.654 niepoprawnie traktują wartości numeryczne jako łańcuchy znaków w FetchHashKeyName. Gdy FetchHashKeyName ma wartość całkowitą (IV) lub zmiennoprzecinkową (NV), wskaźnik łańcucha jest nieprawidłowy, a odczyt nazwy klucza powoduje błąd segmentacji.
- CVE-2026-88815Średnie
Wersje DBI dla Perla przed 1.654 niepoprawnie traktują wartości numeryczne jako łańcuchy znaków w sql_type_cast_svpv. Przy rzutowaniu na SQL_NUMERIC funkcja przekazuje wskaźnik łańcucha i długość SV do grok_number bez uprzedniej konwersji na łańcuch; wartość całkowita (IV) lub zmiennoprzecinkowa (NV) nie ma prawidłowego wskaźnika łańcucha, co powoduje odczyt z nieprawidłowego adresu i błąd segmentacji.
- CVE-2026-19546Wysokie
W DBI znaleziono usterkę, która jest poprawką częściowej poprawki dla CVE-2026-14380 dla RHEL 9.8.z i 10.2.z. Szczegółowe informacje znajdują się w oryginalnym opisie na stronie Red Hat.
- CVE-2026-14380Wysokie
Podatność w bibliotece DBI dla języka Perl przed wersją 1.650 umożliwia wstrzyknięcie kodu poprzez atrybut Profile, który jest interpolowany w eval bez walidacji. Atakujący może kontrolować wartość Profile przez zmienną środowiskową DBI_PROFILE, bezpośrednie przypisanie lub klauzulę DSN, co prowadzi do wykonania dowolnego kodu Perl.
Oryginalny opis (angielski, źródło NVD)
DBI versions before 1.652 for Perl allow a heap out-of-bounds write on 32-bit perl via an integer wraparound in the output buffer size computed by preparse. preparse reserves its output buffer with `newSV(strlen(statement) * 7 + 16)`, budgeting seven output bytes per input byte for the longest ':p99999' expansion. The product is computed in STRLEN, which is 32 bits wide on a 32-bit perl build, so a statement of 613,566,757 bytes multiplies to 4,294,967,299, wraps modulo 2^32 to 3, and reserves 19 bytes. The parser then copies the statement out through a raw pointer with no capacity check, writing the whole 585 MB input past the end of the allocation. The 99,999 placeholder limit does not bound this path, which is reached by ordinary non-placeholder content. Any caller that passes an untrusted statement of that length to preparse on a 32-bit perl gets a heap out-of-bounds write of attacker controlled bytes. Builds with a 64-bit STRLEN are not affected, since the wrap there needs a statement of about 2.3 exabytes.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

