你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

Clair 助力 Docker 镜像安全

2016 年 1 月 03 日

Clair CoreOS 最近发布的一款开源容器漏洞扫描工具。该工具可以交叉检查Docker 镜像的操作系统以及上面安装的任何包是否与任何已知不安全的包版本相匹配。漏洞是从特定操作系统的通用漏洞披露( CVE )数据库获取。该工具当前支持的操作系统包括 Red Hat Ubuntu Debian

通过从镜像文件系统中抽取静态信息以及维护一个组成镜像的不同层之间的差异列表,可以大大减少分析时间,而且不需要实际运行可能存在漏洞的容器。如果镜像所依赖的一个靠下的层存在漏洞,那么该镜像就会被识别为有漏洞,而且,通过使用图存储,可以避免重新分析镜像。

CoreOS使用Clair 分析用户上传到 Quay.io (一个类似 DockerHub 的容器注册中心)的 Docker 镜像。现已发现, Quay 上的大多数镜像都存在漏洞,甚至是像 Heartbleed(80%)或 Ghost(67%)这样的著名漏洞。2015 年初,一份有关 DockerHub 的报告推断,至少有30% 的官方镜像和多达40% 的用户上传镜像包含高级漏洞。期间,在 DockerCon 2015 欧洲大会上,除了其他安全相关的特性外,Docker 还宣布了他们自己的镜像扫描和漏洞检测项目 Nautilus 。Nautilus 并不开源,而且只能运行在 Docker Hub 上。

市场上还有其他容器漏洞检测工具,比如 IBM 的 Vulnerability Advisor FlawCheck 。它们的主要不同之处在于它们是专有的,在 IBM 的场景中,仅应用于托管在 Bluemix 云产品上的镜像。IBM 的解决方案还支持基本的安全策略(比如,“密码使用期限应该为90 天”),会以同静态代码分析工具类似的方式生成警告。

当然,这些工具可以确定是否存在可能有漏洞的包,但不能验证它们实际上是否已被利用。另外,它们也无法检测运行实例中的动态行为,比如在运行时安装有漏洞的包版本。

Clair 提供了一个 JSON API ,并且可以在本地运行以检查容器镜像,例如,作为持续集成或持续交付管道的一部分。

下面的代码片段初始化(默认配置)并启动了一个 Clair 本地服务:

复制代码
$ git clone https://github.com/coreos/clair.git
# 从 Github 克隆 Clair 库
$ cp clair/config.example.yaml clair/config/config.yaml
# 使用默认设置创建一个初始配置文件
$ docker pull quay.io/coreos/clair:latest
# 下载一个安装了 Clair 的 CoreOS 容器镜像
$ docker run -p 6060:6060 -p 6061:6061 -v clair:$PWD/clair/config:ro quay.io/coreos/clair:latest --config=/config/config.yaml
# 启动服务——务必等待获取初始漏洞列表(消息 “升级器:升级完成”)

如果管道生成了可以部署的不可变Docker 镜像,那么漏洞扫描就可以在某个阶段成为安全测试的一部分,这可能会中断管道。例如,下面的代码分析一个名为“tmpimage”的Docker 镜像

复制代码
$ go get -u github.com/coreos/clair/contrib/analyze-local-images
# 需要安装 go
$ $GOPATH/bin/analyze-local-images tmpimage
# analyze-local-images 是一个包装器脚本,分析镜像中的所有层

上述代码片段查找镜像中任意层上的高级或严重漏洞。通过抽取每个层然后单个提交给 Clair 的 API ,可以指定其他的严重性等级。

单个层的完整漏洞列表(任意严重性等级,从可忽略到严重)可以通过稍后的分析生成,例如通过运行下面的代码:

复制代码
$ curl -s -H "Content-Type: application/json" -X POST -d \
'{
"ID": "39bb80489af75406073b5364c9c326134015140e1f7976a370a8bd446889e6f8",
"Path": "/tmp/docker/layers/39bb80489af75406073b5364c9c326134015140e1f7976a370a8bd446889e6f8.tar"
}' \
127.0.0.1:6060/v1/layers
# 向 Clair 提交层,分析并存储在 DB 中
$ curl -s "127.0.0.1:6060/v1/layers/39bb80489af75406073b5364c9c326134015140e1f7976a370a8bd446889e6f8/vulnerabilities?minimumPriority=Negligible" | python -m json.tool > all_vulnerabilities.json
# 获取在层里找到的所有漏洞

此外,CoreOS 最近还宣布了 Tectonic CoreOS 的容器即服务产品)中的分布式信任计算(DTC)能力。DTC 在整个栈上建立了一个受信任的加密链,从应用程序层到容器、操作系统,再到硬件。

查看英文原文: Clair Helps Secure Docker Images

2016 年 1 月 03 日 18:003552
用户头像

发布了 1008 篇内容, 共 319.4 次阅读, 收获喜欢 289 次。

关注

评论

发布
暂无评论
发现更多内容

消息中间件详细架构设计文档

黄双鹏

架构实战营

Dubbo 泛化引用

青年IT男

dubbo

模块三:课后作业

黄嘉治

架构实战营

智能家居控制原理

lenka

5月日更

架构实战营 - 模块三作业

凯迪

架构实战营 - 模块三总结

凯迪

架构实战营

GreenPlum的CURD

数据社

greenplum 5月日更

架构实战营 模块3作业

夏日

架构训练营

架构实战营 模块三:课后作业

Ahu

#架构实战营

已收藏!2021年最新腾讯Android面经,超详细

欢喜学安卓

android 程序员 面试 移动开发

消息队列的架构设计文档

Geek_bded54

推荐一个GitHub的开源电子书仓库,值得收藏

C语言与CPP编程

Java c++ Python C语言 电子书

架构训练营模块3作业-消息队列架构设计

品牌认同感与鄙视链

ES_her0

5月日更

WebRTC下摄像头的采集分析

小辣条

ios WebRTC

架构实战营模块 3 作业

阿体

架构实战营 模块三作业

Dylan

架构实战营

最好的关系,是成就彼此

小天同学

爱情 日常感悟 个人思考 5月日更 相处之道

学妹问我:OpenJDK是什么?作为师哥,必须万字详解屁颠屁颠奉上

牛哄哄的java大师

Java

模块三作业

梦寐凯旋

架构实战营

音频变速变调-sonic源码分析

floer rivor

音视频

架构实战营 模块三作业

fazinter

架构实战营

模块三 - 消息队列架构设计文档

华仔架构训练营

腾讯T3大佬亲自讲解!我的腾讯安卓面试经历分享,分分钟搞定!

欢喜学安卓

android 程序员 面试 移动开发

五月学习心得(二)

攻城先森

音视频 5月日更 学习心得

自研集群+MySQL架构设计文档模板

9527

架构实战营

架构实战营 模块三课后作业

iProcess

架构实战营

作业三架构设计文档

大肚皮狒狒

服务器又被挖矿了,怎么防?

运维研习社

挖矿 5月日更 Linux安全

ARTS - week 9

steve_lee

模块3作业-架构设计文档

yu

架构实战营

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

Clair助力Docker镜像安全-InfoQ