безопасность — Какой набор параметров GCC наиболее компилируется для компиляции C / C ++?

Какой набор параметров 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, если вы знаете о какой-нибудь интересной новой функции, дайте мне знать!

9

Решение

Не вариант GCC, но совместим с GCC. Смотрите наш CheckPointer инструмент, который обнаруживает большинство ошибок управления памятью.

Существует значительное замедление в исполнении; инструмент должен отслеживать правильность указателей и выделенного хранилища, что увеличивает накладные расходы.

1

Другие решения

Это не CFLAGSили же LDFLAGS ответьте, может быть, не то, что вы конкретно ищете, но вам также следует изучить плагины gcc, написанные для повышения безопасности. Они используются в закаленных сборках ядра и отлавливают много плохого кода. Вам может понадобиться пакет плагинов gcc для вашего дистрибутива, apt-cache search gcc | grep plugin или эквивалент, чтобы найти имя пакета. Я полагаю, что у пакета компилятора llvm есть подобные плагины, если вы хотите рассмотреть возможность использования их компилятора clang (в основном это gcc-совместимый)

0