Какой набор параметров GCC обеспечивает наилучшую защиту от таких уязвимостей, как переполнение буфера и висячие указатели? GCC обеспечивает какой-либо тип смягчения цепочки ROP? Существуют ли проблемы с производительностью или другие проблемы, которые могут помешать этому варианту GCC использовать критически важное приложение на производстве?
Я смотрю на Руководство по усилению Debian так же как GCC Mudflap. Вот следующие конфигурации, которые я рассматриваю:
-D_FORTIFY_SOURCE=2
-fstack-protector --param ssp-buffer-size=4
-fPIE -pie
-Wl,-z,relro,-z,now (ld -z relro and ld -z now)
Есть ли какие-либо улучшения, которые можно внести в этот набор параметров? Предположим, самая последняя версия GCC, если вы знаете о какой-нибудь интересной новой функции, дайте мне знать!
Не вариант GCC, но совместим с GCC. Смотрите наш CheckPointer инструмент, который обнаруживает большинство ошибок управления памятью.
Существует значительное замедление в исполнении; инструмент должен отслеживать правильность указателей и выделенного хранилища, что увеличивает накладные расходы.
Это не CFLAGS
или же LDFLAGS
ответьте, может быть, не то, что вы конкретно ищете, но вам также следует изучить плагины gcc, написанные для повышения безопасности. Они используются в закаленных сборках ядра и отлавливают много плохого кода. Вам может понадобиться пакет плагинов gcc для вашего дистрибутива, apt-cache search gcc | grep plugin
или эквивалент, чтобы найти имя пакета. Я полагаю, что у пакета компилятора llvm есть подобные плагины, если вы хотите рассмотреть возможность использования их компилятора clang (в основном это gcc-совместимый)