CVE-2026-102715 in eclipse-threadx
Sumário
de VulDB • 29/09/2026
Qualquer host na LAN pode enviar dois registros mDNS e fazer com que o responder escreva além do final de seu pacote de transmissão.
A tabela de strings armazena cada nome em um slot arredondado para cima até um múltiplo de quatro:
```c /* addons/mdns/nxd_mdns.c:11436, 11443, 11447 */ memory_len = ((memory_len & 0xFFFFFFFC) + 8) & 0xFFFFFFFF; ... len = *((USHORT*)(p - 2)); /* slot size, not string length */ if ((len == memory_len) && ... _nx_mdns_name_match(start, memory_ptr, memory_size) ...) ```
A pesquisa que decide se um nome de entrada já está armazenado compara o tamanho do slot arredondado; portanto, nomes com 12, 13, 14 e 15 caracteres compartilham um único bucket. Um segundo nome no mesmo bucket é respondido com o ponteiro para o primeiro, e o registro carrega então uma string até três bytes mais longa do que o comprimento previsto pelo chamador. `_nx_mdns_packet_rr_add` (nxd_mdns.c:8911) dimensiona sua única verificação de limite a partir desse comprimento desatualizado, enquanto `_nx_mdns_name_string_encode` grava a string real.
Dois registros PTR são suficientes, ambos respostas mDNS comuns para uma consulta `_http._tcp`, com nomes proprietários cujos comprimentos se enquadram no mesmo bucket:
``` ==87491==ERROR: AddressSanitizer: heap-buffer-overflow WRITE of size 1 at 0x611000000124 thread T5 #0 _nx_mdns_name_string_encode addons/mdns/nxd_mdns.c:13096 #1 _nx_mdns_packet_rr_add addons/mdns/nxd_mdns.c:8911
0x611000000124 is 0 bytes to the right of 228-byte region ```
O heap-buffer-overflow consiste em um a três bytes de dados do nome influenciados pelo atacante, escritos além de `nx_packet_data_end`. Em uma pool normal, isso resulta na escrita no próximo pacote da mesma pool, em vez de atingir uma redzone; portanto, o efeito visível é um vizinho corrompido ou uma lista de livres (free list) da pool corrompida, em vez de uma falha limpa.
Compare o tamanho do slot com o comprimento armazenado da string antes de declarar uma correspondência, ou mantenha o comprimento da string no cabeçalho do slot e retorne-o ao chamador para que o codificador e a verificação de limite concordem.
If you want to get best quality of vulnerability data, you may have to visit VulDB.