CyberGlossary

Уязвимости

Уязвимость переполнения стека

Также известно как: Stack smashing

Определение

Переполнение буфера, происходящее на стеке программы, обычно затирающее сохранённый адрес возврата или локальные указатели, чтобы перенаправить выполнение.

Переполнение стека — исторический архетип эксплойтов на повреждение памяти: непроверенная запись в буфер на стеке выходит за его пределы и затирает фрейм-указатель или сохранённый адрес возврата, позволяя атакующему перенаправить поток управления в подконтрольные байты (shellcode или ROP-гаджеты). Меры защиты — стековые канарейки (StackGuard, /GS), неисполняемые стеки (DEP/NX), ASLR, теневые стеки и Intel CET, а также FORTIFY_SOURCE и более безопасные строковые функции. Несмотря на десятилетия мер, классические переполнения стека встречаются в прошивках, IoT и старом ПО и остаются регулярной темой CVE и CTF-задач.

Примеры

  • CVE-2003-0352 (DCOM RPC): червь Blaster использовал переполнение стека.
  • CVE-2019-0708 (BlueKeep): переполнение стека в службе удалённого рабочего стола.

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