首页 > IT基础架构 > 网络安全 > 软件开发过程中哪些问题容易导致软件供应链攻击
当前,企业比以往任何时候都将更多的敏感数据委托给供应商和第三方(如政府机构和关键基础设施运营商)。这也导致网络攻击者能够利用软件供应链攻击来破坏关键设施并获取敏感数据。在软件开发过程中如何提高软件供应链安全?
软件供应链是由一个或多个公司、组织或个人组成的软件开发、维护、部署和更新的全生命周期过程。它涵盖了从开发人员编写代码到将该代码发布给最终用户的所有环节,以及在此过程中使用的所有工具和第三方库。
如今,SDLC使用的资源不断增加,包括(但不限于)
第三方代码
组件
二进制文件
外部工具,如包管理器
CI/CD 产品
安全扫描和测试模块
构建和部署自动化脚本
软件供应链攻击(有时称为第三方攻击)是一种恶意尝试,通过利用第三方供应商或合作伙伴的系统或流程中的弱点来访问目标业务。
对于网络犯罪分子来说,供应链攻击是一个特别有利可图的攻击媒介。一个供应商单一漏洞可能在攻击被发现之前打开破坏数千个组织的大门。
网络攻击者使用自动扫描工具来挖掘公共代码存储库、云原生应用程序、未受保护的网络和公共包存储库。他们甚至不需要坐在电脑前寻找漏洞、常见的云配置错误、代码机密以及其他渗透软件开发和分发系统的机会。
一旦攻击者获得他们对用于构建和部署的代码和工具的访问权限,他们就可以在公司提供给其信任用户的代码中植入恶意软件和后门。
从 DevSecOps 的角度来看,根据攻击向量和初始入口点对它们进行分类。
1. 源代码威胁
受损的源代码控制系统和缺乏保护的代码资产是供应链攻击成功的两个主要原因。不良的编码实践、人为错误和不安全的开发环境可能会为恶意代码注入打开后门或泄露敏感信息。
攻击者需要通过获得一些具有许可权限的用户凭证来获得对存储库的高权限访问。或者,他们可以利用开发人员在代码审查中意外引入的漏洞,或者错误地将代码秘密推送到面向公众的存储库中。
SolarWinds就是这类攻击的一个例子,它滥用存储在公共GitHub存储库上的代码中暴露的服务器密码。
2. 软件依赖关系受损
今天的大多数软件都依赖于第三方资源来运行。这些依赖关系(包括直接的和传递的)包括框架、应用程序库、容器的基本映像以及包,这些包支持功能,同时节省开发人员编写其他人已经编写的代码的时间。
当流行的公共资源(如开放源码库)受到损害时,多米诺骨牌效应会在使用该库的每个软件中引入漏洞。如果没有有效的软件成分分析工具(SCA),就无法检测到这些漏洞。
利用流行开源工具中的漏洞进行攻击的例子如Log4j,其中数百万台计算机暴露在攻击者面前。
3. 依赖混淆/包错别抢注
依赖混淆是基于依赖关系的供应链攻击的一个子集,它依赖于开发人员在 NPM 和 PyPi 等存储库中拼错流行包的名称。
虽然此类问题没有导致重大的软件供应链攻击事件,但研究证明,即便是苹果和Microsoft的开发人员也可能被诱骗安装伪装成名称拼写错误的流行软件包的恶意软件。
4. 构建工具
随着越来越多的开发团队和公司采用“一切即代码”作为实践,编码配置可能会成为软件供应链的风险。未充分保护的配置文件(YAML 格式或任何其他格式)会创建潜在的攻击媒介,并使构建工具链被篡改。
针对构建工具的供应链攻击的一个问题是,开发团队识别和减轻它们是具有挑战性的。其中一个例子是CodeCov供应链攻击,黑客成功感染了CodeCov的CI/CD管道,并获得了数千个潜在客户网络的访问权限。
如果没有有效且持续的 CI/CD 安全性,攻击者可能会接管或感染用于交付软件的 CI/CD 管道,从而几乎不受限制地控制应用程序包含的内容和功能。
以下提供了10个用来缓解软件供应链攻击的方法:
1.识别并映射软件组件和依赖项。
2.监控软件依赖项中的漏洞并自动执行安全修补。
3.对软件组件和开发工具使用受信任的来源。
4.在开发过程中进行 SAST 和 DAST 测试。
5.使用 SCA 工具来检测和管理软件依赖关系。
6.实施强大的访问控制、身份验证和授权。
7.执行计划内和计划外的安全测试和漏洞评估。
8.执行代码签名和验证以确保代码真实性。
9.建立 SSDLC 流程,包括安全需求、测试和风险评估。
10.建立事件响应团队并记录灾难恢复计划。
参读链接:
https://spectralops.io/blog/5-types-of-software-supply-chain-attacks-developers-should-know/
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000012/viewspace-2983615/ ,如需转载,请注明出处,否则将追究法律责任。