为何公司需要关注软件供应链安全?
软件供应链基本上是指开发软件产品所涉及的一切,包括所有组件、软件包和代码库。现代软件产品包含依靠其他代码的大量依赖项,因此查明哪些漏洞破坏哪些软件产品和工具可能是一项颇具挑战性的技术活。
安全软件供应链有滞后,安全事件难免会发生
由于软件供应链安全方面的问题或错误,迄今为止发生过多起安全行为。比如说,2017年的NotPetya和Equifax数据泄密事件影响了数百万用户。这表明了软件供应链攻击的潜在规模及其对恶意网络活动的战略实用性。
很多时候,公司也不及时披露软件或网络遭到了破坏,从而使整个客户和合作伙伴生态系统岌岌可危。比如2017年Kingslayer Windows日志管理软件遭到攻击事件:中国攻击者盯上了这款Windows IT管理应用程序,注入了有效签名的恶意代码,恶意代码可以通过更新或下载该应用程序进行传播。那次攻击破坏了全球各地的诸多系统,包括大学、国防企业、政府组织、银行、IT及电信公司以及其他企业。
之所以发生这种情况,是由于该恶意软件安装了一个辅助软件包,该软件包可以上传和下载文件,执行恶意程序,并运行任意的外壳命令。一家国防承包商在其环境中发现一款软件在ping已知是不良IP的IP地址后,察觉了这起攻击。现在,如果警惕的软件供应链安全和管理机制部署到位,本可以避免这种情况。好消息是,随着DevSecOps和Gitops方面取得进展,这成为了现实。
您应了解软件环境中的一切
作为开发人员,您应了解自身环境中的内容,发现可能带来安全问题(比如许可证问题或依赖项漏洞)的任何软件问题,并尽快打上补丁。容器是软件供应链中必不可少的一部分,使补丁工作变得很顺畅。容器让您可以轻松重新构建、测试并重新部署到您的环境中,没有任何停机时间。
如果公司在这方面积极主动,可以借助自动代码扫描和补丁确保容器层面的最佳安全。当然,很多时候说起来容易做起来难,因为软件管道会逐渐变得很复杂。但主动打补丁可以在任何重大数据泄露发生之前及时解决大多数安全问题。
大多数开源项目并不遵循严格的组织结构,而是依靠自我组织和协作方法来推动软件创新和发展。这可能是确保真正的软件安全供应链面临的主要问题。
现在有了GitOps,运营团队不仅可以将基础架构定义为代码,还可以通过提交人们可共同审核和批准的合并请求进行部署和更改。开发应用程序时,GitOps使得在持续交付服务器上进行持续集成变得无处不在。团队致力于构建产品时,这有助于融入DevSecOps实践。
GitHub上确保安全软件供应链的工具
虽然许多公司使用Github来托管代码,但是有一项名为依赖关系图(dependency graph)的功能可以进行扫描、进行安全分析,包括许可证方面的信息和针对易受攻击的依赖项的安全警报。比如说,如果团队添加的一个新依赖项有漏洞,或者在现有的依赖项中发现了一个新漏洞,他们会收到警报,可以通过打补丁来解决。