酷探是一款全方位智能软件成分分析工具,利用智能漏洞分析引擎确定代码库中的开源组件及漏洞信息,此工具也是市场上一款同时支持二进制扫描和源代码扫描的软件成分分析工具。该引擎利用持续深度学习与专家验证等技术来处理万亿字节级别的开源与闭源的漏洞数据,同时利用第三方数据库与开源组件独有的特性和漏洞特性来提升扫描结果的准确率。
开发团队通过利用已知开源组件的特征,分析和挖掘软件应用程序中所使用的开源组件,并与我们独有的漏洞与许可证数据库进行对比,以识别软件开发和部署阶段中所存有的安全隐患问题。
图表 1 软件开发与部署阶段流程图
扫描形式
• SCA源代码扫描
• SCA二进制文件扫描
扫描引擎
• 源代码 - C/C++语言扫描引擎
• 源代码 - Java, JavaScript, Python,Go, Ruby等
• APK文件扫描引擎(SCA+SAST)
• 二进制文件扫描引擎
酷探利用智能漏洞分析引擎来扫描组件中所含的漏洞与许可证风险。该引擎利用了第三方数据库与开源组件独有的特性和漏洞特性来提升扫描结果的准确率。
为了让用户的整体操作更为轻松便捷,酷探能够无缝集成到用户的软件开发周期中,我们对Jenkins, Bamboo, Travis CI, Azure Team Foundation Server, Circle CI, GitHub, Bitbucket,Huawei CodeBuild和Gitlab等等主流集成框架和代码管理平台都提供了SaaS和本地的支持,让开发人员在集成酷探时,无需对其现有的构建和部署流程进行较大更改,减轻用户因使用新工具而带来的额外工作量。
图表 2 酷探扫描流程图
组合二进制和源代码分析
我们将最前沿的二进制逆向工程技术与源代码特征读取技术相互结合,让用户能够在一款工具上同时对源代码和二进制程序进行分析,并允许用户在不同的开发阶段都能够对其源代码或是二进制文件进行扫描。这使得酷探成为可以同时支持二进制文件扫描和源代码扫描的软件SCA工具。
汉化漏洞描述
酷探是国内唯一一款能够对CVE安全漏洞进行了汉化处理的软件成分分析工具,最大程度的实现对国内用户全面的支持,让用户对漏洞描述的理解变得更为轻松容易。在用户界面上,用户可自由切换界面语言,对漏洞信息进行双语翻译核对。
强大的漏洞数据库
我们拥有超过10万个开源与闭源漏洞数据作为支撑,而这些数据也已经被分类标签为“受漏洞影响代码片段”,“潜在安全漏洞”,“修复漏洞代码片段”和“可能被进攻代码片段”等数据(5.9代码修复补丁),协助用户更好的洞察其代码中所存在的所有风险。此外,在数据更新方面,针对SaaS版或是本地版(联网)的用户,我们的漏洞数据库的更新频率为每6小时一次,而对于本地版(断网)的用户,我们将每周为用户提供一个数据更新包,供用户下载使用,确保用户能在第一时间获得最新的漏洞报告和信息。
深度许可证分析
酷探不仅可以帮助用户检查开源组件中的许可证详情,还能让用户自定义许可证扫描规则,以进行更深入的许可证分析和检查。用户在定义许可证策略时,对于已知的许可证,用户能直接将许可证名字加入许可证规则中;对于未知的许可证,用户则可以通过将许可证属性加入规则的方式,让所有未知,但包含该属性(例:公开源码属性)的许可证,自动被归类在用户定义的许可证规则中。
图表 4 许可证政策定义
依赖关系图
酷探通过创建依赖关系图,把项目中的复杂依赖关系和组件以图形方式呈现出来,让用户更加直观的了解项目中的依赖关系及组件。
专有知识图谱
大型企业可能同时维护数十到上千个项目,而其中可能有多个项目共同存在相同的漏洞和许可证问题。酷探提供专有的知识图谱(图表 5),为用户展示一个所有被扫描过的项目之间的相互关系视图,协助用户以更快的,更低的成本来修复问题。
图表 5 知识图谱
此外,用户也能对知识图谱进行自定义操作(仅显示漏洞危害等级为超高和高的漏洞、仅显示关于Java的项目、仅显受限类型的许可证等),对知识图谱内容进行调整(图表 6)。
图表 6 自定义知识图谱
IDE集成
对于希望每次编译时都能进行扫描,或是机构尚未设置“持续集成(CI)”Pipeline的用户,酷探也提供了对IDE集成的服务。酷探当前支持的IDE包括:
• Eclipse
• Visual Studio
用户能够在以上IDE的Marketplace内找到产品的Plugin工具。用户仅需在Plugin内输入登录信息,即可对自身的代码进行一键扫描/编译后自动扫描。
API集成
我们提供一套完整的API接口。第三方系统可以通过我们提供的API直接调用我们的产品。若第三方系统按照我们提供的API对其系统进行封装,我们也可以直接集成第三方系统来支持新的扫描引擎。此外,我们也准备了一系列明确的swagger API文档,可以有效协助API集成工作的开发。
代码修复补丁
酷探根据用户所扫描的代码语言,提供了两种不同的漏洞修复方式。
1、C/C++ 项目修复
图表 7 用户代码中的漏洞代码片段图
图表 8 用户可即用的补丁代码片段图
2、Java, JavaScript, Python, Ruby等语言。
图表 9 其他语言代码修复补丁
酷探在修复兼容的推荐算法上,进行了多维度的考量。在进行修复版本推介时,酷探除了向用户推介距离当前使用版本最接近的版本,降低兼容问题之外,也将其他因素如:下一个版本是否引入新的漏洞?下一个版本是否仍存有漏洞,但危害程度较低?版本降级是否会是更优的补丁?等综合因素一并考虑,为用户提供最安全最稳定的补丁建议。
3、批量修复
在项目漏洞页面上,酷探也提供了批量修复漏洞的选择,用户可根据组件名,一键选取所有需要修复的直接和间接依赖漏洞,对GitHub/Gitlab等一次性创建一个Pull Request。
图表 10 批量修复
扫描格式支持
源代码格式
二进制格式