孝道科技徐峰:不转变观念,DevSecOps应用就不会成功!
2022-11-30
来源:安全牛
针对代码和应用程序的软件供应链攻击已经成为一种对互联网经济发展影响巨大的网络攻击手段。因此,加强代码和应用程序的自身免疫力,保证应用程序敏捷安全地开发、交付和流转,当前应作为网络安全的一项重要任务来看待。在软件供应链安全建设实践中,DevSecOps平衡了代码开发过程中敏捷和安全的需求,逐渐被行业接受和认可,加速DevSecOps的落地实践并成为敏捷开发模式企业中开发安全建设的重要抓手。
日前,安全牛采访了孝道科技联合创始人兼CTO徐锋,就如何在供应链安全建设中实践运用DevSecOps进行了深入探讨。徐锋表示:“软件供应链安全的影响已经上升到了国家安全的高度,企业对软件供应商、产品供应商提供的软件安全合规性要求越来越高,对违规处罚的力度也越来越高,这将有力促进安全开发、DevSecOps理念的快速落地。在DevSecOps模式下,更为强调全员的安全责任和共担文化,每个人都要为系统应用安全承担责任,因此需要团队成员在安全意识和观念上有了积极转变。”
现任杭州孝道科技有限公司副总经理兼CTO,近20年安全行业从业经验,浙江省网络空间安全协会专家、云安全联盟CSA(Cloud Security Alliance)专家组成员、全国信息安全标准化技术委员会(TC260) 相关工作组成员。主要研究领域包括软件供应链安全、安全开发、SDL、DevSecOps,是数字应用安全领域的探索者,曾参与多项相关标准的研制工作。
01 目前,软件供应链攻击的主要特点是什么?企业应对软件供应链攻击的方法或框架主要有哪些?
徐锋
目前在软件供应链攻击里面影响面最大、最容易被攻击、最易得手的,多数是由开源软件问题导致的。首先,目前软件开发都在采用混源开发模式,其中大部分代码都是开源的。开发者在引用开源软件或开源组件时,准入控制的概念不强,前期对开源项目安全性、断供等风险的评估基本为零;其次,从开源社区组织上来看,开源软件管理相对比较松散,代码提交门槛较低,并且很多社区项目对自身代码安全性的关注度不足。这些因素都给软件供应链安全埋下了严重的安全隐患。
面对软件供应链攻击,首先需要分析软件的来源,不同来源的软件攻击防范方法差异非常大,目前可以粗略的把软件来源分为:外部软件和内部自研软件。
对于从外部供应商采购的软件,比如操作系统、办公软件、OA系统,或者委托他人开发的软件,需要考察供应商的综合实力、服务能力以及持续性,对交付物采用安全准入的检查和控制措施。比如,对软件进行成分分析,要求提交软件物料清单(SBOM)清单,对于一些重要的系统软件,除了基础安全检查之外,还需要进一步做安全测试。
外部软件除了供应商采购获得,还有很多来自开源软件,开源软件的引用同样需要经过一系列的评估机制,对其安全性、健康度等各方面进行考察,以减少未来可能发生的供应链攻击。
对内部的自研软件有很多相应的安全开发模型和理念,比如软件安全开发周期(SDL)、安全软件开发框架(SSDF)、DevSecOps等,自研软件的企业是相对而言比较好的软件供应链安全参考模型。
此外,国家信息安全标准委员会在9月份正式发布了《信息安全技术 软件供应链安全要求》征求意见稿,也给企业在软件供应链安全方面的建设提供了一些方向性的指导,值得参考借鉴。
02 DevSecOps是一种理念、工具还是方法论?其核心价值或能力是什么?国内目前是否具备广泛普及DevSecOps的基础条件和市场环境?
徐锋
DevSecOps是Gartner在2012年提出的一种理念,核心思想是尽可能地把安全无缝地、透明地集成到敏捷开发或者DevOps的开发过程中去。核心价值是在有限的成本投入以及保持业务开发敏捷性和速度的前提下,提升软件的内生性安全。通过什么样的方式、手段能达到这样的目标,可以有哪些不同的做法,需要不同企业共同探索。
DevSecOps的市场应用依赖于敏捷开发或者DevOps的普及情况。研究数据显示,我国目前90%的企业均不同程度地采用了敏捷开发模型或DevOps方法;还有60%的企业开始尝试或者想要实现DevSecOps。从这些数据来看,国内DevSecOps的应用已经开始。头部企业和规模较大的互联网公司、金融企业已经在不断的实践、探索和优化了。从国内的普及率来看,DevSecOps正处于1到n快速推进的阶段,将在近两年快速增长。
03 构建DevSecOps软件开发安全体系的核心技术和支撑技术分别是什么?
徐锋
构建DevSecOps体系最核心的技术是安全工具链的建设,即软件开发过程中需要的持续应用安全测试、赋能各种检测类技术,包括很多应用安全测试工具,如代码审计工具(SAST)、交互式应用安全检测工具(IAST)、动态测试工具(DAST)以及模糊测试工具等。这类工具针对开发软件代码或者软件制品进行自动化测试,发现软件漏洞的核心技术。同时,用的较多的还有软件成分分析工具(SCA),可以从开源组件安全、知识产权及开源许可的角度对软件进行安全分析。
其次是运行时应用程序自我保护(RASP),安全编排(SOAR),响应自动化,也是DevOps转向DevSecOps工具链建设中的重要支撑。
第三是与安全防护类产品如统一的单点登陆,防火墙,WAF等互联互通的技术。由于DevSecOps在交付过程中,要保证交付速度,很多安全测试不够充分,会遗留一些未发现的或低危的漏洞。因此,DevSecOps不能完全独立,需要与传统的应用防护类工具配合进行联动防御。
此外,开发团队在构建DevSecOps过程中也离不开DevOps开发基础支撑类工具的熟练应用,具体包括代码仓库、制品仓库、持续集成、持续部署、自动化测试、云原生等等。DevSecOps建设的时候,需要把上述的应用安全检测工具、防护能力无缝透明的融入到DevOps的基础开发环境中去,也是帮助整个团队能更轻松落地DevSecOps的一个重要方面。
当然在构建DevSecOps的过程中,除了技术、工具以外,人、文化、流程这三大要素也是DevSecOps能力建设非常重要的核心力量。
04 与DevOps相比,DevSecOps流程上有哪些明显区别?其中哪些环节对开发人员的挑战会比较大?
徐锋
传统DevOps的参与者主要是开发和运维,安全只在即将上线时才会介入,并且安全责任只有安全团队负责。但企业在转向DevSecOps流程后,安全团队需要融合进来,并且将安全开发的理念贯彻到开发的所有环节中去,比如需求阶段会引入安全需求分析,设计阶段会引入安全设计,编码阶段会引入安全编码,测试阶段也会引入安全验证,最后还要经过安全发布和安全运营。所以从这个角度来说,DevSecOps并没有完全摒弃传统的安全开发模型,而是在做安全需求分析、安全设计、安全编码、安全验证、安全发布和安全运营的时候,更多利用工具的高效自动化。
从抑制供应链攻击的角度来看,对于软件自研的企业而言以下六个阶段都是比较重要的,但从个人的角度来看,安全需求分析、安全设计、安全验证这三个环节是对抑制供应链攻击更为重要的环节。
从挑战来看,开发人员原来更多关注的是功能的实现。而目前软件设计阶段需要融入安全设计,实现阶段需要融入安全编码,这都需要一定的安全知识储备,去识别应用潜在的安全风险,并且设计出相应的消减安全威胁的方案,对开发人员是一个比较大的挑战。针对开发人员的挑战,在整个安全威胁识别的过程中,一般会引入威胁建模类工具,并且一般需要协调安全人员来共同承担此阶段工作。安全开发一体化平台可以提供通用的安全设计模板及相应的知识库,能为开发设计人员覆盖60%以上的安全设计需求,降低开发人员安全设计难度;对于不能通用的部分需求可以采用威胁建模的方式进行定制化设计,定制化设计可以沉淀为模板使未来的安全设计更加方便;设计完成后要由专业的安全人员审核、把关这些安全设计,使安全设计应用更加科学完善。
安全编码环节主要是消除不规范的代码,难度相对安全设计低一些。通过开发人员安全编码知识的培训,以及安全工具对代码检查的反馈,就可以让开发人员快速建立起安全编码的能力。
从运维的角度来看,DevSecOps对交付速度要求非常高,在安全验证阶段,会更多依赖自动化工具,如果出现了安全漏洞,运维人员能够快速的监测并进行响应处置。因此,DevSecOps在落地阶段,对运维人员安全监测和相应处置能力会有更高的要求。此外,版本的发布和迭代又比较快,对运维人员适应快节奏的变化过程要求也特别高。
05 软件开发有较强的继承性和延续性,对于目前采用DevOps开发模式的企业,应该如何过渡到DevSecOps模式中?
徐锋
首先,安全理念的转变,也是我们过度到DevSecOps的重要前提。在DevOps模式下,安全责任都归属于安全团队,开发和运维团队不背安全的KPI。但DevSecOps模式下,人人要为安全承担责任,要强调全员的安全责任和共担文化,需要团队成员在安全意识上做一些转变。企业一般会从诸多产线中找一个项目或者一个团队来做试点,在试点团队里面去做磨合,去做适应,解决安全、开发、运维团队之中存在安全责任割裂的问题。
其次,选择合适的工具,从单一团队开始,从关键节点介入,逐步推广到单一团队的全流程,然后再去复制到其他团队。初期建设中工具的选择非常的重要,可以先引用一些侵入性小,见效快的工具,如IAST、SCA等,进行部分流程的试点。当大家逐步适应部分流程的时候,再慢慢的扩展到安全需求、安全设计过程,然后贯穿到整个流程,最后再去复制到其他团队。如果刚开始引入的工具太多,对现有的开发流程和开发人员的使用习惯侵入性比较大,就会出现集体反弹。
然后,从组织角度看,企业还需要配置相应的岗位为安全开发能力赋能。不同规模的企业在实践DevSecOps的时候并不是一样的。如果更加专业、更加细分的话,需要分成独立的安全需求分析师、独立的安全架构师、独立的安全测试人员,甚至还有项目的安全顾问。这些人有些可能是通过兼职的方式,可能是专职的方式。但是这些职责也可以分散到不同团队的不同人身上。因此,组织架构方面可以根据企业规模来调整。
最后,建立好安全开发的流程和制度,也是DevSecOps体系建立非常重要的一个方面。比如,如何根据项目级别不同,定义安全基线、评审流程、例外处理流程等方面的相关制度。
06 您认为目前阶段DevSecOps应用的主要难点是什么?未来会呈现怎样的发展趋势?
徐锋
目前,大部分应用软件的开发都在使用敏捷的方法,DevSecOps在未来将会越来越普及。
但从技术方面来看,工具链建设的落地还有难度。各个厂商之间或者是各个工具之间还没有完全打通,需要各个工具厂商按项目去对接,严重约束了DevSecOps的发展。比如说,不同安全工具测试出来的结果,目前只能做到相互归类和优先级排序,用户引入的工具越多,就需要投入越多时间去处理同一类漏洞,安全人员的工作量越来越大,效率越来越低。提升不同AST类工具组合应用时检测的效能、效率,不同产品之间不光要结果互认,更重要的是相互补强、相互验证、与平台持续集成以及将AST类工具的检测结果更好的输送给各种防护类安全产品。不同工具之间相互协调、相互协作、相互补充以及自动化程度能力的提升是目前DevSecOps发展过程中需要去进一步解决的问题。
在政策方面,软件供应链安全已经上升到了国家安全的高度。网络安全和数据安全相关的法律规对软件供应商、产品供应商提供的软件安全合规性要求越来越高,对违规处罚的力度也越来越高。这也促进了安全开发、DevSecOps的理念更加快速的落地。
从理念发展来看,DevSecOps的落地仍需要不断探索和深化,未来需要吸取更多其它安全开发模型和框架的思想进行完善。
牛评
敏捷开发作为数字经济建设的重要组成部分,应用程序成份越来越复杂,代码安全验证不足等问题给应用程序安全留下了严重的缺口。同时,安全开发涉及了产业上下游,开发过程的多个环节,某一个点的安全能力的增强并不能有效闭环和缓解其所面临的软件供应链攻击的影响。做好敏捷环境的开发安全需要人、文化、技术、流程多个方面的共同努力,但工具链、平台化工具的使用体验是改善人、文化和流程的重要约束条件,在整个供应链安全能力的建设中可以起到事半功倍的效果。
更多信息可以来这里获取==>>电子技术应用-AET<<