DevSecOps之应用安全测试工具及选型
上篇文章,有同学私信想了解有哪些DevSecOps工具,这里整理出来,供大家参考(PS: 非专业安全人士,仅从DevOps建设角度,给出自己见解)
软件中的漏洞和弱点很常见:84%的软件漏洞都是利用应用层的漏洞。软件相关问题的普遍性是使用应用安全测试(AST)工具的主要动机。通过使用AST工具,企业可以在软件开发生命周期中快速地检测潜在的安全问题,提高应用程序的可靠性和安全性,降低安全风险。
随着越来越多的应用安全测试工具的出现,信息技术(IT)领导、开发人员和工程师可能会感到困惑——不知道哪些工具可以解决哪些问题。

如上图所示,从下往上,成熟度和实现难度依次增大。
静态应用程序安全测试
Static Application Security Testing (SAST),仅通过分析或者检查应用软件源代码或字节码以发现应用程序的安全性漏洞,侧重检查代码安全,如C/C++缓冲区溢出、身份认证与授权等, 避免产生可利用的弱点。
SAST 工具主要用于 SDLC 的编码、构建和开发阶段。
动态应用程序安全测试
Dynamic Application Security Testing (DAST),通过运行程序来检查应用软件的安全性问题,侧重从系统外部接口来进行针对性的测试,暴露应用程序接口的安全性漏洞。
DAST 是一种自动黑盒测试技术,测试这主要从外部进行测试, 它模仿黑客与您的 Web 应用或 API 交互的方式。它通过网络连接和检查应用的客户端渲染来测试应用,就像渗透测试工具一样。 DAST 工具不需要访问您的源代码或自定义来扫描堆栈。它们与您的网站交互,从而以较低的误报率发现漏洞。
交互式应用程序安全性测试
Interactive Application Security Testing (IAST),整合了SAST和DAST这两种方法,可以发挥各自的优势、降低误报率,发现更多安全漏洞,从而提高安全性测试效率。
交互式应用安全测试就是通过把安全工具的代理嵌入到应用程序里面,从而在测试应用程序的时候,这个安全代码能够监控到应用系统的网络内容,堆栈等信息,从而嗅探出系统在动态行为下的安全漏洞, 内容具体到发生漏洞的代码行。
软件构成分析
Software Composition Analysis (SCA),专门用于分析开发人员使用的各种源码、模块、框架和库,以识别和清点应用系统(OSS)的组件及其构成和依赖关系,并识别已知的安全漏洞或者潜在的许可证授权问题,把这些风险排查在应用系统投产之前,以加快确定优先级和开展补救工作。
此外,它们还可无缝集成到 CI/CD 流程中,从构建集成直至生产前的发布,持续检测新的开源漏洞。大白话,找出软件里面的“科技与狠活”
应用程序安全测试编排
Application Security Testing Orchestration (ASTO),随着数据中心规模的不断增大,网络以及安全服务数量也随之不断的增长,安全运维更是难上加难。面对越来越复杂的网络和安全场景,安全编排(Orchestration)工具应运而生,能够安全自动化和服务编排,如可以连接诸如Splunk、QRadar等安全数据分析工具,利用其提供的大量安全事件数据,通过自动化的脚本,采取一系列的方法进行安全事件的响应。
应用程序漏洞关联
ASTO 将软件开发生命周期内的安全工具进行整合,尤其在 DevSecOps中发挥举足轻重的作用,而AVC(Application Vulnerability Correlation,应用程序漏洞关联)工具是指工作流与流程管理工具,让软件开发应用漏洞测试和修复实现流线化。
这些工具将各种安全测试数据源(SAST、DAST、IAST、SCA 、渗透测试与代码审核)融入到一个中央化的工具中,AVC 工具能够将安全缺陷形成中心化数据,进行分析,对补救方案进行优先级排序,实现应用安全活动的协作。
上面5、6点,属于比较综合的方案,大白话,从“安全”的视角,去看看研发活动的产出 (代码,制品,环境等等资产)有没有安全漏洞风险,并且归类融合去重统一,实现思路上,有点像DevOps流水线,剑走偏锋。目前,国外类似的解决方案有一些,国内很少,我也在持续跟踪研究中。
安全测试工具适用阶段
如下图所示
- SAST适用于应用程序开发早期或集成/构建阶段,提供代码级别的反馈;
- IAST可以在应用程序的运行时进行安全测试,并提高漏洞的发现率;
- DAST适用于应用程序发布前进行黑盒测试;
- SCA可以检测应用程序依赖的第三方软件组件中的漏洞。
综合使用这些工具,可以在应用程序的开发、测试和部署阶段及时发现和纠正潜在的安全漏洞。
如何选择适合自己企业的安全工具
如下图所示,根据研发活动的过程,我对相关的安全工作做了领域和业务的划分,部分工具可能会贯穿多个阶段。
选型原则
- 你需要解决什么问题?哪些阶段是你关注的?
- 工具的成本,是否有资金支持采购商业软件?虽然开源的安全工具很多,不过“安全”是个严肃且专业的领域,商业软件还是有很多“硬核”实力
- 发现安全问题了,你是否能解决修复?这决定了,你是否会使用这些工具,更重要的是背后的运营流程,否则工具只是工具
- 你所在的行业的要求是什么?政府和机构的要求是什么?
- 选择的安全工具是否能融入DevOps流水线?是否周边生态插件丰富?是否支持二次开发?
- 是否有专业的安全人士,能够使用选中的工具,并驾驭?
个人看法
- 从实践难易程度和成本最低来看, “ 编码阶段“ 应该是成本最低,工具最多(比如sonarqube 估计是下面图中,你最熟悉的,烂大街的),离开发人员最近的阶段。
- 从”安全“左移的角度,在”编码阶段“进行实施安全活动,从DevOps角度,浪费也是相对较少的。唯一不足,就是代码阶段的扫描,误报率稍微高,见仁见智。
- ”容器安全“,也是一个值得关注的,由于云原生普及,周边生态丰富,可以选择的余地会多些,对于”中小企业“来说,成本最低。
- 如果你的组织不差钱,直接商业工具,这个不用质疑,你的甲方爸爸也不会差钱,他要的是放心。
最后,安全工具仅仅是个开始,如何把工具融于流程,并且落地得到切实的执行才是难点。”安全“是个即”严肃“,又”专业“,同时又容易”被忽略“的活动,任重而道远。
PS: 下面图目前是V1.0版本,后续会持续更新 (图中标记的工具,可以做些尝试,开源的;不差钱的,请直接商业工具,专业的人做专业的事情)

参考:
- https://www.synopsys.com/zh-cn/glossary/what-is-devsecops.html
- https://www.nist.gov/itl/ssd/software-quality-group/source-code-security-analyzers
- https://sdtimes.com/security/a-guide-to-devsecops-tools/
- 10 Types of Application Security Testing Tools: When and How to Use Them
- https://www.synopsys.com/zh-cn/software-integrity/security-testing/static-analysis-sast.html
- https://www.synopsys.com/software-integrity/security-testing/web-scanner.html
- https://www.synopsys.com/zh-cn/software-integrity/security-testing/interactive-application-security-testing.html
- https://www.synopsys.com/zh-cn/glossary/what-is-application-vulnerability-correlation.html
DevSecOps之应用安全测试工具及选型的更多相关文章
- Qtp自动测试工具
QTP是基于GUI界面的自动化测试工具,用于系统的功能测试. QTP录制的是鼠标和键盘的消息.QTP录制回放时基于windows操作系统的消息机制.QTP在录制时监听应用程序的消息,监听到之后把消息放 ...
- API测试工具SoapUI & Postman对比分析
本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 最近公司要引入API测试工具,经过调查和了解,最终决定在SoapUI ...
- 开源负载测试工具k6比JMeter更容易的5件事
k6是GitHub上提供的开源负载测试工具.它是用Go编写的,并运行用JavaScript编写的测试脚本.它受到了开发人员,测试人员和DevOps团队的强烈兴趣,并拥有超过4400名GitHub明星. ...
- 【测试工具】http协议调试利器fiddler使用教程
转自:http协议调试利器fiddler使用教程http://bbs.phpchina.com/thread-207418-1-1.html Fiddler真乃神器!它和市面上常见的很多web调试器. ...
- Kubernetes DevOps CD工具对比选型
目录 Kubernetes DevOps CD工具对比选型 一.Flux 二.ArgoCD 三.Jenkins X 四.方案比较 Kubernetes DevOps CD工具对比选型 一.Flux 1 ...
- 渗透测试工具BurpSuite做网站的安全测试(基础版)
渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...
- linux压力测试工具stress
最近给PASS平台添加autoscaling的功能,根据服务器的负载情况autoscaling,为了测试这项功能用到了stress这个压力测试工具,这个工具相当好用了.具体安装方式就不说了.记录下这个 ...
- [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具
==========最终的效果图========== ==========下面开始干活:生成帮助文档========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并 ...
- RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用
最近几天在看RabbitMQ,所以发了两天时间写了一个调试和测试工具.方便使用. 下载地址:RabbitMQTool-V1.0.1.zip
- HTTP压力测试工具
HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的P ...
随机推荐
- Three.js 进阶之旅:滚动控制模型动画和相机动画 🦢
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 专栏上篇文章<Three.js 进阶之旅:页面*滑滚动-王国之泪&g ...
- 代码随想录算法训练营Day55 动态规划
代码随想录算法训练营 代码随想录算法训练营Day55 动态规划| 392.判断子序列 115.不同的子序 392.判断子序列 题目链接:392.判断子序列 给定字符串 s 和 t ,判断 s 是否为 ...
- Kubernetes 集群管理:Kurator or Kubespray
摘要:Kubespray 和 Kurator 就是这类开源工具的典型代表.本文将对这两款工具进行比较. 本文分享自华为云社区<Kubernetes 集群管理:Kurator or Kubespr ...
- 揭秘Spring依赖注入和SpEL表达式
摘要:在本文中,我们深入探讨了Spring框架中的属性注入技术,包括setter注入.构造器注入.注解式属性注入,以及使用SpEL表达式进行属性注入. 本文分享自华为云社区<Spring高手之路 ...
- 传统软件如何SaaS化改造,10个问答带你掌握最优解
摘要:如果您所在企业希望实行SaaS化改造,可访问了解华为云开发者技术团队的SaaS支持计划. 本文分享自华为云社区<[云享问答]第1期:传统软件如何SaaS化改造,10个问答带你掌握最优解!& ...
- 【QCustomPlot】使用方法(动态库方式)
说明 使用 QCustomPlot 绘图库辅助开发时整理的学习笔记.同系列文章目录可见 <绘图库 QCustomPlot 学习笔记>目录.本篇介绍 QCustomPlot 的一种使用方法, ...
- Nmap使用教程(初级篇)
基本扫描技术 扫描单个网络 nmap 192.168.1.1/www.baidu.com 扫描多个网络/目标 nmap 192.168.1.1 192.168.1.2 #将扫描同个网段内不同的ip地址 ...
- 驱动开发:应用DeviceIoContro模板精讲
在笔者上一篇文章<驱动开发:应用DeviceIoContro开发模板>简单为大家介绍了如何使用DeviceIoContro模板快速创建一个驱动开发通信案例,但是该案例过于简单也无法独立加载 ...
- 【C#/.NET】MAUI上的依赖注入
引言 在移动应用开发中,依赖注入是一项非常重要的技术,它可以帮助我们简化代码结构.提高可维护性并增加测试覆盖率.在最新的.NET跨平台框架MAUI中,我们也可以利用依赖注入来构建高效的应用程序架构 ...
- PostgreSQL 性能优化: EXPLAIN 使用教程
使用 EXPLAIN EXPLAIN基础 代价估计 启动开销 总开销 计划结点输出行数 计划结点输出行宽 执行统计 实际启动开销 实际总开销 实际输出行数 实际执行次数 I/O统计 共享块命中数 共享 ...