开源治理服务 CODEARTS GOVERNANCE-成分分析的安全编译选项类问题如何分析?

时间:2024-07-29 18:55:21

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

成分分析会检查用户包中的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

support.huaweicloud.com/devsecurity_faq/devsecurity_02_0026.html