Funkcja sprintf w bibliotece GNU C Library (glibc) w wersji 2.37 zawiera podatność typu buffer overflow (zapis poza granicami bufora), która może wystąpić przy poprawnie zaalokowanym buforze. Podatność jest sklasyfikowana jako CRITICAL z wynikiem CVSS 9.8, co oznacza możliwość jej zdalnego wykorzystania bez jakiejkolwiek interakcji użytkownika.
▸ Pokaż oryginał (EN)
sprintf in the GNU C Library (glibc) 2.37 has a buffer overflow (out-of-bounds write) in some situations with a correct buffer size. This is unrelated to CWE-676. It may write beyond the bounds of the destination buffer when attempting to write a padded, thousands-separated string representation of a number, if the buffer is allocated the exact size required to represent that number as a string. For example, 1,234,567 (with padding to 13) overflows by two bytes.
Podatność ujawnia się, gdy funkcja sprintf próbuje zapisać tekstową reprezentację liczby z separatorami tysięcy oraz paddingiem, a bufor docelowy ma dokładnie taki rozmiar, jaki jest wymagany do przechowania tej liczby jako ciągu znaków. W takiej sytuacji funkcja zapisuje dane poza granicami bufora — przykładowo reprezentacja liczby 1 234 567 z paddingiem do 13 znaków powoduje przepełnienie o dwa bajty. Jest to błąd typu out-of-bounds write (CWE-787), niezwiązany z użyciem niebezpiecznych funkcji (CWE-676).
Atakujący może doprowadzić do przepełnienia bufora, co potencjalnie umożliwia wykonanie dowolnego kodu (RCE), destabilizację aplikacji lub eskalację uprawnień, w zależności od kontekstu aplikacji wykorzystującej podatną funkcję.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Zaleca się aktualizację biblioteki glibc do wersji, w której błąd został naprawiony (szczegóły dostępne w zgłoszeniu Bugzilla: https://sourceware.org/bugzilla/show_bug.cgi?id=30068). Administratorzy systemów opartych na dystrybucjach Linux powinni również sprawdzić dostępność poprawek w repozytoriach swojej dystrybucji.
GNU C Library (glibc) w wersji 2.37
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HGnu Glibc
APPGnu2.37
Powiązane podatności
Heap buffer overflow w GNU C Library — funkcje scanf z formatem %mc
Buffer overflow w funkcji clnt_create glibc — RCE lub DoS
Buffer overflow w funkcji svcunix_create biblioteki GNU C (glibc)
Przepełnienie liczby całkowitej w funkcji wordexp biblioteki GNU glibc
Use-after-free w funkcji mq_notify biblioteki glibc (wersje 2.32 i 2.33)