CVE-2021-3712
Overrun del buffer di lettura nell'elaborazione di stringhe ASN.1
- Pubblicato
- 24 ago 2021
- Aggiornato
- 16 apr 2026
- Assegnazione CNA
- openssl
- Evidenza osservata
- 8 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:HAlto · prossimi 30 giorni
- Percentile
- 98,9%
- Data del modello
- 21 set 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Le stringhe ASN.1 sono rappresentate internamente in OpenSSL come una struttura ASN1_STRING che contiene un buffer con i dati della stringa e un campo con la lunghezza del buffer. Questo contrasta con le normali stringhe C, che sono rappresentate come un buffer per i dati della stringa terminato con un byte NUL (0). Sebbene non sia un requisito tassativo, le stringhe ASN.1 analizzate tramite le funzioni "d2i" di OpenSSL (e altre funzioni di parsing simili), così come qualsiasi stringa il cui valore sia stato impostato con la funzione ASN1_STRING_set(), terminano inoltre con un byte NUL l'array di byte nella struttura ASN1_STRING. Tuttavia, è possibile per le applicazioni costruire direttamente strutture ASN1_STRING valide che non terminano con NUL l'array di byte impostando direttamente i campi "data" e "length" nell'array ASN1_STRING. Questo può accadere anche usando la funzione ASN1_STRING_set0(). È stato riscontrato che numerose funzioni OpenSSL che stampano dati ASN.1 presuppongono che l'array di byte di ASN1_STRING sia terminato con NUL, anche se questo non è garantito per le stringhe costruite direttamente. Quando un'applicazione richiede la stampa di una struttura ASN.1 e tale struttura contiene ASN1_STRING costruite direttamente dall'applicazione senza terminare con NUL il campo "data", può verificarsi un superamento del buffer in lettura. Lo stesso problema può verificarsi anche durante l'elaborazione dei vincoli di nome (name constraints) dei certificati (ad esempio se un certificato è stato costruito direttamente dall'applicazione invece di essere caricato tramite le funzioni di parsing di OpenSSL e il certificato contiene strutture ASN1_STRING non terminate con NUL). Può verificarsi anche nelle funzioni X509_get1_email(), X509_REQ_get1_email() e X509_get1_ocsp(). Se un attore malintenzionato può indurre un'applicazione a costruire direttamente una ASN1_STRING e poi elaborarla tramite una delle funzioni OpenSSL interessate, questo problema potrebbe essere sfruttato. Questo potrebbe provocare un crash (causando un attacco Denial of Service). Potrebbe anche portare alla divulgazione di contenuti di memoria privata (come chiavi private o testo in chiaro sensibile). Corretto in OpenSSL 1.1.1l (Versioni interessate 1.1.1-1.1.1k). Corretto in OpenSSL 1.0.2za (Versioni interessate 1.0.2-1.0.2y).
Fonti
1Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.