为了满足数字经济的进程,软件行业迅速发展,微服务、容器等新技术日新月异,开源软件成为业界主流形态。同时,软件供应链越来越趋于多样化和复杂化,针对软件供应链薄弱环节的网络攻击也不断增加。现在,软件供应链安全已成为一个全球性问题。
近几个月,Log4Shell漏洞风波未平,Spring4Shell漏洞风险又起。这两个零日漏洞都反映了不安全的开源组件可能对业务产生影响。Log4j2是支持企业应用日志功能的开源组件;Spring Core Framework是Java软件开发中最常用的框架之一。大多数企业级应用,包括我们常用的购物网站、社交媒体等,都有很大几率用到这些组件。一旦遭遇攻击,影响范围甚广。
新思科技(Synopsys)发布的《2021年开源安全和风险分析》报告(OSSRA)曾指出,开源和第三方软件的使用持续快速增长。这意味着开发团队在企业软件开发生命周期(SDLC)中一般会以某种形式引入开源组件。
新思科技中国区软件应用安全技术总监杨国梁指出:“如果您的团队是软件提供商,那么对开源的使用以及构建应用程序所依赖的第三方和商业组件,将使您成为供应链的一部分。不过,需要注意的是,这条供应链并不是只有您的团队,它不限于开发和交付环节,而是一直延伸到应用程序的最终用户。供应链包含与应用程序相关或在其编写、开发和部署中使用到的所有组件和服务。由此可见,供应链还包括由开发团队创建的专有代码和组件、软件使用的 API 和云服务,以及用于构建该软件并将其交付给最终用户的基础架构。”
从根本上讲,确保软件供应链安全必须考虑如何保护应用远离上游风险,以及如何防止企业产生下游风险。为了帮助您轻松便捷地开始解决供应链安全问题,新思科技归纳了有助于安全活动取得成功的六个考虑因素。
1.您使用的开源软件是否安全?
很难说开源软件和闭源代码哪一个带来的风险更多,然而如果不能对开源组件进行充分防护,就会给企业的整体安全带来巨大风险。开发人员很可能在其创建的所有应用程序中都使用开源组件。新思科技2021年OSSRA报告证明了这一事实:98%的被扫描代码库中包含开源组件。
开源很可能被采用在每个项目,但通常不会引起注意。合作的软件供应商也是如此;他们的开发人员也会有意或无意地将开源引入到其项目中。虽然这本质上并不是一件坏事,但也确实为上游风险打开了敞口。您有责任跟踪供应链中的开源组件、许可证和漏洞及其相关风险。鉴于这项工作规模很大,因此,仅依赖人工是行不通的,而且维护也极其费时费力。
除安全风险外,企业或组织还必须考虑法律风险。与安全风险相比,许可证违规和冲突等原因而产生的法律影响通常不太受到关注,但很容易演变成并购、供应商纠纷和分销问题。供应链漏洞产生的法律风险会对软件供应商或分销商的声誉和财务安全构成威胁。
另外,当开发团队使用过时的组件、近期未更新的组件、或因开发社区人手不足而未能对代码进行积极维护的项目组件时,就可能引入运营风险。除了带来代码质量、可靠性和可维护性问题外,运营风险也是引发安全风险的途径。
2.您编写的代码是否安全?
由于大部分的应用代码都是开源代码,因此,总体攻击面的一大部分都是针对开源组件的,这点不足为奇。然而,确保您的开发人员编写的代码能够有效地保护敏感数据和系统免受网络攻击仍然至关重要。
无意中编码到应用中的安全缺陷和漏洞为诸多攻击打开了大门,例如缓冲区溢出、SQL注入和跨站脚本等。假如系统发生漏洞,这些安全缺陷会导致敏感数据容易暴露。攻击者可以利用这些漏洞注入恶意代码,然后伺机渗透操作系统以及运行
该软件的企业所维护的其它系统
3.您能保护自己不被故意埋下的恶意代码所伤害吗?
权威独立调研公司Forrester在2021年网络安全事件预测中指出,三分之一的安全漏洞由内部威胁引起。无论是心怀不满的开发人员创建后门,还是黑客入侵系统并发起更大的攻击,处心积虑埋下的恶意代码都会给您构建和运行的软件带来重大风险。由于大多数的恶意代码都是由熟悉软件系统的人员植入,因此,易受攻击的系统看起来可能完全正常,导致使用传统工具难以识别出这些风险。
4.您的开发和交付基础架构是否安全?
数据存储需求不断增长,部署期限越来越短,而且快速可扩展性变得空前重要。面对这种情况,软件行业越来越依赖云技术为其应用软件提供动力。这种云原生方法在某种程度上意味着采用能够满足可扩展性和敏捷性需求的应用部署方法。这正是容器化和基础架构即代码 (IaC) 的用武之地。因此,企业需要很好地了解哪些软件被打包到容器中,以及云平台如何使用IaC来确保部署安全。
5.您的应用与其它系统进行通信的API和协议是否安全?
API和协议允许您在应用和用户之间快速地传输数据和服务。尽管这些方法日益普及,但大多数企业都难以维护其所使用的API清单。因此,他们对哪些应用和用户可以访问哪些服务的控制力有限。
缺乏对API的可视性和控制会威胁到关键系统和敏感用户信息的安全性。黑客会伺机利用固有缺陷来执行破坏关键系统或发动中间人攻击(本质上是窃听)等行为,最终目标是窃取密钥、密码、登录凭据和账户详情等信息,以便在供应链的其它地方发起杀伤性更大的攻击。
6.您的软件供应链对客户和其他利益相关者是否透明?
让消费者了解他们正在采购的应用中包含哪些组件,从而更加准确及时地发现并消除安全与合规问题。维护软件物料清单(SBOM)也是供应链安全计划取得成功的最佳实践和基石。如果没有针对应用中所含内容的完整动态视图,您自己、供应商和消费者都将无法自信地确定所面临的风险。
新思科技开源专家王永雷总结道:“我们建议企业结合上面列出的问题,检查现有的安全活动、政策和程序。这样可以有助于找到供应链安全计划中需要关注的薄弱环节。虽然供应链安全看似遥不可及,但理清其中的关联,将其分解为清晰简洁的考虑因素,能够帮助您更快地构建安全、可信的供应链。当然,这也需要借助Black Duck软件组成分析等工具,创建和管理企业级的上下游软件供应链完整的SBOM,处理已识别出的薄弱环节, 并消除潜在的风险。”