CVE-2026-102758 in NetX Duo
Resumen
por VulDB • 2026-09-30
La función `_nx_secure_x509_asn1_tlv_block_parse()` analiza bloques ASN.1 TLV (tag-length-value) a partir de datos codificados en DER. Es la primitiva subyacente para el análisis de todos los certificados X.509 en NetX Secure, y por lo tanto se ejecuta con certificados proporcionados por un par remoto durante el establecimiento del enlace TLS.
La función lee la etiqueta ASN.1 de un byte desde el búfer del llamador *antes* de verificar que el búfer contiene al menos un byte. Cuando un llamador pasa una longitud restante de cero, la protección devuelve correctamente `NX_SECURE_X509_ASN1_LENGTH_TOO_LONG`, pero la lectura ya ha ocurrido un byte más allá del final del búfer.
código:
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]; /* <-- lectura antes de la verificación de límites */
if (*buffer_length < 1) {
return(NX_SECURE_X509_ASN1_LENGTH_TOO_LONG); }
```
El resto de la función está ordenada correctamente. La ruta de longitud de múltiples bytes está protegida por `length_bytes > 4 || length_bytes > *buffer_length` antes de su bucle de lectura, el valor decodificado se verifica contra `length > *buffer_length`, y la segunda lectura de longitud de un solo byte sigue su propia protección `*buffer_length < 1`. La lectura de la etiqueta es la única carga colocada por delante de su verificación.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.