10

哪组 GCC 选项可针对内存损坏漏洞(如缓冲区溢出和悬空指针)提供最佳保护?GCC 是否提供任何类型的 ROP 链缓解?是否存在性能问题或其他问题会阻止此 GCC 选项用于生产中的关键任务应用程序?

我正在查看Debian Hardening GuideGCC 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,如果您知道即将推出的任何酷炫功能,请告诉我!

4

3 回答 3

1

不是 GCC 选项,但与 GCC 兼容。请参阅我们的CheckPointer工具,该工具可检测大多数内存管理错误。

执行速度明显放缓;该工具必须跟踪指针和分配存储的有效性,这会增加开销。

于 2012-11-24T19:05:59.863 回答
0

请参阅GCC 编译 C/C++ 的最强化选项集是什么

因此,下面提供了合理的选择。

警告:

-Wall -Wextra -Wformat-security -Werror

硬化:

-mmitigate-rop -Wstack-protector -fstack-protector-strong -fstack-clash-protection -pie -fPIE -D_FORTIFY_SOURCE=2 -Wl,-z,rel -Wl,dynamicbase -Wl,nxcompat

适合打补丁:

-fvtable-verify=std 
于 2020-10-16T06:59:08.207 回答
0

这不是一个CFLAGSLDFLAGS答案,所以可能不是您要特别寻找的,但您还应该查看为强化目的而编写的 gcc 插件。这些用于强化内核构建并捕获大量错误代码。您可能需要一个 gcc 插件包来安装您的发行版,apt-cache search gcc | grep plugin或者等效于查找包名称。如果您愿意考虑使用他们的 clang 编译器,我相信 llvm 编译器套件具有类似的插件(它主要与 gcc 兼容)

于 2017-04-09T15:24:20.610 回答