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

2年前 (2022) 程序员胖胖胖虎阿
202 0 0

DAST 是 Dynamic Application Security Testing 的缩写,也即动态应用程序安全测试,属于应用程序安全测试的一种,与 SAST 相对应,属于黑盒测试。

DAST 的优势

  • 与语言无关
  • 快速发现那些容易被利用的漏洞(XSS,SQL Injection 等)
  • 无需访问源代码

DAST 的劣势

  • 无法将安全漏洞精确到代码行数
  • 需要花费较长的时间
  • 报告需要有一些安全专业知识来解读

极狐GitLab DAST 的使用

Gartner 4 月下旬发布了 2022 年 AST 魔力象限,GitLab 位于挑战者象限:

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

极狐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 进行构建,并查看结果(太长,只截取部分):

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

如果是旗舰版用户还可以在安全与合规中看到完整的漏洞报告(安全与合规 --> 漏洞报告):

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

和 CI/CD 结合

DAST 是实现 DevSecOps 的一个重要安全测试手段,将 DAST 嵌入到 CI/CD 中,能够实现真正的“安全自动化”。DAST 属于动态测试手段,需要放置在应用程序部署成功以后:

DevSecOps | 极狐 GitLab 动态应用程序安全测试(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 构建,查看构建结果:

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

如果是旗舰版用户还可以在 MR 中看到 DAST 结果:

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

可以看到有两个潜在扫描漏洞,这种情况下需要修复漏洞才可以进行代码 Merge,可以点击扫描出来的漏洞来创建 issue 进行安全问题追踪:

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

在问题修复之后会再次触发扫描的 CI/CD,在无安全问题后,即可合并代码并将对应的 issue 关闭。

对于旗舰版用户来讲,还可以在安全仪表盘中查看所有的 DAST 安全漏洞,做到安全漏洞的统一、透明展示:

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

DAST 需要与其他安全测试手段,诸如 SAST、密钥检测、Fuzz Testing 等一起构建完整的 DevSecOps 体系。

更多关于 DevSecOps 内容,请点击

极狐GitLab DevSecOps 之敏感信息检测
极狐GitLab DevSecOps 之镜像扫描
极狐GitLab DevSecOps 之模糊测试
极狐GitLab DevSecOps 之 SAST
极狐GitLab DevSecOps 之依赖项扫描
极狐GitLab DevSecOps 之 IaC 安全扫描

相关文章

暂无评论

暂无评论...