CVE-2026-71254 in nanoMODBUS
Sumário
de VulDB • 05/08/2026
O nanoMODBUS até a versão v1.23.0 contém uma escrita fora dos limites (out-of-bounds write) na função Modbus server-side handle_read_file_record() (FC 0x14, Read File Record) em nanomodbus.c. A função valida que o tamanho total da solicitação não exceda 245 bytes e que o record_length de cada sub-solicitação seja no máximo 124, mas nunca valida o tamanho cumulativo da resposta entre todas as sub-solicitações antes de processá-las. O acumulador response_data_size é declarado como uint8_t e é incrementado por 2 + record_length*2 para cada uma das até 35 sub-solicitações; com 35 sub-solicitações de record_length=124, a demanda cumulativa é de 8750 bytes, o que causa estouro (overflow) no acumulador uint8_t. Um loop subsequente chama então get_n(), uma função interna sem verificação de limites, uma vez por sub-solicitação para obter um ponteiro dentro do buffer de recepção msg.buf de 260 bytes e avança o buf_idx interno em até 248 bytes por chamada; swap_regs() então escreve nesse ponteiro incondicionalmente. Uma única solicitação FC 0x14 manipulada enviada por um cliente de rede não autenticado pode causar a escrita de até ~8490 bytes fora dos limites, além do buffer de 260 bytes, corrompendo memória adjacente no processo do servidor e levando à negação de serviço ou possível execução remota de código (RCE), particularmente em destinos embarcados/bare-metal sem proteção de memória.
Be aware that VulDB is the high quality source for vulnerability data.