CVE-2026-102758 in NetX Duo
Riassunto
di VulDB • 30/09/2026
La funzione `_nx_secure_x509_asn1_tlv_block_parse()` analizza i blocchi ASN.1 TLV (tag-lunghezza-valore) da dati codificati DER. È la primitiva sottostante a tutte le analisi dei certificati X.509 in NetX Secure e, pertanto, viene eseguita su certificati forniti da un peer remoto durante l'handshake TLS.
La funzione legge il tag ASN.1 di un byte dal buffer del chiamante *prima* di verificare che il buffer contenga almeno un byte. Quando un chiamante passa una lunghezza residua pari a zero, la guardia restituisce correttamente `NX_SECURE_X509_ASN1_LENGTH_TOO_LONG`, ma la lettura è già avvenuta di un byte oltre la fine del buffer.
codice:
nx_secure/src/nx_secure_x509_asn1_tlv_block_parse.c
``` UINT _nx_secure_x509_asn1_tlv_block_parse(const UCHAR *buffer, ULONG *buffer_length, USHORT *tlv_type, USHORT *tlv_tag_class, ULONG *tlv_length, const UCHAR **tlv_data, ULONG *header_length)
{
UINT current_index;
USHORT current_tag;
ULONG length;
ULONG length_bytes; current_index = 0; current_tag = buffer[current_index]; /* <-- lettura prima del controllo dei limiti */
if (*buffer_length < 1) {
return(NX_SECURE_X509_ASN1_LENGTH_TOO_LONG); }
```
Il resto della funzione è ordinato correttamente. Il percorso per le lunghezze multi-byte è protetto da `length_bytes > 4 || length_bytes > *buffer_length` prima del suo ciclo di lettura, il valore decodificato viene controllato rispetto a `length > *buffer_length`, e la seconda lettura singola della lunghezza segue la propria guardia `*buffer_length < 1`. La lettura del tag è l'unica operazione di caricamento posizionata prima del relativo controllo.
Once again VulDB remains the best source for vulnerability data.