[分享创造] Vesta: 一个 Docker 和 Kubernetes 配置安全的快速检查工具

标签: 分享 创造 vesta | 发表时间:2022-12-17 00:48 | 作者:christa
出处:https://www.v2ex.com/

Vesta 可以做什么

伴随着容器技术的快速发展,容器安全问题也逐渐成为企业所关注的话题,越来越多的公司以及个人开发着选择将他们的服务迁移到云上。目前市面上的容器扫描或容器配置检查的产品大部门都需要进行繁琐的环境配置,同时对机器性能也有着比较高的要求,而开发者或安全测试者或许只是需要扫描少数的镜像或者配置,繁琐的配置和高昂的机器费用对他们来说难以承担,导致安全检查的效率不佳。Vesta 是一款集容器扫描,Docker 和 Kubernetes 配置基线检查于一身的工具。检查内容包括镜像或容器中包含漏洞版本的组件,Docker 以及 Kubernetes 的危险配置。同时也是一个灵活,快速的工具,能够在各种系统上运行,包括但不限于 Windows ,Linux 以及 MacOS

Vesta 为开发者和安全测试者提供了方便、快速的解决方案。整个程序由 golang 编写,只需要使用 go build或者从 releases 下载,无需配置任何环境和数据库,并且在 1 vCPU, 2G Memory 的机器上就可运行,最大化方便使用者们。

项目地址

功能介绍

Vesta 包含两大模块

  • scan: 扫描容器和镜像的组件信息,检测是否包含 CVE 漏洞版本
  • analyze: 检查 Docker 和 Kubernetes 配置,是否包含危险配置。后续考虑附加攻击方法

检查列表

Docker 检查

Supported Check Item Description Severity
PrivilegeAllowed 危险的特权模式 critical
Capabilities 危险 capabilities 被设置 critical
Volume Mount 敏感或危险目录被挂载 critical
Docker Unauthorized 2375 端口打开并且未授权 critical
Kernel version 当前内核版本存在逃逸漏洞 critical
Network Module Net 模式为 host模式并且在特定 containerd 版本下 critical
Docker Server version Docker Server 版本存在漏洞 critical/high/medium/low
Docker env password check Docker env 是否存在弱密码 high/medium
Image tag check Image 没有被打 tag 或为默认 latest low
待定 Container env 检查数据库是否未设置密码, 包括但不限于 MySQL, Redis, Memcache -
待定 IaC scan IaC 扫描 -

Kubernetes 检查

Supported Check Item Description Severity
PrivilegeAllowed 危险的特权模式 critical
Capabilities 危险 capabilities 被设置 critical
PV and PVC PV 被挂载到敏感目录并且状态为 active critical/medium
ClusterRoleBinding 默认账户被赋予了权限 high/medium
Kubernetes-dashborad 检查 -enable-skip-login以及 dashborad 的账户权限 critical/high/low
Kernel version (k8s versions is less than v1.24) 当前内核版本存在逃逸漏洞 critical
Docker Server version (k8s versions is less than v1.24) Docker Server 版本存在漏洞 critical/high/medium/low
Kubernetes certification expiration 证书到期时间小于 30 天 medium
ConfigMap and Secret check ConfigMap 或者 Secret 是否存在弱密码 high/medium
Auto Mount ServiceAccount Token Pod 默认挂载了 /var/run/secrets/ kubernetes.io/serviceaccount/token. low
NoResourceLimits 没有限制资源的使用,例如 CPU,Memory, 存储 low
Job and Cronjob Job 或 CronJob 没有设置 seccomp 或 seLinux 安全策略 low
待定 CVE-2022-29179 检测 CVE-2022-29179 是否存在 critical
待定 Envoy admin Envoy admin 被配置以及监听 0.0.0.0. -
待定 Kubelet 10255 and Kubectl proxy 10255 port 打开或 Kubectl proxy 开启 -
待定 Trampoline attack RBAC 权限不安全,容易遭受 Trampoline 攻击 -
待定 IaC scan Iac 扫描 -

使用样例

检查 k8s 的基础配置

  $./vesta analyze k8s

2022/11/29 23:15:59 Start analysing
2022/11/29 23:15:59 Geting docker server version
2022/11/29 23:15:59 Geting kernel version

Detected 4 vulnerabilities

Pods:
+----+--------------------+------------------------------+-------------------+-----------------------+----------+--------------------------------+
| ID |     POD DETAIL     |            PARAM             |       VALUE       |         TYPE          | SEVERITY |          DESCRIPTION           |
+----+--------------------+------------------------------+-------------------+-----------------------+----------+--------------------------------+
|  1 | Name: vulntest     | test-volume                  | /etc              | Directory             | critical | Mounting '/etc' is suffer      |
|    | Namespace: default |                              |                   |                       |          | vulnerable of container        |
|    |                    |                              |                   |                       |          | escape.                        |
+    +                    +------------------------------+-------------------+-----------------------+----------+--------------------------------+
|    |                    | Privileged                   | true              | Pod                   | critical | There has a potential          |
|    |                    |                              |                   |                       |          | container escape in privileged |
|    |                    |                              |                   |                       |          | module.                        |
+    +                    +------------------------------+-------------------+-----------------------+----------+--------------------------------+
|    |                    | AllowPrivilegeEscalation     | true              | Pod                   | critical | There has a potential          |
|    |                    |                              |                   |                       |          | container escape in privileged |
|    |                    |                              |                   |                       |          | module.                        |
+    +                    +------------------------------+-------------------+-----------------------+----------+--------------------------------+
|    |                    | Resource                     | memory, cpu,      | Pod                   | low      | None of resources is be        |
|    |                    |                              | ephemeral-storage |                       |          | limited.                       |
+----+--------------------+------------------------------+-------------------+-----------------------+----------+--------------------------------+

Configures:
+----+-----------------------------+--------------------------------+--------------------------------------------------------+----------+--------------------------------+
| ID |            TYPEL            |             PARAM              |                         VALUE                          | SEVERITY |          DESCRIPTION           |
+----+-----------------------------+--------------------------------+--------------------------------------------------------+----------+--------------------------------+
|  1 | K8s version less than v1.24 | kernel version                 | 5.10.104-linuxkit                                      | critical | Kernel version is suffering    |
|    |                             |                                |                                                        |          | the CVE-2022-0185 with         |
|    |                             |                                |                                                        |          | CAP_SYS_ADMIN vulnerablility,  |
|    |                             |                                |                                                        |          | has a potential container      |
|    |                             |                                |                                                        |          | escape.                        |
+----+-----------------------------+--------------------------------+--------------------------------------------------------+----------+--------------------------------+
|  2 | ConfigMap                   | data: db.string                | db.string:mysql+pymysql://dbapp:Password123@db:3306/db | high     | ConfigMap has found weak       |
|    |                             |                                |                                                        |          | password: 'Password123'.       |
+----+-----------------------------+--------------------------------+--------------------------------------------------------+----------+--------------------------------+
|  3 | Secret                      | data: password                 | password:Password123                                   | high     | Secret has found weak          |
|    |                             |                                |                                                        |          | password: 'Password123'.       |
+----+-----------------------------+--------------------------------+--------------------------------------------------------+----------+--------------------------------+
|  4 | ClusterRoleBinding          | binding name:                  | verbs:                                                 | high     | Key permission are given to    |
|    |                             | vuln-clusterrolebinding |      | get,watch,list,create,update |                         |          | the default service account    |
|    |                             | rolename: vuln-clusterrole |   | resources: pods,services                               |          | which will cause a potential   |
|    |                             | namespace: default             |                                                        |          | container escape.              |
+----+-----------------------------+--------------------------------+--------------------------------------------------------+----------+--------------------------------+

展望

Vesta 希望能够最大化方便开发者们排查日常配置中的一些基线安全问题,并且也希望云上环境更加安全

相关 [分享 创造 vesta] 推荐:

[分享创造] Vesta: 一个 Docker 和 Kubernetes 配置安全的快速检查工具

- - V2EX
伴随着容器技术的快速发展,容器安全问题也逐渐成为企业所关注的话题,越来越多的公司以及个人开发着选择将他们的服务迁移到云上. 目前市面上的容器扫描或容器配置检查的产品大部门都需要进行繁琐的环境配置,同时对机器性能也有着比较高的要求,而开发者或安全测试者或许只是需要扫描少数的镜像或者配置,繁琐的配置和高昂的机器费用对他们来说难以承担,导致安全检查的效率不佳.

[分享创造] 开源一个类微博 twitter 的网站

- - V2EX
网址: https://sserr.net. 代码: https://github.com/coyove/iis. 之前的发布: https://v2ex.com/t/628871. 时隔一个多月,当初的 todo 基本上都清掉了,代码也重构到了开源出去也不会太丢人的程度 XD. 总的来说这是一个类微博的系统,提供了大部分你所熟知的微博功能.

[分享创造] 推荐一个 SpringBoot API 文档生成工具

- - V2EX
修复了很多大家提出来的问题,应该稳定了不少,可以稍微放心推荐给大家了. 它是一个开源的 SpringBoot API 文档生成工具,无需额外注解,轻松集成. 目前有 800+star,已经有不少小伙伴在使用了,并且有一个活跃的微信反馈群. 如果你已经厌烦 Swagger 满屏的注解和额外的工作量,你不妨一试.

[分享创造] 看到有人讨论亚健康的问题,分享一些个人锻炼的经验

- - V2EX
下面的方法是没有去健身房,自己在家,没有器材时的方法. 个别动作可以考虑买个瑜伽垫,因为在汗水到床上还需要洗床单的. 一定要吃主食,也可以适量用薯类或者其他谷物代替. 2.蔬菜可以不限量,水果少食糖分多的. 苹果、红薯、玉米等粗粮比较不错. 吃的话可以试一下全麦面包或者坚果之类的. 4.不要特意去补充蛋白质,不吃动物油,动物脂肪,肥肉之类.

[分享创造] 可能是 iOS 上最好用的电视直播软件

- - V2EX
因为平时喜欢看电视,在 app store 上又找不到适合的,就想着自己造个轮子,临时抱佛脚学了三天 iOS 开发,写了个 app. 1.自己添加管理 m3u8 直播源,这个没什么好说的,适合动手能力强的. 2.订阅列表,订阅后,只要负责维护列表的大神列表更新,用户的列表就会自动更新. 目前我自己维护了 4 个列表,加起来频道大概六七十个.

[分享创造] 一个使用 Flask+gorse 实现的 Steam 游戏推荐系统

- - V2EX
之前小弟在 V2EX 推广过 一个 Go 语言实现的 RESTful 的推荐系统后端,最近以它为后端,使用 Flask 实现了一个 Steam 推荐系统,发在 V2EX 听取一下老哥们的意见. 关于工程量:因为 gorse 完成了大部分的逻辑,所以 Python 代码也就一百多行. 前端用的是 Materialize,后端用的是 Flask.

[分享创造] GNE v0.1 正式发布: 4 行代码开发新闻网站通用爬虫

- - V2EX
GNE ( GeneralNewsExtractor )是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容、标题、作者、发布时间、正文中的图片地址和正文所在的标签源代码. GNE 在提取今日头条、网易新闻、游民星空、 观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻等数百个中文新闻网站上效果非常出色,几乎能够达到 100%的准确率.

[分享创造] Pear Admin Ant 基于 Vue 3 与 Ant Design Vue 2 的中台模板框架, 1.0.0.RELEASE 正式发布

- - V2EX
Pear Admin Ant 基于 Vue 3 与 Ant Design 2 的中台框架. 1.登录密码 Input --> type == password. 2.通知 / 公告 / 私信 / 任务. 5.升级 Ant 依赖至 Rc 7. 7.夜间模式 tab 适应问题, windows 下菜单栏滚动条临时处理.

分享图片

- 糖果 - 变态辣椒的时政漫画

40套MiniIcon分享

- Newton - Booto'Blog
很精美的40套迷你MiniIcon,可能这类型的Icon更多的是运用在App设计和移动客户端上面吧,简约而不简单.