文档首页/ 开源治理服务 CodeArts Governance/ 常见问题/ 二进制成分分析类/ 成分分析的安全编译选项类问题如何分析?
更新时间:2024-11-04 GMT+08:00
分享

成分分析的安全编译选项类问题如何分析?

成分分析会检查用户包中的C/C++、Go文件在构建编译过程中是否添加了保护性的编译选项,来保护文件运行时免受到攻击者的攻击。

安全编译选项类问题分析指导:

  1. 导出Excel报告,查看安全编译选项Sheet页。
  2. 根据filepath列寻找目标文件在扫描包中位置,确认文件来源。
  3. 查看目标文件对应的安全编译选项结果。
    • 如果对应项结果底色为绿色或结果值为“YES”或“NA”(rpath项禁选结果值为“No”或“NA”),则说明目标文件满足安全编译选项要求,无需处理。
    • 对于不满足要求的项,排查目标文件的构建脚本,添加对应的编译选项,其中Ftrapv和FS两项由于可能影响性能,请根据实际情况确认是否添加对应选项。
表1 安全编译选项检查项参考说明

检查项

检查项描述

安全编译选项参数

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

相关文档