乐趣区

关于运维: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 平安扫描

退出移动版