CyberGlossary

Уязвимости

Переполнение буфера

Также известно как: Buffer overrun

Определение

Ошибка безопасности памяти, при которой программа пишет за концом выделенного буфера, повреждая соседнюю память и часто открывая возможность выполнения кода.

Переполнения буфера возникают в языках вроде C и C++, когда длины входных данных не сопоставляются с размером целевого буфера. Лишние байты затирают соседние стековые кадры, чанки кучи, указатели на функции или адреса возврата, позволяя атакующему перехватить поток управления или утечь данные. Классические переполнения стека лежат в основе многих исторических эксплойтов, а переполнения кучи по-прежнему распространены. Современные меры — стековые канарейки, ASLR, DEP/NX, контроль целостности потока управления (CFI), более безопасные функции libc, фаззинг, и всё чаще переход на memory-safe языки вроде Rust. Категория CWE-119 и постоянный участник списков OWASP и SANS.

Примеры

  • CVE-2014-0160 (Heartbleed): переполнение чтения памяти в OpenSSL.
  • Червь Морриса (1988): эксплуатация переполнения стека в fingerd.

Связанные термины