Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 544

Subdesbordo de inteiro

O que é Subdesbordo de inteiro?

Subdesbordo de inteiroFalha aritmetica (CWE-191) em que subtrair de um inteiro sem sinal abaixo de zero envolve para um valor enorme, permitindo alocacoes excessivas ou overruns.


Um subdesbordo (underflow) inteiro ocorre quando um inteiro sem sinal e decrementado abaixo de zero, ou aritmetica com sinal cruza INT_MIN, e o resultado se envolve num valor positivo muito grande. O padrao classico e len = header_len - prefix_len com prefix_len controlado pelo atacante; o len enorme resultante ignora verificacoes de limites e provoca overflows de heap/pilha ou leituras fora de limites. Exemplos reais: CVE-2018-1000005 (libcurl) e varios bugs de rede do kernel em que aritmetica size_t em comprimentos de pacote sofre underflow. Mitigacoes: aritmetica com sinal com comparacoes explicitas, subtracao verificada (__builtin_sub_overflow, std::safe_int), armadilhas de overflow no idioma (Rust debug, Swift), fuzzing com UBSan e validacao estrita de entradas.

Exemplos

  1. 01

    len = total - header_len que vira 0xFFFFFFFF quando total < header_len e e usado como tamanho de memcpy.

  2. 02

    Linux CVE-2019-11815: subtracao do comprimento restante sofre underflow e permite UAF.

Perguntas frequentes

O que é Subdesbordo de inteiro?

Falha aritmetica (CWE-191) em que subtrair de um inteiro sem sinal abaixo de zero envolve para um valor enorme, permitindo alocacoes excessivas ou overruns. Pertence à categoria Ataques e ameaças da cibersegurança.

O que significa Subdesbordo de inteiro?

Falha aritmetica (CWE-191) em que subtrair de um inteiro sem sinal abaixo de zero envolve para um valor enorme, permitindo alocacoes excessivas ou overruns.

Como funciona Subdesbordo de inteiro?

Um subdesbordo (underflow) inteiro ocorre quando um inteiro sem sinal e decrementado abaixo de zero, ou aritmetica com sinal cruza INT_MIN, e o resultado se envolve num valor positivo muito grande. O padrao classico e len = header_len - prefix_len com prefix_len controlado pelo atacante; o len enorme resultante ignora verificacoes de limites e provoca overflows de heap/pilha ou leituras fora de limites. Exemplos reais: CVE-2018-1000005 (libcurl) e varios bugs de rede do kernel em que aritmetica size_t em comprimentos de pacote sofre underflow. Mitigacoes: aritmetica com sinal com comparacoes explicitas, subtracao verificada (__builtin_sub_overflow, std::safe_int), armadilhas de overflow no idioma (Rust debug, Swift), fuzzing com UBSan e validacao estrita de entradas.

Como se defender contra Subdesbordo de inteiro?

As defesas contra Subdesbordo de inteiro costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Quais são outros nomes para Subdesbordo de inteiro?

Nomes alternativos comuns: Underflow sem sinal, CWE-191.

Termos relacionados