企业如何开展软件成分分析工作?上海控安有话说

为了加速业务创新,应用开源技术提升开发效率成为企业的主流选择,但这也导致了日益依赖复杂的软件供应链。虽然有诸多优点,但广泛应用开源组件也带来了新的安全挑战,软件成分分析(SCA)应运而生。

软件成分风险日益加剧

近日,Synopsys 公司发布了《2020 年开源安全和风险分析(O***A)报告》。报告显示:2019 年审计的代码库中,有70% 进行了开源,同比增长10%。但其中 75% 的代码库中包含已知的安全漏洞,49% 的代码库包含高风险漏洞。无独有偶,今年3月安全公司 WhiteSource 发布的《开源年度报告》也指出,2019 年公开披露的开源漏洞为 6100 个,同比增长 50%。

除了安全漏洞外,应用开源组件导致的法律风险也日渐增多。很多企业对于开源协议以及引用规范并不是十分清晰,进而引起各种不必要的争议甚至法律纠纷。如博云在使用开源项目 Apache SkyWalking 时违反了该项目声明的 Apache License Version 2.0 开源协议规定被要求整改。

软件成分分析应运而生

组件问题由来已久,但直到不久前,软件供应链还是国内企业忽略的主题,SCA相关工具市场份额也一直被国外企业长期垄断。早在2013年版和2017年版的《OWASP Top 10》文档中,就对“使用含有已知漏洞的组件”进行了收录和分析,以提醒安全团队和开发团队注意由组件自带安全漏洞而对应用引入的安全风险。2019年,Gartner在《应用安全测试(AST)魔力象限》报告中把SCA纳入AST技术领域范围,从而形成了包含SAST、DAST、IAST和SCA的应用软件安全测试技术体系;并正式发布了有关软件成分分析(SCA)的技术洞察报告,对软件成分分析技术进行了准确定义:软件组件分析产品对应用程序进行分析,以检测开源软件组件是否带有已知的安全漏洞或功能漏洞,及需要恰当授权许可的商业软件或第三方产品。它有助于确保企业软件供应链仅包含安全的组件,从而支持安全的应用程序开发和组装。

至此,SCA正式走进国人视野。

软件成分分析应用场景

1.应用软件安全开发场景

随着行业对软件安全开发越发重视,无论是体系化的SDL或S-SDLC开发流程方法落地,还是DevSecOps思想的实践,都对第三方组件的安全使用提出了更高要求。因此,在软件安全开发过程中,SCA将对开源组件进行资产管理与检测分析,这同时适用于传统Web应用开发和新基建范畴应用系统开发场景。

2.软件授权许可分析场景

在知识产权保护的影响下,基于不同软件授权许可的软件代码合理使用,正成为新的技术关注点。近年,国内外已先后发生了多起因未对软件授权许可正确理解而使用开源组件引起的法律纠纷案件。SCA可以对不同软件组件的授权许可进行分析,避免潜在的法律风险。

企业如何落地软件成分分析
企业落地SCA通常有以下典型痛点:

  • 对开源组件管控缺乏统一规划和管理体系;
  • 搞不清自主研发或外包研发的软件系统使用了哪些开源组件;
  • 搞不清这些开源组件当前的安全状况;
  • 没有专人专岗,且理不清与软件开发团队、安全保障团队之间的工作关系。
    基于上述思路,上海控安研发工业软件成分分析工具SmartRocket Scanner,通过使用者所上传的二进制文件或是源代码的连接,检索其中所利用的开源文件,并与国内外数据库进行比对,检测文件中所存在的安全漏洞与许可证隐忧等问题,并提供相对应的信息与修复建议。

企业如何开展软件成分分析工作?上海控安有话说

此款工具在C/C++等代码分析方面具有显著优势,是国内首款采用双引擎模式分析源代码与二进制文件的漏洞扫描工具,可支持C/C++在内的10多种主流编程语言。

企业如何开展软件成分分析工作?上海控安有话说

特色功能

  • 快速分析软件所用到的开源库,能够透彻扫描每一条源代码或二进制文件。
  • 检测开源库的漏洞,通过与CVE漏洞库作对比,给出相应的报告。
  • 分析开源库的许可证合规性,检测潜在的使用许可隐忧。
  • 分析漏洞关系网,可了解并追溯漏洞的来源,降低安全管理的复杂性。

产品优势

全面的程序语言支持

支持10+种程序语言(C、C++、Python、Java、JavaScript、PHP等)

支持20+种不同格式的二进制文件(.apk、.jar、.exe、.arm等)

误判率低

误判率<7%

针对Java, JavaScript, Python等语言误判率可低于2%

高效率研发团队

及时更新数据库信息,处理用户反馈建议,使拥有更完善的使用体验

部署方式多样化

支持即用软件(SaaS)和内部设置(On Premise)两种部署模式

企业如何开展软件成分分析工作?上海控安有话说

对安全管理者的建议

最后,让我们看看Gartner报告中向负责应用程序安全和数据安全的管理者提出的建议:

为每个应用程序持续构建详细的软件材料清单,从而全面洞察每个应用软件的组件情况。如果存在无法验证来源的开源组件,则不允许使用。
通过强化软件供应链来降低安全风险。这包括检查内部和外部源代码、支持脚本、配置文件和其他工件,并创建可信开源组件的内部存储库。而对外部存储库的使用要合理管理。
通过制定策略确定可接受的开源组件、对在代码中发现漏洞或受限软件许可的合理响应,来管理风险。
当用评估工具给出特定软件包的整体状况报告以判断软件产品的安全能力时,再多考虑一下安全漏洞和授权许可以外的问题。

猜你喜欢

转载自blog.51cto.com/14369002/2514518