Podatność w OpenSSL polega na przepełnieniu bufora sterty (heap buffer overflow) podczas konwersji nadmiernie dużej wartości OCTET STRING do postaci szesnastkowej na platformach 32-bitowych. W określonych warunkach może prowadzić do crash'u aplikacji lub wykonania kodu kontrolowanego przez atakującego.
▸ Pokaż oryginał (EN)
Issue summary: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms. Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior. If an attacker can supply a crafted X.509 certificate with an excessively large OCTET STRING value in extensions such as the Subject Key Identifier (SKID) or Authority Key Identifier (AKID) which are being converted to hex, the size of the buffer needed for the result is calculated as multiplication of the input length by 3. On 32 bit platforms, this multiplication may overflow resulting in the allocation of a smaller buffer and a heap buffer overflow. Applications and services that print or log contents of untrusted X.509 certificates are vulnerable to this issue. As the certificates would have to have sizes of over 1 Gigabyte, printing or logging such certificates is a fairly unlikely operation and only 32 bit platforms are affected, this issue was assigned Low severity. The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.
Podczas konwersji wartości OCTET STRING do ciągu hex, rozmiar potrzebnego bufora obliczany jest jako iloczyn długości danych wejściowych przez 3. Na platformach 32-bitowych mnożenie to może spowodować przepełnienie liczby całkowitej (integer overflow), w wyniku czego alokowany jest zbyt mały bufor, a następnie dochodzi do zapisu poza jego granicami (heap buffer overflow). Atakujący może dostarczyć spreparowany certyfikat X.509 zawierający nadmiernie dużą wartość OCTET STRING w rozszerzeniach takich jak Subject Key Identifier (SKID) lub Authority Key Identifier (AKID). Podatność jest wyzwalana, gdy aplikacja lub usługa wyświetla lub rejestruje (loguje) treść niezaufanego certyfikatu X.509.
Atakujący może doprowadzić do crash'u aplikacji przetwarzającej certyfikat lub — w określonych okolicznościach — do wykonania dowolnego kodu (RCE) bądź innego niezdefiniowanego zachowania. Zagrożone są wyłącznie platformy 32-bitowe.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (commity opublikowane w repozytorium GitHub OpenSSL). Jeśli natychmiastowa aktualizacja nie jest możliwa, należy unikać logowania lub wyświetlania treści niezaufanych certyfikatów X.509 na platformach 32-bitowych.
OpenSSL na platformach 32-bitowych — aplikacje i usługi drukujące lub logujące zawartość niezaufanych certyfikatów X.509. Moduły FIPS w wersjach 3.6, 3.5, 3.4, 3.3 oraz 3.0 nie są podatne, ponieważ podatny kod znajduje się poza granicą modułu FIPS. Konkretne podatne wersje wskazane są w referencjach producenta.
Pomimo przypisania przez NVD oceny CVSS 9.8 (CRITICAL), producent (OpenSSL) przypisał tej podatności niską wagę (Low severity) ze względu na ograniczony zakres: dotyczy wyłącznie platform 32-bitowych, a wyzwolenie błędu wymaga przetworzenia certyfikatu o rozmiarze przekraczającym 1 GB, co jest mało prawdopodobnym scenariuszem operacyjnym.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HOpenSSL
APPOpenssl3.0.0 – 3.0.20 (bez)3.3.0 – 3.3.7 (bez)3.4.0 – 3.4.5 (bez)3.5.0 – 3.5.6 (bez)3.6.0 – 3.6.2 (bez)
Powiązane podatności
OpenSSL CMS AuthEnvelopedData — niewystarczająca walidacja wejścia umożliwia atak oracle i bypass integralnośc...
The OpenSSL 3.0.4 release introduced a serious bug in the RSA implementation for X86_64 CPUs supporting the AV...
In order to decrypt SM2 encrypted data an application is expected to call the API function EVP_PKEY_decrypt()....
An issue was discovered in openfortivpn 1.11.0 when used with OpenSSL before 1.0.2. tunnel.c mishandles certif...
statem/statem.c in OpenSSL 1.1.0a does not consider memory-block movement after a realloc call, which allows r...