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

Стек-канарейка

Что такое Стек-канарейка?

Стек-канарейкаСтек-канарейка — это секретное значение между локальными буферами функции и сохранённым адресом возврата, позволяющее обнаружить переполнение стека до перехвата управления.


Стек-канарейки, предложенные Криспином Кованом и командой StackGuard в 1998 году, — это случайные значения, помещаемые в кадре стека между локальными переменными и сохранённым адресом возврата. Компилятор вставляет код установки канарейки на входе и проверки на выходе функции; при несоответствии программа завершается до использования испорченного адреса. Современные тулчейны включают это через -fstack-protector или /GS и используют случайное значение для процесса и завершающий байт (обычно 0x00), чтобы противостоять переполнениям, включающим канарейку. Канарейки дополняют, но не заменяют ASLR, DEP, CFI и языки с безопасной памятью.

Примеры

  1. 01

    GCC с -fstack-protector-strong добавляет канарейку в функции с массивами.

  2. 02

    Опция /GS в MSVC обнаруживает переполнение от strcpy.

Частые вопросы

Что такое Стек-канарейка?

Стек-канарейка — это секретное значение между локальными буферами функции и сохранённым адресом возврата, позволяющее обнаружить переполнение стека до перехвата управления. Относится к категории Безопасность приложений в кибербезопасности.

Что означает Стек-канарейка?

Стек-канарейка — это секретное значение между локальными буферами функции и сохранённым адресом возврата, позволяющее обнаружить переполнение стека до перехвата управления.

Как работает Стек-канарейка?

Стек-канарейки, предложенные Криспином Кованом и командой StackGuard в 1998 году, — это случайные значения, помещаемые в кадре стека между локальными переменными и сохранённым адресом возврата. Компилятор вставляет код установки канарейки на входе и проверки на выходе функции; при несоответствии программа завершается до использования испорченного адреса. Современные тулчейны включают это через -fstack-protector или /GS и используют случайное значение для процесса и завершающий байт (обычно 0x00), чтобы противостоять переполнениям, включающим канарейку. Канарейки дополняют, но не заменяют ASLR, DEP, CFI и языки с безопасной памятью.

Как защититься от Стек-канарейка?

Защита от Стек-канарейка обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия Стек-канарейка?

Распространённые альтернативные названия: StackGuard, Стековая cookie, GS cookie.

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

См. также