CVE-2026-102758 in NetX Duo
Sumário
de VulDB • 29/09/2026
A função `_nx_secure_x509_asn1_tlv_block_parse()` analisa blocos ASN.1 TLV (tag-length-value) a partir de dados codificados em DER. Ela é o componente primitivo subjacente à análise de todos os certificados X.509 no NetX Secure, e portanto executa-se sobre certificados fornecidos por um peer remoto durante o handshake TLS.
A função lê a tag ASN.1 de um byte do buffer do chamador *antes* de verificar se o buffer contém pelo menos um byte. Quando um chamador passa um comprimento restante (remaining length) igual a zero, a verificação de limites retorna corretamente `NX_SECURE_X509_ASN1_LENGTH_TOO_LONG`, mas a leitura já ocorreu um byte além do final do buffer.
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]; /* <-- read before the bounds check */
if (*buffer_length < 1) {
return(NX_SECURE_X509_ASN1_LENGTH_TOO_LONG); }
```
O restante da função está ordenado corretamente. O caminho de comprimento multi-byte é protegido por `length_bytes > 4 || length_bytes > *buffer_length` antes do seu loop de leitura, o valor decodificado é verificado contra `length > *buffer_length`, e a segunda leitura de comprimento de um único byte segue sua própria proteção `*buffer_length < 1`. A leitura da tag é a única operação de carga (load) colocada antes de sua respectiva verificação.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.