一 基础安全基线
二 推荐的GCC安全编译选项
| 目标 | 选项与示例 |
|---|---|
| 栈溢出保护 | -fstack-protector-strong;示例:gcc -O2 -fstack-protector-strong -o app app.c |
| 不可执行栈 NX | -z noexecstack;示例:gcc -z noexecstack -o app app.c |
| 完整RELRO | -Wl,-z,relro,-z,now;示例:gcc -Wl,-z,relro,-z,now -o app app.c |
| 位置无关可执行 PIE | -fPIE -pie;示例:gcc -fPIE -pie -O2 -o app app.c |
| 位置无关代码 PIC | -fPIC(用于共享库);示例:gcc -fPIC -shared -o libapp.so app.c |
| 符号可见性隐藏 | -fvisibility=hidden(按需对库使用) |
| 强化检查 FORTIFY | -D_FORTIFY_SOURCE=2 -O2;示例:gcc -O2 -D_FORTIFY_SOURCE=2 -o app app.c |
三 构建与交付的加固实践
四 验证与运行时检查
五 常见陷阱与排查