Aqua Securityは、オープンソースの脆弱性スキャナであるTrivyが、多くのプラットフォームで統合オプションとして利用できるようになったことを発表した。Trivyは、オペレーティングシステム内の脆弱性と、多くの一般的なアプリケーションの依存関係をスキャンできる。
今回の発表により、TrivyがデフォルトのスキャナとしてHarborに含まれるようになった。Harbourはオープンソースのコンテナーイメージレジストリであり、CNCFとのインキュベーションプロジェクトである。Trivyは、DockerとMirantis Docker Enterpriseにおけるデプロイメントのための統合スキャンオプションとしても利用できるようになった。
Trivyは、Alpine、RHEL、CentOS、Debian、Ubuntu、SUSE、Amazon Linuxなど、多くのLinuxオペレーティングシステムの脆弱性を検出できる。Aquaによると、Trivyは特にAlpine LinuxとRHEL/CentOSで高い精度で脆弱性を検出できる。Aqua SecurityのOSSエンジニアであるTeppei Fukuda氏は、多数の脆弱性スキャナによってAlpine Linuxで検出された脆弱性の分析のうち、Trivyにより最もうまくいったのもを共有した。
Trivyはまた、コンテナ内の次のファイルを自動的に検出し、それらを使用して、指定されたアプリケーションの依存関係内の脆弱性をスキャンする。
gemfile.lock
pipfile.lock
composer.lock
package-lock.json
yarn.lock
cargo.lock
Trivyの実行は、コマンドラインから実行することも、CIジョブに統合することもできる。コマンドラインから、trivy <image-name>
のようにイメージ名を指定することでこれを実現できる。Trivyはイメージをスキャンし、検出された脆弱性を出力する。
TrivyをTravis CI、CircleCI、GitLab CIなどのCIツールに統合することが可能である。脆弱性が見つかった場合、ジョブ実行を失敗させるようにTrivyを設定できる。実行を失敗しないように、フラグ--exit-code 0
を指定できる。たとえば、Travis CIと統合するには、travis.yml
ファイルを次のように更新する必要がある。
$ 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/aquasecurity/trivy/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
- wget https://github.com/aquasecurity/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 --no-progress trivy-ci-test:${COMMIT}
- ./trivy --exit-code 1 --severity CRITICAL --no-progress trivy-ci-test:${COMMIT}
cache:
directories:
- $HOME/.cache/trivy
Kenna Securityの主任セキュリティエンジニアであるJerry Gamblin氏は、上位のDockerファイル内に「ファイルの20%以上に、ハイリスクと見なされる脆弱性が少なくとも1つ含まれている」こと、CVEの中央値は37であることがわかった。この情報の共有に役立つように、Gamblin氏はツールVulnerableContainers.orgを作成した。このツールは、最も人気のある上位Docker Hubコンテナーのトップ1000を取得し、Trivyを使用して脆弱性をスキャンする。
Trivyは、オープンソースクラウドネイティブプロジェクトのAquaポートフォリオの一部である。ここには、kube-bench、kube-hunter、tracee、CloudSploit、kubectl-who-canが含まれる。TrivyはApache 2ライセンスの基で使用でき、GitHubからダウンロードできる。