写点什么

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

作者:极狐GitLab
  • 2022 年 8 月 25 日
    江西
  • 本文字数:1817 字

    阅读完需:约 6 分钟

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

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 安全扫描

发布于: 刚刚阅读数: 4
用户头像

极狐GitLab

关注

开源开放,人人贡献 2021.05.19 加入

开放式一体化DevOps平台,助力行业高速协同增长!

评论

发布
暂无评论
DevSecOps | 极狐GitLab 动态应用程序安全测试(DAST)使用指南_DevOps_极狐GitLab_InfoQ写作社区