从概念到安全实践:软件供应链基础指南
转载自 SEAL安全
时至今日,绝大多数的开发者并不是从零开始进行软件开发,而是在创建软件时依赖第三方资源。通过使用预先构建的库和开源组件,工程师们可以加快开发进程并且降低生产成本,从而快速将产品推向市场。
因此,企业需要意识到软件并不完全在他们的掌控之中。那么是哪些流程、组件和工具构成了你所部署的软件呢?
什么是软件供应链?
“供应链”这一术语通常用于制造业,是指制作和分发一个产品的人员和流程。例如,一家造飞机的公司会自己制造一些部件,也会从其他公司购买和组装部件。他们根据设计规格组装零件,然后对新飞机进行测试。通过测试后,新飞机会被交付到航空公司和飞行员手中。
现代软件的开发流程与此类似:一个软件是由多个组件组成,涉及到多个开发人员、团队和某家公司的内部与外部系统。并且像飞机一样,软件也需要通过压力测试。
因此,我们将软件供应链定义为在软件开发中所涉及到的组件、开发流程以及投入生产和最终软件产品分发的过程。
软件供应链由什么构成?
上文中我们已经讨论了软件供应链的定义。构成软件的诸多组件中,有部分依赖项并非由你的团队开发:
- 硬件和基础架构
- 操作系统
- 编译器和编辑器
- 驱动和依赖项
- 开源脚本和打包好的软件
- 代码仓库引擎、测试套件以及CI/CD工具
- 云服务和数据中心
同时,供应链会包含公司外部的人员配置,比如外包公司、咨询师以及供应商等。因此,软件供应链安全的首要关注点是将风险管理和网络安全原则相结合,这一做法可以检测到第三方组件给软件带来的风险,并将其最小化。
软件供应链管理
在大型软件的开发过程中会涉及到成千上百个组件、多个团队的协同合作,因此会遇到诸多安全问题。进而可见性、明确的规范以及根据软件开发进度进行持续的改善对于大型软件开发至关重要。
1. 软件材料清单
撰写一份优秀的文档绝非易事,但列出代码中的第三方成分列表则是必须的,这可以让开发人员对软件中可能存在的风险有基本的了解。通过这一列表,能够清楚地知道最新的安全新闻是否与软件中的组件相关。
这些列表被称为软件材料清单,或 SBOM(另一个取自制造业的术语),它们由官方发布并且计算机可以直接对其进行处理。这些清单里详细说明了软件中的各种组件和依赖项。
除了可见性这一优势外,构建这份清单还能够与客户建立信任,证明企业具备安全意识以及确保许可证的合规性。基于此,你不需要向客户开放所有源代码,同时可以根据需要与客户分享他们所需要的信息。
2. 信息访问管理(IAM)和数据治理
目前,软件开发还是一个高度线性且类似于生产线的碎片化过程。现在,企业们正试图消除这一障碍,并跨团队整合工作流程,即 DevOps。开发和运维之间的合并意味着团队之间的协作将持续增加,目前这样的整合已在业界取得初步成效。
在急速变化的环境中,避免数据泄露或敏感信息的丢失比以往任何时候都更加重要。为了保护数据,公司需要实施强有力的 IAM 策略和数据治理程序。部分企业甚至采用 DevSecOps 的方式来确保协作中的安全性。
首当其冲:软件供应链是恶意攻击的首要目标
因为软件由第三方组件构成,因此对软件的攻击已经转移到对供应链的攻击。针对 SolarWinds 的攻击事件是绝佳佐证——通过对多个组件实施攻击进入该公司的网络和应用程序监控平台,从而对使用该系统的 30000 多个组织造成影响。在进入系统之后,攻击者将恶意代码插入该公司的软件中。
当 SolarWinds 向其客户发送更新时,无意中授予了对客户账户的后门访问权限,这使得黑客不仅可以访问属于 SolarWinds 的系统,还可以访问每个安装该更新的公司的系统。
1. 针对开源项目的攻击呈上升趋势
研究显示,黑客正积极瞄准开源组件以伺机进入软件供应链。在过去的12个月内,针对开源工具的网络攻击增加了650%。
Sonatype在《2021年软件供应链的现状》报告中指出,传统软件供应链攻击集中在公开披露的漏洞。在过去3年里攻击者已经改变了攻击策略并且频繁向连接全球供应链的开源项目注入恶意代码。
换言之,他们的目标是“上游”组件,或者是分发软件工作流程和更新的服务。这会影响到大量位于下游的终端用户,最终会牵涉到多家组织。
2. 破坏软件更新成为主要攻击手段
通过破坏已经广泛传播的软件更新,攻击者可以获取大量的系统访问权限。例如,许多公司每月会定期发布新的安全补丁,这些补丁会被成千上百万的开发者下载用于开发他们的项目或应用于 CI/CD 流水线中。如果攻击者可以操纵其中一个更新,那么他们就可以轻松地获取部署了该补丁的系统的访问权限。
如何保障软件供应链安全?
1. 快速响应漏洞
传统软件供应链攻击仍然是一个令人担忧的问题,公司在漏洞披露后处理漏洞的窗口期越来越窄。在漏洞出现后未能及时更新其应用程序的企业很有可能会输给竞争对手。因此,IT团队必须利用SCA测试工具来发现第三方代码中的漏洞,并提出补丁和更新等修复措施。根据 Veracode 近期的《软件安全状况:开源软件版本》报告发现,92%的库缺陷都可以通过更新来修复。
2. 保持高度的供应链可见性
发现漏洞仅仅是成功的一半。在了解安全问题之后,开发者需要更新使用了该代码的软件,这需要保持对整个软件供应链有高度的可见性。为了使你的应用程序的依赖关系有完整的可见性,你需要问自己一些问题:
- 开发生命周期的每一步都涉及什么?
- 外包员工是否拥有代码权限?
- 谁安装了软件更新并且是如何安装的?
企业应该审计其所有的应用程序以及授予内部和外部各方的访问权限。理想情况下,这一切应该是有据可查的,并且是自动化的,所以当一个漏洞发生时,你可以迅速找出拥有该访问权限的人员。
3. 组件黑名单机制
及时的沟通是防止攻击的关键。一旦开发人员和社区成员发现有害的组件,这些项目就不能进入生产。团队可以标记出问题组件,并建立一个框架来跟踪和防止它们重新进入软件开发流程中。
4. 更新和监控代码
当代码停止更新或处于 EOL(end-of-life)阶段时,就无法将其留在应用程序中。因此,必须保证软件所采用的组件代码仍然被社区广泛使用并且有技术支持。
将过时的代码留在应用程序中会导致漏洞,进而影响整个软件供应链。因此,一旦你得知某个代码库或项目要关闭或停止维护,就必须将其移除或使用替代项目。
5. 确保特权访问管理的安全
一旦攻击者获得系统访问权限,他们将会试图通过网络横向移动来找到特权账户。一旦成功,他们将使用该账户来访问敏感数据或控制其他系统。
因此,安全团队应该密切监控特权账户的异常活动——密码变更、登录活动以及权限更改等,并且应该及时响应。假设一个域名管理员账户多次尝试输入错误的密码,那么安全团队应该立即开始进行调查并且锁定该账号,直到他们确定这只是一次合法的行为。
管理员应该采用最小权限原则——只有在必要时才应授予高等级的访问权限。系统管理员应该使用自动化和配置管理工具来控制和监控账户管理。这就使得人为干预的空间大大缩小了。
总结
企业必须意识到现在他们时刻生活在网络攻击的威胁中,这是当前环境下的全新挑战。而软件供应链一旦遭遇攻击,将会为企业带来重大的损失。要避免此类攻击,需要企业安全团队了解整个软件供应链,审计软件所依赖的第三方,扫描软件组件的漏洞,并且有一个强有力、可执行的软件供应链管理计划。
参考链接:
1.State of Software Security v11: Open Source Edition, https://info.veracode.com/fy22-state-of-software-security-v11-open-source-edition.html
2.Software Supply Chain Management: An Introduction, https://www.sonatype.com/resources/software-supply-chain-management-an-introduction
3.2021 State of the Software Supply Chain Report, https://www.sonatype.com/resources/state-of-the-software-supply-chain-2021
从概念到安全实践:软件供应链基础指南相关推荐
- Salesforce 容器化 ISV 场景下的软件供应链安全落地实践
随着企业 IT 数字化转型演变进程,越来越多的企业采用云原生化架构升级的方式,改善应用开发运维迭代的效率,加速企业业务创新迭代,改进资源弹性管理和迁移的效率,帮助企业降本增效.但是由于云原生弹性.敏捷 ...
- 《安全大讲堂》 第十四期|不破不立:软件供应链的威胁与方案
近三年来软件供应链安全概念持续升温,新型威胁仍层出不穷,从Log4j漏洞到node-ipc组件投毒,近年来自软件供应链安全威胁涌现,企业违反GPL许可证的案例也屡见不鲜. 供应链安全事件爆发的频次和影 ...
- 美国软件供应链安全行动中的科技巨头们
本文 2987字 阅读约需 8分钟 软件供应链安全行动,科技巨头成为重要角色.现在美国已形成科技巨头与政府.开源社区等机构密切合作的态势. 我国软件供应链安全同样有众多科技和网络安全企业加入,未来 ...
- 国标解读|从关键信息基础设施安全国标看软件供应链安全
近日<信息安全技术 关键信息基础设施安全保护要求>国家标准正式发布,<要求>中更是从管理机制建立.采购管理.网络产品和设备提供者的责任义务与产品及服务的风险控制方面对供应链安全 ...
- 聚焦热点 | ISC 2022软件供应链安全治理与运营论坛圆满落幕
"软件供应链的开源化使得软件供应链的各个环节都不可避免地受到开源应用的影响.尤其是开源应用的安全性,将直接影响着软件供应链的安全性.除开源应用开发者在开发过程中引入安全缺陷之外,也可能会存在 ...
- NISA和CISA分享软件供应链安全建议
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
- 浅谈软件供应链安全治理与应用实践
随着容器.微服务等新技术日新月异,开源软件成为业界主流形态,软件行业快速发展.但同时,软件供应链也越来越趋于复杂化和多样化,软件供应链安全风险不断加剧,针对软件供应链薄弱环节的网络攻击随之增加,软件供 ...
- 美国“加强软件供应链安全实践的指南” (SSDF V1.1草案) 解读来了
聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...
- 浅谈软件供应链安全治理与DevSecOps落地实践
01 背景介绍 近几年,供应链安全事件频发,给安全行业带来了巨大影响,包括大家熟知的log4j远程代码执行漏洞等.Gartner表示,现代软件大多数是被"组装"出来的,不是被&qu ...
最新文章
- 看了SUMTEC的稍微思考了一下…… 感触颇深。讲一件身边的事:
- 常用正则表达式汇总(数字匹配/字符匹配/特殊匹配)
- vim匹配特定的行并删除
- 【NLP】全方位解读 | Facebook的搜索是怎么做的?
- 降低winnt Apache服务的权限,让你的虚拟主机更安全
- rocketmq 消息 自定义_跟我学RocketMQ[1-4]之消息消费及支持spring
- 【转】利用python的KMeans和PCA包实现聚类算法
- sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
- 大数据系列博客之 --- 深入简出 Shell 脚本语言(提升篇)
- 字节回应阿里涉侵犯男员工曾面试并通过一面;HarmonyOS 2.0用户数升至5000万|极客头条...
- java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...
- vue环境搭建及创建项目
- vue app准备学习工作
- 使用百度API获取位置信息
- Python自动化小米手环运动数据导出
- MOOS程序解析记录(6)pLogger
- 精品微信小程序校园第二课堂在线学习网+后台系统|前后分离VUE
- 如何将二维码巧妙放进海报里?
- 上传图片到OSS,并按指定大小范围压缩图片。完整工具类+三层调用
- VMtools的安装教程
热门文章
- Genaro Network - 区块链技术如何让隐私权受益
- en结尾的单词_形容词加en前后缀变动词的英语单词不一定变动词,其他词性也可以...
- 栈与队列-之出栈和入栈
- picsart下载_PicsArt美易下载
- 第十四届蓝桥杯(Web应用开发)模拟赛1期-大学组
- /[^\d]/g 是什么意思
- 用过游戏加速器后DNS一直被指定无法自动获取如何解决!!!
- html精灵图资源,知识分享:HTML5+CSS3基础之CSS Sprites(CSS精灵)
- Google 街景已增至37个城市
- 新能源电机控制器简介