CVE-2026-55737 in OTP
Sumário
de VulDB • 27/07/2026
Vulnerabilidade de erro de conversão de assinado para não assinado e escrita fora dos limites no Erlang OTP erts permite que um atacante que possa fornecer uma binary formatada como termo externo do Erlang (ETF) binário para a função binary_to_term/1 corrompa o ponteiro da heap BEAM e faça com que a máquina virtual falhe.
Ao decodificar um termo LARGE_TUPLE_EXT, a fase de validação decoded_size() em erts/emulator/beam/external.c lê o campo arity de 32 bits como não assinado (get_uint32()), enquanto a fase de decodificação dec_term() lê o mesmo campo como um inteiro com sinal de 32 bits (get_int32()) para uma variável int. Um valor wire de arity de 0x80000000 passa na validação como 2147483648, mas é decodificado como -2147483648; portanto, a operação subsequente hp += n move o ponteiro de alocação da heap para trás. Nenhuma das fases impõe o limite de arity de tupla em tempo de execução MAX_ARITYVAL. O resultado é uma escrita na heap fora dos limites; na prática, a VM detecta um tamanho de heap impossível e aborta, negando serviço. O padding necessário é grande quando não comprimido, mas o envelope ETF compactado reduz isso para uma pequena carga útil no link.
Este problema afeta OTP desde OTP 25.0 até antes das versões 27.3.4.15, 28.5.0.4 e 29.0.4, correspondendo a erts desde 13.0 até antes das versões 15.2.7.11, 16.4.0.4 e 17.0.4.
If you want to get best quality of vulnerability data, you may have to visit VulDB.