二进制代码是计算机可以直接解析的编程数据的基本形式。它由一串 0 和 1 组成,以结构化方式排列,可被大型计算机程序中读取和执行。它是一个多阶段编译过程的产物,把用高级语言(例如 C 或 Java)编写的源代码转换为特定处理器架构计算机可执行程序的机器代码。从某种意义上讲,它是从人类可读源代码转换而成的计算机直接语言。
二进制分析是一种代码审查,它查看由二进制代码组成的文件并评估其内容和结构,所有这些都不需要访问源代码。
有些二进制分析工具的运作方式与包管理检查工具类似,后者大致读取文件的“目录”,了解其中所含内容。这种基本分析在某些情况下是足够的,但高级二进制分析工具可以对数据类型、流量和控制路径建模,而不需要反向工程。
使用此模型,高级二进制分析工具可以更深入地识别软件组件并检测其安全缺陷模式。这些发现可用于编写安全和使用报告,并提供关于如何解决代码中问题的建议。
很多时候不能访问源代码进行分析。例如,一些公司购买固件来集成到其产品的硬件中,而此类固件为二进制格式。另一个例子是软件公司利用第三方代码和库(例如框架、容器、GUI 和数据库)来增强其专有代码,而这些库通常不包含源代码。无论是哪种情况,这些二进制文件的用户仍然有必要了解其内在。
二进制分析解决方案帮助组织能够在没有供应商参与的情况下检查二进制代码,识别开源组件、安全漏洞、许可证义务以及可能导致数据泄露的其他敏感信息。
Synopsys Black Duck® 是一款自动化软件组件分析 (SCA) 工具,帮助组织了解软件的组成,以便他们做出更好的购买决策,并管理操作复杂系统和软件的操作风险,无论是否可以查看源代码。Black Duck 二进制分析在编译的软件中识别开源组件,提供开源组件 BOM 以及与这些组件相关的漏洞和许可证信息。
Black Duck 还识别编译器开关、移动权限以及其他形式可能暴露敏感信息的信息泄露问题。此外,Black Duck 不仅仅只是检测这些问题;安全建议还为识别的每个漏洞提供详细的通知,为用户提供正确理解、确定优先级和修复问题所需的信息。
组织还可以利用 Synopsys 的全套静态应用安全测试 (SAST) 解决方案,以及静态分析专业服务,帮助组织在不访问源代码的情况下发现应用中的漏洞。由于基于二进制分析的静态测试解决方案依赖于建模的数据类型、数据和控制路径,因此对结果进行人工检查可以帮助提高此类二进制分析的有效性。这有助于在评估过程中消除噪音和误报,从而更容易发现漏洞并获得可行的修复建议。