写点什么

利用极狐 GitLab DevSecOps 功能检测 log4j 的多种方式

作者:极狐GitLab
  • 2021 年 12 月 21 日
  • 本文字数:1624 字

    阅读完需:约 5 分钟

利用极狐GitLab DevSecOps 功能检测 log4j 的多种方式

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


测试 Demo Repo 用一个输出 Hello World 的 Java maven 项目来做测试。代码目录结构如下:


$ tree.├── pom.xml├── README.md└── src    └── main        └── java            └── com                └── example                    └── hello                        └── Hello.java
复制代码


pom.xml 文件中,关于 log4j 2 的依赖描述如下:

<dependencies>    <dependency>        <groupId>org.apache.logging.log4j</groupId>        <artifactId>log4j-api</artifactId>        <version>2.11.0</version>        </dependency>    <dependency>        <groupId>org.apache.logging.log4j</groupId>        <artifactId>log4j-core</artifactId>        <version>2.11.0</version>    </dependency></dependencies>
复制代码


Hello.java 的内容如下:


package com.example.hello;
import org.apache.logging.log4j.Logger;import org.apache.logging.log4j.LogManager;
private static Logger log = LogManager.getLogger(Hello.class.getClass());
public static void main(String [] args) { log.error("this is ERROR message!!"); log.info("this is INFO message!!"); log.debug("this is DEBUG message!!"); }}
复制代码


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


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

include:- template: Security/Dependency-Scanning.gitlab-ci.yml
复制代码

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


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


用容器镜像扫描检测 log4j 漏洞容器镜像扫描(Container Scanning)也是极狐 GitLab 七大 DevSecOps 功能的重要组成部分。下面演示如何用极狐 GitLab 容器镜像扫描功能检测 log4j 漏洞。依旧使用同样的 Demo Repo,在 .gitab-ci.yml 中写入如下内容:


include:- template: Security/Dependency-Scanning.gitlab-ci.yml
variables: CS_DISABLE_LANGUAGE_VULNERABILITY_SCAN: "false"
复制代码


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


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


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


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


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


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


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


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


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


发布于: 48 分钟前阅读数: 4
用户头像

极狐GitLab

关注

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

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

评论

发布
暂无评论
利用极狐GitLab DevSecOps 功能检测 log4j 的多种方式