极狐GitLab 是一个一体化的 DevOps 平台,本身拥有强大的 DevSecOps 功能,能够提供覆盖软件开发生命周期的安全保障能力,具有使用方便,配置简单,结果可视的特点,而且能够和极狐GitLab 自身的 CI/CD 无缝集成,构建 DevSecOps CI/CD Pipeline,再与极狐GitLab 的 git workfow 结合,真正构建起软件安全交付的 DevSecOps 流程。下面结合近期比较火热的 log4j 漏洞,来演示一下如何用多种手段检测此次漏洞,并快速修复。

在上篇文章极狐GitLab Dependency Scanning 功能检测 Apache Log4j 2 漏洞,我们介绍了 log4j 漏洞的详细内容,并用极狐GitLab Dependency Scanning 来对漏洞进行检测,但是受限于文章篇幅,并没有将检测流程集成到 CI/CD 且与 git workflow 结合。本文将详细演示这一部分。

用 Dependency Scanning 检测 log4j 漏洞

极狐GiLab 的Dependency Scanning使用 Gemnasium,能够对多种语言(Ruby、PHP、Java、Go、C#等)进行依赖扫描。

极狐GitLab Dependency Scanning 功能检测 Apache Log4j 2 漏洞的 Demo Repo 为例子,演示与 CI/CD 的无缝集成。

在 Demo Repo 的 .gitlab-ci.yml 文件中写入如下内容

variables:
  SECURE_ANALYZERS_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers"
  DS_DEFAULT_ANALYZERS: "gemnasium-maven"
  DS_EXCLUDED_ANALYZERS: ""
  DS_EXCLUDED_PATHS: "spec, test, tests, tmp"
  DS_MAJOR_VERSION: 2

stages:
  - test

dependency_scanning:
  stage: test
  allow_failure: true
  image:
    name: "$DS_ANALYZER_IMAGE"
  variables:
    DS_ANALYZER_IMAGE: "$SECURE_ANALYZERS_PREFIX/gemnasium-maven:$DS_MAJOR_VERSION"
    DS_REPORT_PACKAGE_MANAGER_MAVEN_WHEN_JAVA: "false"
  script:
    - /analyzer run
  artifacts:
    reports:
      dependency_scanning: gl-dependency-scanning-report.json
    paths: [gl-dependency-scanning-report.json]
  dependencies: []

触发 CI/CD Pipeline,构建完成后在 Security & Compliance –> Vulnerability Report 中可以查看到漏洞报告,如下图所示:

security-dependency-scanning

点击可以查看漏洞详情,如下图所示:

log4j2-detail-info

用容器镜像扫描检测 log4j 漏洞

容器镜像扫描(Container Scanning)也是极狐GitLab 七大 DevSecOps 功能的重要组成部分。关于极狐GitLab 容器镜像扫描的详细使用可以参考博客文章极狐GitLab DevSecOps 之容器镜像安全扫描

下面演示如何用极狐GitLab 容器镜像扫描功能检测 log4j 漏洞。依旧使用同样的 Demo Repo,在 .gitab-ci.yml 中写入如下内容:

variables:
  CS_ANALYZER_IMAGE: registry.gitlab.com/security-products/container-scanning/trivy:4

container_scanning:
  image: "$CS_ANALYZER_IMAGE"
  stage: test
  variables:
    GIT_STRATEGY: fetch
    DOCKER_USER: "$CI_REGISTRY_USER"
    DOCKER_PASSWORD: "$CI_REGISTRY_PASSWORD"
    DOCKER_IMAGE: $CI_REGISTRY_IMAGE:2.0.0
    CS_DISABLE_LANGUAGE_VULNERABILITY_SCAN: "false"
  allow_failure: true
  artifacts:
    reports:
      container_scanning: gl-container-scanning-report.json
    paths: [gl-container-scanning-report.json]
  dependencies: []
  script:
    - gtcs scan

触发 CI/CD Pipeline,构建结束,就可以在构建日志中看到检测结果,如下图所示:

log4j2-scan-cicd-pipeline

当然,在 Security Dashboard 的漏洞报告中也可以看到:

security-dashboard

将漏洞检测与 git workflow 相结合

可以通过Security & Compliance –> Configuration来设置,在创建 MR 的时候就进行漏洞扫描。如果是免费用户,可以在同样的界面上申请免费试用安全功能:

free-trial

在开启安全功能后,创建 MR,扫描结束会在 MR 界面显示扫描出的漏洞,如下图所示:

mr-vulnerability

点击漏洞详情,还可以通过创建 issue 的方式来对此漏洞进行跟踪:

create-issue

相关人员可以根据漏洞提供的修复手段来进行修复(如将 log4j 的版本升级到 2.16.0),提交修复代码后,检测流程会再度开启:

fix-log4j2.png

可以看到在漏洞报告中已经没有了与 log4j 的高危漏洞(ID 为 CVE-2021-44228)。

其他的漏洞来自于容器镜像检测,因为容器镜像检测会将 OS 包含在内。从这点看,目前主流镜像都存在安全漏洞,使用的时候一定要配合安全扫描,并且集成到 CI/CD 中。

极狐GitLab DevSecOps 能够在软件开发生命周期的各个阶段提供安全保证能力,从静态到动态,利用 CI/CD,git workflow 来提供一站式的安全能力,提升研发效率,保证安全交付。免费也用户可以申请免费试用旗舰版功能来开启你的 DevSecOps 之旅。

60天免费试用极狐GitLab专业版

极狐GitLab不仅是源代码管理或CI/CD工具,它是一个覆盖完整软件开发生命周期和DevOps的开放式一体化平台。

企业版试用
售前咨询
联系电话
在线支持
预约演示