DAST 是 Dynamic Application Security Testing 的缩写,也即动态应用程序安全测试,属于应用程序安全测试的一种,与 SAST 相对应,属于黑盒测试。
DAST 的优势
- 与语言无关
- 快速发现那些容易被利用的漏洞(XSS,SQL Injection 等)
- 无需访问源代码
DAST 的劣势
- 无法将安全漏洞精确到代码行数
- 需要花费较长的时间
- 报告需要有一些安全专业知识来解读
极狐GitLab DAST 的使用
Gartner 4 月下旬发布了 2022 年 AST 魔力象限,GitLab 位于挑战者象限:
极狐GitLab 在功能上大于或等于 GitLab,DAST 也是极狐GitLab DevSecOps 安全体系中重要的安全功能之一,能够帮助用户构建动态安全防御体系。而且随着版本的更新迭代,功能在不断增强。
极狐GitLab DAST 既可以当做独立的工具来进行应用程序动态扫描,也可以嵌入到 CI/CD Pipeline 中,帮助用户实现真正的 DevSecOps。
单独使用
可以将极狐GitLab 视为一个单独的 DAST 工具,来对处于运行状态的应用程序进行动态扫描。比如用如下命令启动一个 jenkins 实例:
$ docker run -d -p 8088:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
用 http://jenkins.example.com:8088 登陆 jenkins 并确认实例运行正常之后,就可以用极狐GitLab 单独对此 jenkins 实例进行动态扫描。
在极狐GitLab 上新建一个 Repo,并添加如下内容到 .gitlab-ci.yml 文件中:
include:
- template: DAST.gitlab-ci.yml
stages:
- test
dast:
stage: test
variables:
DAST_WEBSITE: "http://jenkins.example.com:8088"
DAST_FULL_SCAN_ENABLED: "true"
DAST_BROWSER_SCAN: "true"
DAST_SKIP_TARGET_CHECK: "true"
可以触发 CI/CD Pipeline 进行构建,并查看结果(太长,只截取部分):
如果是旗舰版用户还可以在安全与合规中看到完整的漏洞报告(安全与合规 --> 漏洞报告):
和 CI/CD 结合
DAST 是实现 DevSecOps 的一个重要安全测试手段,将 DAST 嵌入到 CI/CD 中,能够实现真正的“安全自动化”。DAST 属于动态测试手段,需要放置在应用程序部署成功以后:
在极狐GitLab CI/CD 中的 job 顺序是:
stages:
- build
- test
- deploy
- dast
下面使用一个托管在极狐GitLab SaaS 上的 Demo 来演示 DAST 在极狐GitLab CI/CD 中的用法。
极狐GitLab CI/CD 代码如下:
stages:
- build
- test
- deploy
- dast
build:
image: docker:20.10.7-dind
stage: build
tags:
- devsecops
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:1.0.0 .
- docker push $CI_REGISTRY_IMAGE:1.0.0
test:
stage: test
tags:
- devsecops
image:
name: docker:20.10.7-dind
script:
- echo "go test"
deploy:
image: docker:20.10.7-dind
tags:
- devsecops
stage: deploy
script:
- docker run -d -p 9998:9998 $CI_REGISTRY_IMAGE:1.0.0
include:
- template: DAST.gitlab-ci.yml
dast:
stage: dast
variables:
DAST_WEBSITE: "http://your.application.real.url"
DAST_FULL_SCAN_ENABLED: "true"
DAST_BROWSER_SCAN: "true"
DAST_SKIP_TARGET_CHECK: "true"
触发 CI/CD Pipeline 构建,查看构建结果:
如果是旗舰版用户还可以在 MR 中看到 DAST 结果:
可以看到有两个潜在扫描漏洞,这种情况下需要修复漏洞才可以进行代码 Merge,可以点击扫描出来的漏洞来创建 issue 进行安全问题追踪:
在问题修复之后会再次触发扫描的 CI/CD,在无安全问题后,即可合并代码并将对应的 issue 关闭。
对于旗舰版用户来讲,还可以在安全仪表盘中查看所有的 DAST 安全漏洞,做到安全漏洞的统一、透明展示:
DAST 需要与其他安全测试手段,诸如 SAST、密钥检测、Fuzz Testing 等一起构建完整的 DevSecOps 体系。
更多关于 DevSecOps 内容,请点击
极狐GitLab DevSecOps 之敏感信息检测
极狐GitLab DevSecOps 之镜像扫描
极狐GitLab DevSecOps 之模糊测试
极狐GitLab DevSecOps 之 SAST
极狐GitLab DevSecOps 之依赖项扫描
极狐GitLab DevSecOps 之 IaC 安全扫描