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

Overflow de inteiros

Revisado porCybersecurity entrepreneur & security researcher

O que é Overflow de inteiros?

Overflow de inteirosBug em que uma operação aritmética produz um valor fora do intervalo representável do tipo inteiro, com wraparound ou truncamento de impacto crítico.


Os overflows de inteiros ocorrem quando os cálculos excedem o valor máximo (ou mínimo) que o tipo inteiro pode conter, originando wraparound, troca de sinal ou truncamento. Tornam-se problemas de segurança quando o valor errado é depois usado como tamanho de buffer, contador de ciclo, índice de array ou verificação de autorização, gerando frequentemente buffer overflows, ciclos infinitos ou contornos de limites.

O padrão clássico. Um ponto de perigo comum é malloc(count * size): se count * size fizer wraparound para além de SIZE_MAX, o alocador devolve um buffer muito mais pequeno do que o código pressupõe, e a cópia seguinte escreve para além do fim — um overflow provocado por uma multiplicação, e não por um comprimento errado de memcpy. A família Stagefright do Android de 2015 (CVE-2015-1538) explorou exatamente isto: um overflow de inteiros no átomo de metadados stsc de um ficheiro MP4 causava uma alocação de heap demasiado curta, permitindo que uma única mensagem MMS conseguisse a execução remota de código em cerca de 950 milhões de dispositivos estimados. A falha de challenge-response do OpenSSH de 2002 (CVE-2002-0639) e muitos bugs em codecs de imagem e parsers de fontes seguem a mesma forma. As conversões de com sinal para sem sinal são uma armadilha relacionada: um comprimento negativo interpretado como um enorme valor sem sinal derrota uma verificação ingénua como if (len > max).

As defesas incluem aritmética verificada (checked_add/checked_mul do Rust, ckd_* do C23, -ftrapv do compilador e UBSan), calcular num tipo mais largo e depois verificar o intervalo antes de estreitar, escolher tipos adequados ao domínio, validar os tamanhos controlados pelo atacante antes da alocação e um fuzzing agressivo dos parsers.

flowchart TD
  A[count e size controlados<br/>pelo atacante] --> B[size = count * elem]
  B --> C{O produto excede<br/>o máximo do tipo?}
  C -->|Não| D[Alocação correta]
  C -->|Sim| E[O valor faz wraparound<br/>para um número pequeno]
  E --> F[Buffer subdimensionado alocado]
  F --> G[A cópia escreve para além do fim<br/>corrupção de heap / RCE]

Exemplos

  1. 01

    CVE-2002-0639 (OpenSSH challenge-response): overflow de inteiros que provoca corrupção de heap.

  2. 02

    CVE-2015-1538 (Android Stagefright): overflow de inteiros no átomo 'stsc' de um MP4 que permite a execução remota de código.

Perguntas frequentes

O que é Overflow de inteiros?

Bug em que uma operação aritmética produz um valor fora do intervalo representável do tipo inteiro, com wraparound ou truncamento de impacto crítico. Pertence à categoria Vulnerabilidades da cibersegurança.

O que significa Overflow de inteiros?

Bug em que uma operação aritmética produz um valor fora do intervalo representável do tipo inteiro, com wraparound ou truncamento de impacto crítico.

Como se defender contra Overflow de inteiros?

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

Quais são outros nomes para Overflow de inteiros?

Nomes alternativos comuns: Wraparound de inteiros.

Termos relacionados

Ver também