推荐一款适用CI的容器漏洞扫描工具

Posted 运维实谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐一款适用CI的容器漏洞扫描工具相关的知识,希望对你有一定的参考价值。



trivy是一个简单而全面的容器漏洞扫描程序。它能够检测操作系统软件包(Alpine,RHEL,CentOS等)的漏洞

推荐一款适用CI的容器漏洞扫描工具

和应用程序依赖项(Bundler,Composer,npm,yarn等),通过检测容器中的以下文件并扫描依赖项中的漏洞

  • Gemfile.lock

  • Pipfile.lock

  • poetry.lock

  • composer.lock

  • package-lock.json

  • yarn.lock

  • Cargo.lock


Trivy很容易使用。只需安装二进制文件即可进行扫描。需要执行的扫描操作是指定容器的镜像名称

先来直观的感受一下它的强大

推荐一款适用CI的容器漏洞扫描工具

安装

trivy安装非常简单,方便,在Centos中可通过yum包管理工具,或rpm包安装,同样支持源码编译安装

yum安装,需要在yum存储库中添加trivy.repo,内容如下:

推荐一款适用CI的容器漏洞扫描工具

然后通过yum makecache生成缓存

通过yum install trivy进行安装

推荐一款适用CI的容器漏洞扫描工具


rpm安装,通过如下命令进行安装:

rpm -ivh https://github.com/knqyf263/trivy/releases/download/v0.0.15/trivy_0.0.15_Linux-64bit.rpm


二进制安装即编译安装,需要依赖go编译环境

$ mkdir -p $GOPATH/src/github.com/knqyf263
$ cd $GOPATH/src/github.com/knqyf263
$ git clone https://github.com/knqyf263/trivy
$ cd trivy/cmd/trivy/
$ export GO111MODULE=on
$ go install


使用

trivy首次使用需要等待很长时间,它会从github上更新所有的漏洞库

推荐一款适用CI的容器漏洞扫描工具

完成后,会在用户家目录的.cache/trivy下生成缓存文件

推荐一款适用CI的容器漏洞扫描工具第二次执行的时候就可以快速进行漏洞扫描

推荐一款适用CI的容器漏洞扫描工具


当然,trivy也支持docker快速启动

docker run --rm -v [YOUR_CACHE_DIR]:/root/.cache/ knqyf263/trivy [YOUR_IMAGE_NAME]

需要将YOUR_CACHE_DIR替换成你的缓存目录,将之前缓存的漏洞库映射到容器中,不然启动会很慢


如果想通过这种方式扫描本机的容器镜像,需要将docker.sock文件映射到容器内,比如

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \

    -v $HOME/.cache/:/root/.cache/ knqyf263/trivy python:3.4-alpine


trivy使用简单示例如下:

扫描镜像:

trivy [image_name]


扫描通过save方式打包的镜像:

trivy --input [image_name.tar]


将扫描结果存为json文件:

trivy -f json -o results.json [image_name]


通过设置漏洞级别过滤漏洞:

trivy --severity HIGH,CRITICAL [image_name]


通过设置漏洞类型过滤漏洞:

trivy --vuln-type os [image_name]

漏洞类型分为os和library


只更新某个系统类型的漏洞库:

trivy --only-update alpine,debia [image_name]


指定退出代码:

trivy --exit-code 1 [image_name]

指定退出代码,主要是为后续判断提供可操作性,主要是在CI中


由于trivy有缓存,所以在扫描镜像的latest版本的时候,会出现异常,需要清楚缓存操作:

trivy --clear-cache [image_name]


如果需要重建本地漏洞数据库,或清除所有缓存,可以通过trivy --reset


trivy的另一个牛逼特性是对持续集成(CI)的支持,即在docker的持续集成环境中,可以在启动服务前,对镜像进行扫描,并通过漏洞级别指定退出代码


trivy的ci配置如下:

$ cat .travis.yml
services:
 - docker

env:
 global:
   - COMMIT=${TRAVIS_COMMIT::8}

before_install:
 - docker build -t trivy-ci-test:${COMMIT} .
 - export VERSION=$(curl --silent "https://api.github.com/repos/knqyf263/trivy/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
 - wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz
 - tar zxvf trivy_${VERSION}_Linux-64bit.tar.gz
script:
 - ./trivy --exit-code 0 --severity HIGH --quiet --auto-refresh trivy-ci-test:${COMMIT}
 - ./trivy --exit-code 1 --severity CRITICAL --quiet --auto-refresh trivy-ci-test:${COMMIT}
cache:
 directories:
   - $HOME/.cache/trivy


trivy除了支持公有镜像仓库,同时也支持私有镜像仓库,只需要在ENV中指定TRIVY_AUTH_URL, TRIVY_USERNAME  TRIVY_PASSWORD

比如:

export TRIVY_AUTH_URL=https://registry.hub.docker.com

export TRIVY_USERNAME={DOCKERHUB_USERNAME}

export TRIVY_PASSWORD={DOCKERHUB_PASSWORD}


持续更新,欢迎扫码关注,敬请期待!


原文链接:https://github.com/knqyf263/trivy


推荐一款适用CI的容器漏洞扫描工具
扫描二维码
关注我们吧



温馨提示



以上是关于推荐一款适用CI的容器漏洞扫描工具的主要内容,如果未能解决你的问题,请参考以下文章

推荐两款SQL注入扫描工具|支持MongoDB

有哪些好的硬盘检测工具推荐

Seccubus一款 定期进行漏洞扫描工具

你的Docker环境安全吗?

黑客一款定期进行漏洞扫描工具!

36.Vulmap是一款web漏洞扫描工具