Em
segurança computacional e
programação, um
transbordamento de dados ou
estouro de buffer (do
inglês buffer overflow ou
buffer overrun) é uma anomalia onde um programa, ao escrever dados em um
buffer, ultrapassa os limites do
buffer e sobrescreve a memória adjacente. Esse é um caso especial de violação de segurança de memória.
Estouros de
buffer podem ser disparados por entradas que são projetadas para executar código, ou alterar o modo como o programa funciona. Isso pode resultar em comportamento errado do programa, incluindo erros de acesso à memória, resultados incorretos, parada total do sistema, ou uma brecha num sistema de segurança. Portanto, eles são a base de muitas vulnerabilidade de
software e pode ser explorados maliciosamente.
Linguagens de programação comumente associadas com transbordamentos de dados incluem
C e
C++, as quais não proveem proteção contra acesso ou sobrescrita de dados em qualquer parte da memória e não checam automaticamente se dados escritos em um
array (cadeia de elementos – o tipo de
buffer dessas linguagens) estão nos limites do
array. Checagem de limites pode prevenir transbordamentos de dados.