现代软件开发流程采用CI/CD和devops方法已成为主流。
“旧石器时代”那种先花大量时间安全测试,再等待修复好漏洞,不再适应快速高效开发的节奏。
现代应用程序趋向庞大和复杂,安全工具也越来越复杂和细分。
为了方便管理,安全领域的开发工具可以帮助开发人员在编写代码时自行安全检查,只需要对工具授权即可。
目前,开发人员和安全专家主要依靠两类关键的工具来保护应用程序和数据安全。
A 、静态应用程序安全测试(SAST), B、软件成分分析(SCA),SAST主要用于测试内部开发的代码,SCA主要用于管理导入的开源组件。
同时使用这两种方法,可以同时覆盖这两个领域可能存在的安全漏洞。
关于SAST
SAST扫描应用程序源代码或字节码查找已知的软件漏洞 —— 通过这些漏洞,攻击者有可能获得访问权限。
SAST工具能自动覆盖应用程序可能存在的所有可能路径和事件,并能发现开发人员甚至没有意识到的漏洞。
目前,国际市场上比较主流的SAST工具有:
CyberRes Fortify
CheckMarx SAST
Perforce Klocwork SAST
Spectral SpectralOps Platform
Veracode Static Analysis SAST
目前,国内使用SAST静态应用安全检测系统的厂商,有开源网安、酷德啄木鸟、泛联新安、绿盟科技等,其中有些甚至拥有完全自主知识产权,通过CWE等权威认证。
关于SCA ,不可忽视的依赖关系
SCA的作用主要是帮助降低源代码之外的风险,如今大量第三方和开源软件包被用作自主开发应用程序的底层构建模块。
现代软件可能依赖于上百个开源包,即依赖项。目前,这些依赖项亦有可能依赖于开发人员甚至都不知道的其他开源包,即传递依赖项。
使用开源包可以帮助开发人员省去编写“基本”代码的麻烦,将时间实践于创造更有价值的软件开发工作,目前,95%的应用程序包含开源软件,应用程序中超过70%的代码都是开源代码。
开源包的安全性十分难以预测,安全漏洞测试的严格程度也个有区别。
SCA测试工具主要针对开源包进行研究,扫描应用程序的依赖项和传递依赖项,通过其结果与漏洞数据库比对,可以了解从组织外部获取的代码中继承了哪些风险和安全漏洞;正常情况下,SCA工具可以识别出已知漏洞的类型,并就修复和变通方法提供建议。
除此之外,SCA因为可以识别软件包中包含的许可证及其相关规定,所以也能帮助企业规避法律风险。
现 状
在软件开发生命周期中,将:用于测试源代码以发现安全漏洞的SAST工具和作为管理开源组件的应用程序安全方法的SCA工具结合起来使用,几乎可以解决软件开发前期的大部分安全问题。
目前,针对早期两种工具难以集成和可能产生大量误报的问题,现代开发安全技术的新工具专门针对这些问题加以研究,兼顾安全性和性能的测试方式目前也逐渐成熟,帮助开发人员成为安全领域的领导者。
SAST和SCA的关键评估指标,提供给大家参考。
1、SAST关键评估指标,主要包括:覆盖率、自动化程度、准确性和吞吐量。
2、 SCA关键评估指标,主要包括:
1) 是否具备漏洞和配置扫描功能
2) 能否将开源组件指纹与CVE漏洞信息库关联
3) 能否与SAST/DAST/IAST扫描集成
参考资料: 如何正确地选择SAST和SCA ?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)