Я пишу сетевой демон C++ для Linux, который по своей природе должен слушать общедоступный Интернет.
Какие переключатели GCC следует использовать для включения функций безопасности, чтобы злоумышленнику было сложнее использовать ошибки в моей программе?
В настоящее время я использую протектор стека. (GCC: -fstack-protector, LD: -Wl, -z, relro, -z, сейчас).
Какие другие функции я должен включить (кроме всех предупреждений и т. д. о проблемах в моей программе)? А ПИЕ?
Как проверить, действительно ли эта функция активна в запущенном процессе? Я нашел lsexec, но, например, он не показывает любой процесс, использующий PIE в моей системе, поэтому я не уверен, насколько он надежен.
Обновление:
На данный момент я нашел руководства по усилению защиты от Debian и Ubuntu и этот похожий вопрос. Но пока ничего о том, как проверить, что на самом деле активно в исполняемом файле.