CVE-2026-111879
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
Wersje DBI dla Perla przed 1.656 zawieszają się przy późniejszym otwarciu tabeli DBD::DBM, ponieważ nieudane open_data nie zwalnia blokady tabeli. Blokada flock nie ma limitu czasu, więc kolejne otwarcie tej tabeli blokuje się tak długo, jak długo istnieje uchwyt trzymający nieaktualną blokadę.
Ocena ryzyka
Aplikacja korzystająca z DBD::DBM może zawiesić się lub przestać odpowiadać, co prowadzi do odmowy usługi; wyzwalaczem mogą być wartości dbm_mldbm lub dbm_type pochodzące z DSN lub atrybutów połączenia.
Rekomendacja
Zaktualizuj moduł DBI dla Perla do wersji 1.656 lub nowszej.
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-73193Krytyczne
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.
- 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-108518Niskie
Wersje DBI dla Perla przed 1.656 powodują awarię przez type confusion w dbi_profile, gdy uchwyt bazy danych jest niszczony w ramach Profile Path z elementem {attr}. Gdy pamięć wskazywana przez wskaźnik przejdzie sprawdzenie typu, wyszukiwanie atrybutu dereferencjonuje NULL lub nieprawidłowy wskaźnik i proces kończy się sygnałem SIGSEGV.
- 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.
Oryginalny opis (angielski, źródło NVD)
DBI versions before 1.656 for Perl hang on a later open of a DBD::DBM table because a failed open_data does not release the table's lock. open_data creates the table's lock file and takes an exclusive flock on it for a CREATE, before the checks that can croak: a dbm_mldbm value that is not a module name, a failing tie, or a missing data file. The croak unwinds before the table object is blessed, so nothing releases the lock, and the meta data holding the open descriptor stays cached on the database handle. The dbm_mldbm and dbm_type values come from the DSN or the connect attributes, so a caller that chooses the serializer or the storage backend can trigger the failure. The flock has no timeout, so a later open of that table (even through a separate database handle) blocks for as long as the handle holding the stale lock lives, in the same process or any other.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

