关于Docker Engine AuthZ 插件授权绕过漏洞 (CVE-2024-41110)

一、漏洞概述

漏洞名称:Docker Engine AuthZ 插件授权绕过漏洞 (CVE-2024-41110)

漏洞等级:高危

漏洞描述:DockerEngine是Docker的核心组件,是一 个开源的容器引擎,负责构建、运行和管理容器。Docker Engine 的 AuthZ 插件是一种用于实现Docker访问控制机制 的插件,可以实现对Docker API的细粒度访问控制,增强 Docker 的安全性。当配置为使用AuthZ插件时存在授权绕过 漏洞,威胁者可以通过将 Content-Length 设置为 0 的 API 请求来利用该漏洞,导致 Docker 守护进程将没有正文 的请求转发给AuthZ 插件,AuthZ插件可能会错误地批准该 请求,从而导致执行未授权操作,如权限提升等。

二、影响范围

Docker Engine >= v19.03.x 且使用AuthZ 插件的用户 易受该漏洞影响,不使用AuthZ插件或运行旧版 Docker Engine 的用户不易受到影响,以下产品可能包含受影响的 Docker Engine 版本:

  Docker-CE <= v19.03.15Docker-CE <= v20.10.27Docker-CE <= v23.0.14Docker-CE <= v24.0.9Docker-CE <= v25.0.5Docker-CE <= v26.0.2Docker-CE <= v26.1.4Docker-CE <= v27.0.3Docker-CE <= v27.1.0Docker Desktop <= v4.32.0

注:Docker Engine 的 AuthZ 插件在DockerCE或Docker Desktop 中通常是可选插件。Docker EE v19.03.x 和 Mirantis Container Runtime 所有版本不受该漏洞影响

三、修复建议

升级版本 目前该漏洞已经修复,受影响用户可升级到以下版本: Docker Engine:升级到最新修复版本。 Docker-CE:升级到v27.1.1 及更高版本,或升级到相应分支版本的补丁版本。 Docker Desktop:升级到Docker Desktop 4.33(暂未发布)或更高版本。

下载链接: https://download.docker.com/linux/

临时措施 如无法立即更新,可实施以下缓解措施:

1.避免使用 AuthZ 插件。

2.确保只有受信任的实体能够访问DockerAPI,并遵循 最小权限原则。

参考链接: https://github.com/moby/moby/security/advisories/GHSA-v23v-6jw2-98fq

四、扩展信息

Moby 项目与 Docker 的关系
  • Docker 与 Moby: Docker 项目最初是从 Moby 项目中分离出来的,但后来两者之间的界限变得模糊。实际上,Docker 现在使用 Moby 项目中的组件作为其核心部分。

  • Docker CE: Docker Community Edition (CE) 是基于 Moby 项目构建的,它包含了 Moby 项目中的核心组件。

  • Moby 项目的独立性: Moby 项目可以独立于 Docker 运行,这意味着您可以使用 Moby 项目中的组件构建自己的容器化解决方案。

我们无法从Docker 产品发版信息处看到修复“CVE-2024-41110”的信息,但是从最新版本Moby可以看到修复了该漏洞,Moby的最新版本是25.0.6,而Docker CE的最新版本是v27.1.1。

Docker的插件

https://docs.docker.com/engine/extend/legacy_plugins/

Docker没有自己设计一套权限管理机制,而是设计了一套权限管理插件的机制,允许第三方的开发者自行设计权限管理的架构、模型、策略格式,然后通过统一的插件接口接入Docker,为Docker提供权限管理的服务。

Docker设计定义了Network plugins、Volume plugins、Authorization plugins三类插件的接口。插件的实现由第三方来完成。本次漏洞涉及的插件就是Authorization plugins,从官网信息上可知,有两类AuthZ实现。本次漏洞应该不是第三方插件实现本身有漏洞,否则也不会跟Docker Engine有关,应该是Docker定义的接口的漏洞。所以,不配置插件,也不会触发漏洞。

这里需要介绍一下Casbin项目。Casbin是一个国产开源项目,专注于解决Go语言中的权限管理问题。Casbin由北京大学罗杨博士在2017年4月发起,罗杨博士的研究方向为云计算访问控制,目前已发表数十篇相关学术论文,曾经在ICWS、IEEE CLOUD、ICICS等多个顶级学术会议进行论文宣讲。Casbin项目则是其研究成果的落地。Casbin(https://github.com/casbin/casbin)作为目前Golang语言中最主流的访问控制、权限管理开源库,也实现了一个Docker的Authorization Plugin,叫做:Casbin-authz-plugin。

另外,默认Docker并不会开启远程访问,只通过本机的socket,接受Docker命令访问。而Authorization plugins,不只是进行远程访问控制,对本地docker命令也会进行控制。例如定义了访问控制策略之后:

https://github.com/casbin/docker-casbin-plugin

 basic_policy.csvp, /v1.27/images/json, GET

上面的策略表示:grants anyone to perform GET on /v1.27/images/json,and deny all other requests. 所以效果如下:

 $ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEhello-world         latest              48b5124b2768        3 months ago        1.84 kB​$ docker infoError response from daemon: authorization denied by plugin casbin-authz-plugin: Access denied by casbin plugin

Docker 是否安装插件,可以通过 docker plugins ls查看,或者直接查看如下路径:

/run/docker/plugins

/etc/docker/plugins

/usr/lib/docker/plugins

https://docs.docker.com/engine/extend/plugins_authorization/

本来打算安装一下插件,但是需要FanQ(你懂的~~),就打消了这个念头。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】权限控制

权限管理 分类&#xff1a; 页面权限功能(按钮)权限接口权限 vue3-element-admin 的实现方案 一般我们在业务中将 路由可以分为两种&#xff0c;constantRoutes 和 asyncRoutes。 constantRoutes&#xff1a; 代表那些不需要动态判断权限的路由&#xff0c;如登录页、404(或…

【echarts】 柱状图,最后带“竖线”

具体&#xff1a; https://echarts.zhangmuchen.top/#/detail?cid28ea6-0601-e9f5-9cc29-c022b758 let data [{value: 0,name: 数据格式一},{value: 55,name: 数据格式二},{value: 66,name: 数据格式三},{value: 75,name: 数据格式四},{value: 20,name: 数据格式五}];getAr…

盘点.软件测试模型

软件开发模型   软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段&#xff0c;有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程&#xff0c;明确规定了要完成的主要活动…

C++类与对象-六大成员函数

默认成员函数就是用户没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个空类编译器会默认⽣成8个默认成员函数。本文只介绍其中6个&#xff0c;C11增加两个函数见后续博客。 目录 一、构造函数 1.1 概念 1.2 特性 1.3 使用举例 1.4 初始化列表 1…

如何通过前端表格控件实现自动化报表?

背景 最近伙伴客户的项目经理遇见一个问题&#xff0c;他们在给甲方做自动化报表工具&#xff0c;项目已经基本做好了&#xff0c;但拿给最终甲方&#xff0c;业务人员不太买账&#xff0c;项目经理为此也是天天抓狂&#xff0c;没有想到合适的应对方案。 现阶段主要面临的问…

docker笔记7-dockerfile

docker笔记7-dockerfile 一、dockerfile介绍二、dockerfile指令三、构建自己的镜像 一、dockerfile介绍 Dockerfile是用来构建Docker镜像的构建文件&#xff0c;是由一系列命令和参数构成的脚本。 以下是常用的 Dockerfile 关键字的完整列表和说明&#xff1a; 二、docker…

【计算机毕业设计】838装修公司CRM系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

为什么要做边界值测试?

边界值测试的理解 边界值测试&#xff08;Boundary Value Testing&#xff09;是一种常用的软件测试方法&#xff0c;它侧重于测试输入值的边缘或临界条件。这些边缘条件通常包括最小值、最大值以及接近这些最小值和最大值的值。边界值测试的基本思想是&#xff0c;许多软件错…

React 学习——Context机制层级组件通信

核心思路&#xff1a;&#xff08;适用于所有层级&#xff0c;不仅仅是爷孙 父子&#xff09; createContext方法创建一个上下文对象在顶层组件 通过Provider组件提供数据在底层组件&#xff0c;通过useContext钩子函数使用数据 import { createContext, useContext } from …

R语言 爬取数据+简单清洗

小小练习。见代码注释 # 加载必要的包 library(rvest) library(dplyr) library(tidyr)# 指定网页URL url <- "https://research.un.org/en/unmembers/scmembers"# 读取网页内容 webpage <- read_html(url)# 提取所有表格节点 table_nodes <- html_nodes(web…

基于人工智能及大数据的综合智能交通管理平台(可编辑30页PPT)

引言&#xff1a;随着城市化进程的加速和汽车保有量的快速增长&#xff0c;交通拥堵、交通事故频发以及交通资源分配不均等问题日益突出&#xff0c;成为制约城市发展的重要因素。为了应对这些挑战&#xff0c;基于人工智能&#xff08;AI&#xff09;及大数据技术的综合智能交…

【React】详解自定义 Hook

文章目录 一、自定义 Hook 的基本用法1. 什么是自定义 Hook&#xff1f;2. 创建自定义 Hook3. 使用自定义 Hook 二、自定义 Hook 的进阶应用1. 处理副作用2. 组合多个 Hook3. 参数化 Hook4. 条件逻辑 三、自定义 Hook 的实际应用案例1. 实现用户身份验证2. 实现媒体查询 四、最…

民大食堂用餐小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;档口号管理&#xff0c;商家餐品管理&#xff0c;餐品种类管理&#xff0c;购物车管理&#xff0c;订单信息管理 微信端账号功能包括&#xff1a;系统首页&a…

angular入门基础教程(七)系统路由

路由的实现 当我们系统越来复杂&#xff0c;功能越来越多&#xff0c;路由也就是必须的了。在 ng 中如何实现路由呢&#xff1f; 启用路由 在 app 目录下&#xff0c;新建一个 router 目录&#xff0c;把 app.routers.ts 文件拷贝过来&#xff0c;并修改一下。 import { Ro…

C语言程序设计16

程序设计16 问题16_1代码16_1结果16_1 问题16_2代码16_2结果16_2 问题16_3代码16_3结果16_3 问题16_1 函数 f u n fun fun 的功能是&#xff1a;逆置数组元素中的值。 例如&#xff0c;若形参 a a a 所指数组中的数据最初排列为 &#xff1a; 1 , 2 , 3 , 4 , 5 , 6 …

高职院校大数据人才培养成果导向系统构建、实施要点与评量方法

一、引言 在当今信息化快速发展的背景下&#xff0c;大数据已成为推动社会进步和产业升级的重要力量。为满足社会对大数据人才的需求&#xff0c;高职院校纷纷开设大数据相关专业&#xff0c;并致力于探索科学有效的人才培养模式。本文立足于我国信息化与智能化发展趋势&#…

【初阶数据结构】10.排序(1)

文章目录 1.排序概念及运用1.1 概念1.2 运用1.3 常见排序算法 2. 实现常见排序算法2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序2.1.2.1 希尔排序的时间复杂度计算 2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序 1.排序概念及运用 1.1 概念 排序&#xff1a;所谓排序&#x…

如何用PostMan按照规律进行循环访问接口

①设置动态变量 步骤一: 设置环境变量 1. 创建环境变量集合 在 Postman 左上角选择 "环境"&#xff0c;然后点击 "添加" 来创建一个新的环境变量集合。给它起一个名称&#xff0c;比如 "uploadDemo". 2. 添加初始变量 在新创建的环境变量集…

基于python的百度迁徙迁入、迁出数据分析(三)

百度迁徙定义 百度迁徙释义&#xff1a; 百度迁徙以用户常住地所在地市或停留超过一天的非常住地定义为出发城市&#xff0c;以用户离开出发城市&#xff0c;并在非出发城市停留超过4 h以上定义为到达城市。采用4h阈值&#xff0c;排除了城际出行中的途经地。 定义参考来源…

filament 初使用记录

安装初始化 一、环境准备 官网要的 我安装的 二、下载安装 安装laravel composer create-project --prefer-dist laravel/laravel 项目名称 10.*导入 filament composer require filament/filament注册 filament 管理面板 php artisan filament:install --panels初始化…