Podatność w dokumentacji GNU C Library (glibc) przed wersją 2.2 polega na braku informacji o nieokreślonej wartości zwracanej przez funkcję tdelete przy usuwaniu korzenia drzewa binarnego. Może to prowadzić do sytuacji, w której programiści tworzą aplikacje podatne na dostęp do zwisającego wskaźnika (dangling pointer).
▸ Pokaż oryginał (EN)
manual/search.texi in the GNU C Library (aka glibc) before 2.2 lacks a statement about the unspecified tdelete return value upon deletion of a tree's root, which might allow attackers to access a dangling pointer in an application whose developer was unaware of a documentation update from 1999.
Funkcja tdelete w glibc zwraca nieokreśloną wartość w przypadku usunięcia korzenia drzewa binarnego, jednak fakt ten nie był udokumentowany w pliku manual/search.texi przed wersją 2.2. Programista nieświadomy tej właściwości (wynikającej z aktualizacji dokumentacji z 1999 roku) mógł napisać aplikację, która ufa zwróconej wartości wskaźnika i próbuje go wyłuskać po operacji usunięcia. W efekcie aplikacja może uzyskać dostęp do już zwolnionego obszaru pamięci (dangling pointer), co jest sklasyfikowane jako CWE-252 (unchecked return value).
Atakujący może potencjalnie wykorzystać dostęp do zwisającego wskaźnika w podatnej aplikacji do odczytu lub zapisu pamięci, co w sprzyjających warunkach może prowadzić do ujawnienia danych, uszkodzenia pamięci lub wykonania dowolnego kodu.
Należy zaktualizować glibc do wersji 2.2 lub nowszej, w której dokumentacja (manual/search.texi) została uzupełniona o odpowiednie ostrzeżenie. Poprawka dostępna jest w repozytorium projektu (commit 2864e767 w repozytorium bminor/glibc). Dodatkowo zaleca się przegląd kodu aplikacji korzystających z funkcji tdelete pod kątem poprawnej obsługi wartości zwracanej przy usuwaniu korzenia drzewa.
GNU C Library (glibc) w wersjach przed 2.2; dotyczy aplikacji napisanych z użyciem funkcji tdelete, których autorzy nie byli świadomi braku dokumentacji dotyczącej wartości zwracanej przy usuwaniu korzenia drzewa.
Podatność wynika z luki w dokumentacji istniejącej od 1999 roku; CVE zostało opublikowane formalnie dopiero w 2020 roku. Rzeczywiste ryzyko jest uzależnione od sposobu, w jaki konkretna aplikacja obsługuje wartość zwracaną przez tdelete — samo glibc nie jest bezpośrednio podatne, lecz może przyczyniać się do powstawania błędów w aplikacjach korzystających z tej biblioteki.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HGnu Glibc
APPGnu< 2.2
Powiązane podatności
Heap buffer overflow w GNU C Library — funkcje scanf z formatem %mc
Buffer overflow w funkcji sprintf biblioteki GNU glibc 2.37
Buffer overflow w funkcji svcunix_create biblioteki GNU C (glibc)
Buffer overflow w funkcji clnt_create glibc — RCE lub DoS
Przepełnienie liczby całkowitej w funkcji wordexp biblioteki GNU glibc