诸子笔会 | 赵锐:基于DevOps的软件供应链安全
自2021年6月起,安在征文全新“改版”——“诸子笔会,打卡征文”。简单来说,我们在诸子云社群招募“志愿者”,组成“笔友群”,自拟每月主题,互相督促彼此激励,完成每月一篇原创,在诸子云知识星球做主题相关每日打卡,同时邀请专业作者群内分享,互通交流。我们的目标,不仅是在持续8个月时间里,赢取累计8.8万的高额奖金,更是要探索一种脑力激荡、知识分享的新思路和新玩法。本期发文,即诸子笔会月度主题来稿之一。
基于DevOps的软件供应链安全
文 | 赵锐
赵锐
某跨国企业
网络空间安全和合规负责人
背景
供应链安全所包括的内容广泛而庞杂,上到国家下到家庭都要关注。例如:商务部发布的通知和全国各地政府应急管理部门发布的《家庭应急物资储备建议清单》,就是保障家庭生活物资的供应链安全。
供应链安全也是从古至今我华夏文明长期研究并要做好准备的工作。相信大家都听过:兵马未动,粮草先行。春秋时的《孙子兵法》有云:“故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知之者不胜。”对应到供应链的五事,一曰道,行政部门、财务部门;二曰天,国家政策及市场环境;三曰地,供应链的上下游企业;四曰将,人事部门;五曰法,用系统管理的方法把上述这些有效结合在一起,让它们高效运作为组织服务。只有这样的供应链管理才能是集中力量提升效率,让组织在这千变万化的市场中立于不败之地。
供应链安全对于组织来说非常重要,在当前进入云计算、大数据、物联网、移动互联网、人工智能的时代,为了更好地服务客户适应市场,大多数组织都通过软件进行组织管理和客户服务,软件更新换代的需求越发频繁,软件供应链中间某一环节出错,就会造成连锁反应,影响组织的业务安全。越来越多的组织将软件开发模型从原来的瀑布模型,升级为更敏捷并且更适合当前时代的研发运营一体化(DevOps)模型。
软件供应链安全风险
DevOps中的内容非常多,需要人、技术、流程紧密配合才能实现DevSecOps。以往没有注意供应链安全的时候,大多数都重视代码和应用本身的安全,侧重于在编写过程中通过IDE扫描代码、提交代码后通过检测工具进行静态应用程序安全测试(SAST)、集成后使用工具进行动态应用程序安全测试(IAST)和交互式中程序安全测试(DAST),以发现潜在安全漏洞,并修补发现的安全漏洞。
然而,软件供应链安全攻击正变得越来越复杂,恶意攻击者在基础环境、软件采购、软件开发、软件交付、软件运行等软件生命周期的各个阶段利用相关弱点开展供应链攻击。包括,上线前将恶意代码注入开源包、部署后在软件更新中安插后门等。
例如:在最初的计划阶段,要准备软件运行环境。无论是物理主机、容器平台还是虚拟化的云环境,组织使用的操作系统、数据库、中间件、开发平台、框架等,以及组织制定的安全加固、安全配置基线,通过脚本工具进行配置,并在投入生产前使用扫描工具或脚本进行检测,这些开发工具、安全工具的来源无非这几种:商业采购、开源社区、组织自研。上述外部采购的工具或是开源的工具,安全吗?来源是否合法,相关的许可证合规吗?是否会出现2015年的Xcode事件?是否会出现2020年美国禁止中国使用MATLAB的问题?
因此,必须假设所有代码(无论来自外部采购、开源社区还是内部开发)、开发环境和工具都可能出现安全问题。同时,供应链安全还需要扩展到外部代码依赖项和商业软件,以及第三方的API接口。
软件供应链攻击会影响软件开发、软件交付和软件使用过程中的任何阶段。尽管在每个阶段的攻击面和攻击方式各有不同,但攻击者往往会在未经授权的情况下访问基础设施、开发环境和测试环境等多个环境,包括:构建服务器、应用服务器、数据库服务器、版本控制服务器、代码仓库、制品仓库、持续集成管道等。攻击者可能会修改加固配置、组件、标准工具、源代码、脚本和包,并建立后门以便攻击者可以持续监控并窃取数据。攻击者可能来自外部,但也有可能来自内部。内部人员的误操作或是有恶意的内部人员都是攻击来源。
基于DevOps的软件供应链安全
首先,要了解相关的法律、法规和标准。例如:《中华人民共和国国家安全法》第五十九条;《中华人民共和国网络安全法》第二十二条、第二十三条、第三十五条、第三十六条;《网络安全审查办法(修订草案征求意见稿)》;《信息安全技术 ICT供应链安全风险管理指南》GB/T 36637-2018,等都是可以参照的来源。(详见下图)
接着,做好环境的安全管理——基础设施管理,这是所有软件的载体。软件开发时、测试时、上线时、生产运行时所使用的基础资源、操作系统、应用中间件等。不同环境的基础设施,实现一致、安全、可靠、稳定是软件安全的基础。
基础资源包括的内容多样,无论使用自建的机房、租用的机房或是云环境,无论在服务器端、终端、IoT设备都会涉及计算资源、存储资源、传输资源、电力资源等多项资源,里面还有众多细分领域,例如:芯片(服务器、PC、IoT等)、存储(主存储、辅助存储等)、服务器、路由器、交换机、云。
操作系统包括后台、中台、前台不同类型设备(服务器、固定终端、移动终端、IoT等)运行的操作系统。
中间件包括服务中间件、集成中间件、数据中间件、消息中间件、安全中间件等多种中间件。
同时,要保障软件开发环境、软件测试环境、生产运行环境,不论使用物理主机、容器平台、云平台,它们的加固、配置要求均一致,使用不存在已经安全漏洞或安全问题,特别是不会被卡脖子并在国内实现自主可控的基础资源、操作系统、中间件等相关技术栈。
其次,在DevOps各阶段,基于组织当前的现状和未来的发展,以及组织所处的环境,包括:系统环境、业务环境和大家很容易疏忽的外部环境(国内、国际合作)。再选择适合组织使用的安全工具,可以是商业工具也可以是开源工具,或是自研的工具。工具的分类方式多样,可以按阶段分(如下图),可以按类型分,例如:源代码安全检测工具、黑盒安全扫描工具、App安全扫描工具、主机安全扫描工具、安全配置加固工具、软件组成分析工具等。
上面只是进行了举例,在运维监控阶段,以及废弃前的数据导出、数据销毁阶段都需要进行软件供应链安全管理。
接着,是强化软件开发和交付过程的安全性。在CI/CD的管理中配置敏捷的安全风险控制。
如果不保护CI/CD 管道,就会在软件交付中引入安全风险。攻击者可能攻击或修改管道,以便绕过安全检查点和上线的安全门限,从而允许恶意代码发布到攻击目标。CI/CD 管道必须提升安全性并加强访问控制配置。除此以外,还需要实施安全措施,保护代码完整性并防止在CI/CD管道中篡改代码。实现可重复的安全构建实践,以确保源代码始终使用相同且快速的构建输出。在提交代码时进行签名,并对运行的环境进行签名,便于及时验证环境和代码的完整性。
然后,要保护开发人员、测试人员的操作环境。软件开发环境跨越多个系统、平台,使用多种工具,并且可能在多个开发环境、测试环境、生产环境中进行开发、调整。需要严格的访问控制措施,可以综合使用零信任架构、最小权限管控、特权访问管理、多因素认证等多种手段。
最后,也是最重要的就是基于供应链生命周期,管理供应链活动中的安全与风险。上文中介绍的产品和服务,从无到有,直至废弃的全生命周期涉及的供应链活动,以最初的需求、设计为起点,经过开发、提交、集成、仓储、交付等环节将产品和服务交付给甲方,并对产品和服务进行运维管理,直至最终废弃。具体的供应链生命周期管理可以参考《信息安全技术 ICT供应链安全风险管理指南》GB/T 36637-2018。
在DevOps中,需要对第三方的机构、人员、软件、服务进行安全管理。从选用、采购开始,到正式使用前的接入控制,以及长期的日常管理与监控,和定期或基于安全风险评估。
主要包括:
第三方机构除了供应商、合作伙伴以外,还有监管机构,特别是国外监管机构,因在国外开拓业务或在国外市场进行股票上市都会涉国外监管机构,可能要使用国外监管机构提供的服务、接口,需要评估安全风险,特别是否可能对中国造成安全风险。
基于DevOps的软件供应链安全,有相当的工作需要在DevOps之外完成,同时需要各个部门协作完成,这既需要自顶向下进行推动,也需要自底向上进行实践和反馈。以上只是目前短期的思考与分享,可能有所不足。欢迎大家补充并讨论沟通。如果要在其他文章、会议材料中引用上述内容,请注明“来源:锐少”
推荐阅读
诸子笔会 |11月征文合集《供应链安全》
蔚晨:金融机构供应链安全的分析方法和应对之道张永宏:从供应链安全看企业信息化系统风控刘志诚:从供应链到生态——情景化安全的创新与挑战杨文斌:从第三方引入开始思考供应链安全孙琦:企业视角下的软件供应链安全刘顺:软件开发过程中供应链安全的风险与治理王振东:供应链安全之人件风险诸子笔会 |10月征文合集《安全周》
张永宏 王振东 赵锐 蔚晨
刘志诚 刘顺 肖文棣 季奖公布
诸子笔会 |9月征文合集《安全团队》
刘志诚 张永宏 刘顺 杨文斌 蔚晨
王振东 孙琦 肖文棣 赵锐 月奖公布
诸子笔会 |8月征文合集《数据安全》
赵锐 刘顺 刘志诚 杨文斌 张永宏蔚晨 王振东 孙琦 肖文棣 月奖公布
诸子笔会 | 7月征文合集《安全自动化》
张永宏 肖文棣 杨文斌 于闽东 孙琦 刘志诚 蔚晨 赵锐 季奖公布
诸子笔会 | 6月征文合集《安全数字化》
张永宏 刘志诚 孙琦 李磊 赵锐 于闽东肖文棣 顾伟 侯大鹏 蔚晨 杨文斌 月奖公布
齐心抗疫 与你同在