返回文章列表

DevSecOps | 极狐GitLab 动态应用程序安全测试(DAST)使用指南

极狐GitLab
一体化安全DevOps平台

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 体系。

 

关联阅读

 

  1. 极狐GitLab DevSecOps 之敏感信息检测
  2. 极狐GitLab DevSecOps 之镜像扫描
  3. 极狐GitLab DevSecOps 之模糊测试
  4. 极狐GitLab DevSecOps 之 SAST
  5. 极狐GitLab DevSecOps 之依赖项扫描
  6. 极狐GitLab DevSecOps 之 IaC 安全扫描
极狐GitLab 一体化DevOps平台 专为中国用户研发,免费试用60天专业版高级功能
售前咨询
联系电话
在线支持
预约演示