投稿邮箱

digitcw@163.com

您的位置:首页 > 产业观察 >
Code Sight以业务发展所需的速度构建可信软件
作者:赵法彬   添加时间:2022-03-23
如何确保开发速度又要兼顾软件可信,是软件开发人员必须面临的难题。

(赵法彬/数字通信世界)在软件开发过程中,如何确保开发速度又要兼顾软件可信,是软件开发人员必须面临的难题。速度为王是现代软件开发的趋势,但是必须清楚软件风险等同于业务风险。这就意味着开发人员肩负重任,需要确保软件安全和公司业务安全,他们时间紧迫,要不间断地扫描和测试。技术赋能工作人员,帮助他们从一开始就编写更加安全的代码,可显著减少在SDLC后期修复开源和代码安全缺陷所花费的时间。但是,如果开发人员被迫改变他们的工作方式或在不同工具之间来回切换,就无法实现这些。近日,新思科技(Synopsys)宣布全面推出Code Sight™标准版,这是适用于集成开发环境(IDE)的Code Sight插件的独立版本,使开发人员在提交代码前就能够快速查找和修复源代码、开源依赖项、基础架构即代码等文件中的安全缺陷。

QQ截图20220323164738

新思科技中国区软件应用安全技术总监杨国梁

在IDE中尽可能多地解决安全问题

众所周知,任何安全问题都是越早发现越早解决造成的损失就越小,软件开发的安全问题也是如此。新思科技中国区软件应用安全技术总监杨国梁表示,无论从便捷程度,还是从投入产出比与节约开销这样的角度来说,在IDE中尽可能地解决更多的安全问题,都是一个非常划算和非常高效的手段。Code Sight插件为软件开发人员提供了一种神兵利器,能够让他们在软件开发的第一时间就规避掉一些潜在的安全问题。安全左移是在尽早的阶段把缺陷修复掉,而不要让它们留到测试阶段、最后发布甚至上线之后,Code Sight是一个安全左移非常好的实践。安全左移最好的规避时间点,就是在开发的同时,就能够把安全问题给指出来,避免把这些安全问题在第一时间写到代码里面,或者引入到代码里面。Code Sight其实解决的就是这样一个问题。通过在IDE应用市场的下载和安装,我们集成了Coverity,就是新思科技的静态应用安全测试的工具以及Black Duck软件组成分析工具,将里面的一些Rapid Scan快速扫描的功能集成到Code Sight的插件上,在研发人员写下这一行的代码,打开和保存的同时就触发分析,让开发人员在第一时间就能够享受到安全带来的一些便利。

凭借新思科技Rapid Scan功能,Code Sight标准版在开发人员的 IDE 中提供快速、轻量级的应用安全分析,防止在软件开发生命周期(SDLC)后期才发现问题,导致代价高昂的返工。目前,Coverity静态应用安全测试(SAST)及Black Duck软件组成分析(SCA)中新添了Rapid Scan快速扫描功能。采用Code Sight 标准版,开发人员在编码时就能修复安全缺陷,减轻了下游安全测试的负载,也避免了在开发人员已经执行其它任务时才发现之前的代码缺陷和漏洞,最大限度地减少了代价高昂的返工。杨国梁说,Code Sight在编写代码的时候就能将安全内置。静态检查能够发现的都是代码层面和编码层面的问题,而开源组件分析能够发现的是这段代码依赖于什么样的开源组件,以及这些开源组件本身有哪些已知漏洞。所以这两个检查相结合已经能够规避很大部分安全问题了。我们更加希望的是研发人员在检查确认代码之前,就能够确保代码是安全可靠的,所以Code Sight要解决的问题,或者说Code Sight能够将写的代码问题在本地发现,避免留到大的环节里面去,并且在IDE上直接修复所能够发现的安全问题,再进入到大的流程里面,进一步加快软件开发进度,能够减少返工的情况,从而更快地发布更高质量的软件。

目前可用于 Visual Studio Code IDE 的 Code Sight 标准版独立于集中式安全测试工具(如 Coverity SAST 和 Black Duck SCA)运作。通常在 SDLC 后期会使用到Coverity及Black Duck。开发人员可以直接从 VS Code Marketplace 下载并安装 Code Sight,并在五分钟内就可以开始分析代码。杨国梁表示,Code Sight可以把所有类型应用安全工具发现的问题全部汇总,以项目风险的角度来对安全问题进行管理,把目前所有一样的问题进行去重,让严重的问题更有效地被排序。甚至可以通过机器学习或者AI来训练模型,让它帮助用户去判断新发现的问题到底是不是一个问题。


数字化转型过程中必须确保软件可信

杨国梁认为,数字化转型过程中的重中之重就是确保软件可信。他解释说,各行各业的数字化全部都依赖于软件来运行,因此,软件是否安全、是否可靠,就变成数字化转型能否成功、能否有竞争力的一个非常核心的因素。此外,构建可信软件安全可以有效地管理业务风险。

既然可信软件如此重要,那么如何才能更加快速地构建可信安全的软件呢?一是保护软件供应链安全,使用全面的AST工具,检测专有代码、OSS/第三方依懒项、应用程序行为和部署配置中的安全性、质量和合规性问题。二是将安全性纳入DevOps,借助智能AST编排和关联,帮助团队保持DevOps速度,并将修复重点放在对业务最关键的问题上。三是建立全面的应用安全项目,这使人员、流程和技术保持一致,以解决整个企业和应用生命周期所有阶段的安全风险。杨国梁解释说,首先,需要全盘考虑,建立一个全面的应用安全项目。需要把整个流程和整个人员意识都要全方面构建好,然后有一个高屋建瓴的指导性方针,采用先进的技术。其次,将安全性纳入到DevOps。如何把Security做到DevOps里,变成一个真正的DevSecOps,这需要学习大量的实践经验,有大量流程方面的改进需要实施,人员意识方面的培训也需要实施,所以如何把安全纳入到DevOps,借助一些关键的技术,比如云原生上面的编排,然后智能调度等。最后,保护软件供应链安全。因为安全并不完全依赖于用户自己治理得有多好,某种程度上很大依赖于其供应商是否安全。总之,软件安全不仅需要对用户应用工具、技术、流程进行改进,而且需要对用户的供应商、产业上下游都需要做一些辐射性的工作,要求整个行业把软件安全实施好,大家共同构建一个可信安全的软件。

问及Code Sight对软件缺陷的检测率以及如何修复这些缺陷,杨国梁回答说,整个安全行业多数都是通过定性的分析,然后再赋予一定的权重,出现一些量化的指标,但整个安全从根本逻辑上来讲还是通过定性分析来做的,这是因为安全问题并没有一个全集。一个软件在发布之后,随着时间的推移或者进一步的研究,可能又会有新的安全漏洞报出来,我们就只能去压缩时间窗口,快速修补这些安全问题。所以我认为,盲目地去追求它的检测率,可能并不一定是最好的方式,只要行之有效能够发现问题,那么就值得去尝试。杨国梁举例说明了如何修复这些缺陷,比如,我们查到开发人员用了一个具体的开源版本,如果有问题就会提供一键修复指南,告诉他们新的版本在哪里,并且这个版本是安全的,可以通过一键升级修复到那个版本。然后代码层面的缺陷也是类似的,我们会高量识别出来哪一行现在有问题,如果需要进一步看这个函数的定义,只要把鼠标悬浮在那,就会引导出更多的修复建议,或者说是对问题的描述,帮助开发人员快速修复这些问题。修复完之后,只要实时保存一下,就可以实时看到这些修复手段是否生效。

最后,杨国梁强调,在软件开发的过程中,速度与安全永远是一个博弈的过程,永远是一个不断演进和不断探索的过程,我们希望同时兼顾安全和速度的前提来做软件开发,而不是一味地强调开发效率或者绝对的安全。