
# 查看二进制成分分析报告
#### 前提条件
已[添加二进制成分分析任务](https://support.huaweicloud.com/usermanual-devsecurity/devsecurity_04_0013.html)，且任务状态为"已完成"。
#### 查看扫描报告
1. [登录开源治理服务控制台](https://console.huaweicloud.com/devsecurity/#/secdev/overview)。
2. 在左侧导航栏，选择"软件成分分析 \> 二进制成分分析"。
3. 在"二进制成分分析"页面，可看到全部添加过的任务。单击对应任务的任务名称，也可以单击任务列表操作列的"查看报告"，进入扫描报告页面。扫描报告页面说明如[表1]所示
   
    表1详情总览说明 
   | 栏目      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 任务概况    | - 显示目标任务的基本信息，包括：文件名、文件大小、特征库版本、平台版本等基本信息。  - 显示目标任务的组件检测、安全漏洞、安全配置、开源许可证、信息泄露、安全编译选项、恶意软件扫描检测概况，包括： - 组件检测：展示被扫描的软件包所有的组件数量，有漏洞、未知版本和无漏洞组件数量占比。  - 安全漏洞：展示超危、高危、中危、低危各个级别漏洞数量占比。  - 安全配置：展示通过、失败、不涉及的检测结果数量占比。  - 开源许可证：展示高风险、中风险、低风险各个级别开源许可证的统计信息。  - 密钥和信息泄露：展示信息泄露各检测项结果分布。  - 安全编译选项：展示安全编译各检测项结果分布。  - 恶意软件扫描：展示病毒和恶意代码扫描结果分布。     |
   | 开源软件漏洞  | 显示扫描任务中每个组件的组件名称、组件版本、开源许可证、包含文件数、存在漏洞数以及已确认的漏洞数。 - 组件名称、组件版本和文件数可按升降序查看。  - 可按组件名称、开源许可证对组件列表进行筛选查看，也可以直接输入组件名称进行搜索。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 开源许可证   | 显示开源软件的许可证检测结果，包括许可证使用的集成风险和许可证间的兼容性风险。 - 许可证信息：二进制文件包许可证检测结果，包含许可证名称、集成风险、涉及组件和许可证描述和风险分析。  - 许可证兼容性：二进制文件包中各目录的许可证间兼容性风险检测。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 密钥和信息泄露 | 显示Git地址、IP、硬编码密码、弱口令、硬编码密钥和SVN地址的检测结果。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 安全编译选项  | 显示BIND_NOW、NX、PIC等检测项目的描述、检测结果、不符合文件数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 安全配置    | 显示凭据管理、认证问题和会话管理的检测项目、安全风险等级、检测结果。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 恶意软件扫描  | 显示病毒扫描和恶意代码扫描的结果。 - 病毒扫描结果支持依照文件名称进行搜索。  - 恶意代码扫描结果支持依照恶意类别、威胁等级、置信度进行分类选择，也可以输入文件名称进行搜索。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      
   
   
 
#### 开源软件漏洞分析
成分分析基于静态风险检测，会对用户上传的软件包/固件进行解压并分析其中的文件，识别包中文件包含的开源软件清单，并分析是否存在已知漏洞、许可证合规等风险。如果检测结果存在漏洞或者风险，单击"组件名称"可以查看漏洞的详细信息。
- 单击开源软件漏洞报告页面中的"漏洞刷新"可以刷新漏洞，每天最多刷新1次。漏洞刷新后，需要重新生成和下载报告。
- 单击"CVE"漏洞名称可以查看相应漏洞的"漏洞详情"、"漏洞简介"、"解决方案"、"漏洞修复参考"和"参考链接"。
- 服务提供告警在线分析能力，支持用户针对有漏洞的扫描结果进行自主分析。 单击告警分析列中的"确认"对告警进行分析，选择"影响类别"、"原因"，输入备注后单击"确认"。如果有多个已知漏洞，先选择需要确认的文件名称，再选择需要确认的漏洞名称，单击"批量确认漏洞"可以进行批量确认。单击告警分析列中的"删除"删除已确认的漏洞信息。
  
用户扫描完成后，建议按照以下步骤进行分析排查：
1. 开源软件分析，分析开源软件是否存在以及软件版本是否准确。 基于报告详情页面或导出的报告中开源软件所在文件全路径找到对应文件，然后分析该文件中开源软件是否存在或准确（可由相关文件的开发或提供人员协助分析），如果否，则无需后续分析。
   图1查看文件对象路径   
   ![](https://support.huaweicloud.com/usermanual-devsecurity/zh-cn_image_0000002484493930.png "点击放大") 
2. 已知漏洞分析，分析已知漏洞是否准确。 通过NVD、CVE、CNVD等社区搜索相关CVE已知漏洞编号，获取漏洞详情。
   - **概要分析：** 查看影响的软件范围，如CVE-2021-3711在NVD社区中的Known Affected Software Configurations，如[图2]，确认漏洞是否影响当前使用的软件版本，如果当前使用的软件版本不在影响范围内，则初步说明漏洞可能不涉及/影响。
     图2查看软件版本示例   
     ![](https://support.huaweicloud.com/usermanual-devsecurity/zh-cn_image_0000002516693875.png "点击放大") 
   
   - **精细化分析：** 漏洞通常存在于某些函数中，可以通过社区中的漏洞修复补丁确认漏洞详情、涉及函数以及修复方式，如下图，用户可以结合自身软件对于相关开源软件功能的使用，判断是否涉及相关漏洞。
     图3查看漏洞详情示例   
     ![](https://support.huaweicloud.com/usermanual-devsecurity/zh-cn_image_0000002516573889.png "点击放大") 
    
3. 许可证合规分析。基于报告中开源软件及对应的许可证分析软件是否合规，满足公司或准入要求。
4. 风险解决方式：
   - **已知漏洞**：如果当前使用的软件版本存在漏洞，可通过升级软件版本至社区推荐版本解决。紧急情况下也可以通过社区推荐的patch修复方式临时解决。
   
   - **许可证** **合规**：如果使用的软件存在合规风险，则需要寻找相似功能且合规的开源软件进行替代。
    
 
#### 密钥和信息泄露类问题分析
成分分析基于静态风险检测，会对用户上传的软件包/固件进行解压并分析其中的文件，识别包中是否存在信息泄露类风险，如敏感IP、GIT/SVN仓、弱口令、硬编码密钥等风险。
针对已识别的信息泄露类风险，可以通过查看导出报告中的告警详情，如PDF报告，在结果概览中确认是否有信息泄露风险。如果有，则查看相应信息泄露明细，信息泄露问题列表说明如图[表2]。针对工具扫描出的风险清单，用户可以基于自身实际使用情况判断是否有信息泄露风险，如存在，则采取不同措施屏蔽或修改即可。
 表2信息泄露问题列表说明 
| **告警项** | 告警说明                     |
|:---|:---|
| 文件路径    | 发现信息泄露的文件在包中的全路径。        |
| 上下文内容   | 发现风险的文本行内容，包含风险内容和上下文内容。 |
| 匹配内容    | 实际发现的风险内容。               |
| 匹配位置    | 在文件中x行，x位置发现的信息泄露风险。     |
   
#### 安全编译选项类问题分析
成分分析会检查用户包中的C/C++、Go文件在构建编译过程中是否添加了保护性的编译选项，来保护文件运行时免受到攻击者的攻击。
安全编译选项类问题分析指导：
1. 导出Excel报告，查看安全编译选项Sheet页。
2. 根据filepath列寻找目标文件在扫描包中位置，确认文件来源。
3. 查看目标文件对应的安全编译选项结果。
   - 如果对应项结果底色为绿色或结果值为"YES"或"NA"（rpath项禁选结果值为"No"或"NA"），则说明目标文件满足安全编译选项要求，无需处理。
   
   - 对于不满足要求的项，排查目标文件的构建脚本，添加对应的编译选项，其中Ftrapv和FS两项由于可能影响性能，请根据实际情况确认是否添加对应选项。
    
表3安全编译选项检查项参考说明 
| **检查项**          | **检查项描述**               | **安全编译选项参数**                                   |
|:---|:---|:---|
| 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                                             |
   
#### 安全配置类问题分析
成分分析会检测用户包中一些安全配置项是否合规，主要如下：
- 用户上传的软件包/固件中存在的敏感文件，如（密钥文件，证书文件，源码文件，调试工具等）。
- 用户上传的软件包/固件中操作系统中的用户与组配置、硬编码凭证、认证和访问控制等配置类问题。若不存在操作系统，则不涉及。
 
二进制成分分析任务执行完成后，导出PDF报告，进行安全配置类检查问题分析：
- 搜索"安全配置概览"关键字，可以看到各检查项的结果。
  - pass表示通过。
  
  - failed表示未通过。
  
  - NA表示不涉及（若无操作系统，则针对操作系统配置检查项为不涉及）。
   
- 搜索"安全配置列表"关键字，可以查看具体每项的检查结果。
  - 审视项：检查的方式/方法。
  
  - 扫描结果：显示扫描的结果，结果为通过、未通过和不涉及。
  
  - 原因：存在问题的文件列表，若无问题则显示暂无问题。
   
 
