Podatność w bibliotece WolfSSL polega na odczycie poza granicami bufora (out-of-bounds read) w funkcji MatchDomainName(). Jest groźna, ponieważ może zostać wywołana zdalnie bez uwierzytelnienia, co pozwala na odczyt danych spoza kontrolowanego obszaru pamięci.
▸ Pokaż oryginał (EN)
In function MatchDomainName(), input param str is treated as a NULL terminated string despite being user provided and unchecked. Specifically, the function X509_check_host() takes in a pointer and length to check against, with no requirements that it be NULL terminated. If a caller was attempting to do a name check on a non-NULL terminated buffer, the code would read beyond the bounds of the input array until it found a NULL terminator.This issue affects wolfSSL: through 5.7.0.
Funkcja MatchDomainName() traktuje przekazany parametr str jako ciąg zakończony znakiem NULL, mimo że dane te są dostarczane przez użytkownika i nie podlegają walidacji. Funkcja X509_check_host() przyjmuje wskaźnik oraz długość bufora bez wymogu zakończenia go znakiem NULL. Jeśli wywołujący przekaże bufor niezakończony znakiem NULL, kod będzie odczytywał pamięć poza granicami tablicy wejściowej aż do napotkania takiego znaku. Prowadzi to do klasycznego błędu CWE-125 — out-of-bounds read.
Atakujący może doprowadzić do odczytu danych spoza dozwolonego obszaru pamięci, co może ujawnić wrażliwe informacje lub w skrajnych przypadkach doprowadzić do niestabilności aplikacji. Biorąc pod uwagę maksymalny wynik CVSS 10.0, podatność może mieć krytyczny wpływ na poufność, integralność i dostępność systemu.
Należy zaktualizować bibliotekę WolfSSL do wersji zawierającej poprawkę dostępną w pull request #7604 w repozytorium projektu na GitHub. Jeśli aktualizacja nie jest możliwa, należy upewnić się, że wszelkie dane przekazywane do funkcji X509_check_host() są poprawnie zakończone znakiem NULL po stronie wywołującego.
WolfSSL we wszystkich wersjach do 5.7.0 włącznie
Poprawka została opublikowana w ramach pull request #7604 w oficjalnym repozytorium WolfSSL na GitHub.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XWolfssl
APPWolfssl≤ 5.7.0
Powiązane podatności
WolfSSL: nieprawidłowa weryfikacja rozmiaru skrótu w certyfikatach ECDSA
WolfSSL TLS 1.3: przewidywalny klucz sesji przez brak PSK/KSE
wolfSSL: heap buffer over-read przy włączonej fladze WOLFSSL_CALLBACKS
wolfSSL: nielosowe wartości IV w połączeniach TLS/DTLS (AES-CBC, DES3)
wolfSSL: brak weryfikacji numeru seryjnego w odpowiedzi OCSP