Существуют всевозможные передовые методы кодирования для предотвращения атаки переполнения стека, но этот вопрос не об этом. Что я хочу знать, так это как запретить законному пользователю, не являющемуся администратором, запускать фрагмент кода, который намеренно вызывает переполнение стека / кучи для получения доступа администратора? Что может сделать системный администратор, чтобы заблокировать такие попытки? Я знаю, что DEP - это один из методов, но из того, что я прочитал, он не может остановить все атаки.
Я специализируюсь на системах Windows.
Процесс должен запускаться с правами администратора, чтобы быть уязвимым для атаки, которая предоставляет выполнение произвольного кода администратора или доступ к оболочке.
Общий вектор - это либо системный процесс, построенный -в службе, или сторонняя служба, работающая как СИСТЕМА или с какой-либо учетной записью администратора.
Часто обновляйте свою систему и приложения и не предоставляйте пользователям доступ к запуску произвольного кода с правами администратора.
Использовать EMET https://technet.microsoft.com/en-us/security/jj653751 для предотвращения подобных атак, в том числе средства защиты от ROP и переполнения. Эти ограничения важны, поэтому EMET автоматизирует настройку параметров. Он также предотвращает большое количество других атак.