成分分析的安全编译选项类问题如何分析?
成分分析会检查用户包中的C/C++、Go文件在构建编译过程中是否添加了保护性的编译选项,来保护文件运行时免受到攻击者的攻击。
安全编译选项类问题分析指导:
- 导出Excel报告,查看安全编译选项Sheet页。
- 根据filepath列寻找目标文件在扫描包中位置,确认文件来源。
- 查看目标文件对应的安全编译选项结果。
- 如果对应项结果底色为绿色或结果值为“YES”或“NA”(rpath项禁选结果值为“No”或“NA”),则说明目标文件满足安全编译选项要求,无需处理。
- 对于不满足要求的项,排查目标文件的构建脚本,添加对应的编译选项,其中Ftrapv和FS两项由于可能影响性能,请根据实际情况确认是否添加对应选项。
检查项 |
检查项描述 |
安全编译选项参数 |
---|---|---|
BIND_NOW |
立即绑定 |
-Wl、-z、now |
NX |
堆栈不可执行 |
-WI、-z、noexecstack |
PIC |
地址无关 |
-fPIC |
PIE |
随机化 |
-fPIE或-pie |
RELRO |
GOT表保护 |
-WI、-z、relro |
SP |
栈保护 |
-fstack-protector-strong或-fstack-protector-all |
NO Rpath/Runpath |
动态库搜索路径(禁选) |
脚本中删除--rpath |
FS |
Fortify Source(缓冲区溢出检查) |
-D_FORTIFY_SOURCE=2 |
Ftrapv |
整数溢出检查 |
-ftrapv |
Strip |
删除符号表 |
-s |