FreeBuf|Terrier:一款功能强大的镜像&容器安全分析工具


【FreeBuf|Terrier:一款功能强大的镜像&容器安全分析工具】
FreeBuf|Terrier:一款功能强大的镜像&容器安全分析工具
本文插图

Terrier是一款针对OCI镜像和容器的安全分析工具 , Terrier可以帮助研究人员扫描OCI镜像和容器文件 , 并根据哈希来识别和验证特定文件是否存在 。
工具安装源代码:如需了解源代码安装步骤 , 请参考项目的Releases页面 。
通过Go安装:$go get github.com/heroku/terrier源构建通过Go:$go build
$make all工具使用$ ./terrier -hUsageof./terrier:-cfg stringLoad configfromprovided yaml file (default"cfg.yml")工具使用必须扫描镜像的OCI TAR , 这个值需要通过cfg.yml文件提供给Terrier 。
下列Docker命令可以用来将一个Docker镜像转换成一个TAR文件 , 并提供给Terrier扫描:
# docker save imageid -o image.tar$ ./terrier[+] Loading config: cfg.yml[+] Analysing Image[+] Docker Image Source: image.tar[*] Inspecting Layer: 05c3c2c60920f68***6d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f[!] All components were identified and verified: (493/493)样本YML配置Terrier会对YAML文件进行解析 , 下列给出的是样本配置文件:
#THIS IS AN EXAMPLE CONFIG, MODIFY TO YOUR NEEDSmode: imageimage: image.tar# mode: container# path: merged# verbose: true# veryverbose: truefiles:- name:'/usr/bin/curl'hashes:-hash:'2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'-hash:'22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'-hash:'9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'-hash:'8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'- name:'/usr/bin/go'hashes:-hash:#UNCOMMENT TO ANALYZE HASHES# hashes:#- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'#- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'#- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'Terrier会做什么?Terrier提供了一个命令行工具 , 可以允许我们:
1、扫描一个OCI镜像中一个或多个目标文件是否存在 , 需提供目标文件的SHA256哈希;
2、扫描一个正在运行的容器中一个或多个目标文件是否存在 , 需提供目标文件的SHA256哈希;
场景1Terrier可以用来验证特定OCI镜像是否包含特定代码 , 这个功能可以使用在供应链验证场景中 。 比如说 , 我们可能需要检查特定Docker镜像是否由特定版本的代码构成的 , 此时就可以使用Terrier了 。 此时 , 我们需要提供特定代码的SHA256哈希 。
此场景下的样本YAML文件如下所示:
mode: image# verbose:true# veryverbose: trueimage: golang1131.tarfiles:- name:'/usr/local/bin/analysis.sh'hashes:- hash:'9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'- name:'/usr/bin/curl'hashes:- hash:'23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'- name:'/usr/local/bin/staticcheck'hashes:- hash:'73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'场景2Terrier可以用来验证一个OCI镜像中是否存在特定文件 , 需提供目标文件的SHA256哈希 。 这个给功能可以帮助我们检查OCI镜像中是否存在恶意文件 。
mode: image# verbose:true# veryverbose: trueimage: alpinetest.tarhashes:- hash:'8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'- hash:'22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2'- hash:'60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41'- hash:'9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'


推荐阅读