关于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,一经查实,立即删除!

相关文章

蓝牙BlueZ验证使用记录

最近使用的一款AICSemi AIC8800D8芯片做的WiFiBT二合一模组&#xff0c;该模组WiFi使用SDIO通信&#xff0c;BT使用UART通信&#xff0c;供应商丢了一份驱动&#xff0c;包含了三个目录&#xff1a;aic8800_bsp、aic8800_fdrv和aic8800_btlpm&#xff0c;而蓝牙部分提供了lbh_s…

【Vue】权限控制

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

标题:“八股文”在实际工作中是助力、阻力还是空谈?

标题&#xff1a;“八股文”在实际工作中是助力、阻力还是空谈&#xff1f; “八股文”&#xff0c;在程序员的面试和工作中一直是一个备受争议的话题。它既是许多程序员进入职场的敲门砖&#xff0c;也被一些人认为是脱离实际的空谈。本文将从“八股文”对招聘过程的影响、在…

【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…

2、Flink 在 DataStream 和 Table 之间进行转换

1.概述 Table API 和 DataStream API 都可以处理有界流和无界流。 DataStream API 提供了流处理的基础(时间、状态和数据流管理);Table API 抽象了许多内部内容,并提供了一个结构化和声明性的 API;在处理历史数据时,需要管理有边界的流;无边界流出现在实时处理场景中,…

wordpress调用栏目最新内容、调用栏目推荐内容、调用栏目随机内容

想要在首页调用wordpress某个栏目的内容&#xff0c;可以按照分类ID来调用&#xff0c;调用出来的内容一般有&#xff1a;调用栏目最新内容、调用栏目推荐内容、调用栏目随机内容这三种形式。简站wordpress小编在此为大家放出三种不同方式调用的代码如下&#xff1a; 通过指定…

盘点.软件测试模型

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

云计算day15

⼀、web基本概念和常识 Web&#xff1a;为⽤户提供的⼀种在互联⽹上浏览信息的服务&#xff0c;Web 服 务是动态的、可交 互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联⽹服务&#xff0c;这些服务包括信息浏览 服务&#xff0c;以及各种交互式服务&#xff0c;…

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

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

探索LLM编程新纪元:AI赋能的编程之旅

探索LLM编程新纪元&#xff1a;AI赋能的编程之旅 引言 在人工智能&#xff08;AI&#xff09;的浪潮中&#xff0c;大型语言模型&#xff08;LLM&#xff09;作为自然语言处理&#xff08;NLP&#xff09;领域的璀璨明珠&#xff0c;正逐步渗透到编程的每一个角落。从代码自动…

【C#】文件流和文本处理

1. 文件流的基本概念 文件流是C#中处理文件读写的抽象&#xff0c;它提供了对文件内容进行顺序访问的能力。在文件流中&#xff0c;数据按照字节或块的方式传输&#xff0c;而不受文件中数据的格式影响。文件流通常与System.IO命名空间中的类一起使用&#xff0c;包括FileStrea…

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

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

geotools 读取shape文件

对于GIS开发者而言&#xff0c;矢量数据是我们经常要用到的&#xff0c;而shape数据是矢量数据中最常用的格式&#xff0c;因此解析shape数据也是作为GIS软件开发人员必备的基础技能&#xff0c;而GeoTools无疑是Java最好用来处理GIS数据的三方库&#xff0c;下面例子是简单的g…

算法训练(leetcode)第三十四天 | 56. 携带矿石资源(第八期模拟笔试)、198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

刷题记录 *56. 携带矿石资源&#xff08;第八期模拟笔试&#xff09;198. 打家劫舍213. 打家劫舍 II*337. 打家劫舍 III解法一 &#xff08;记忆化递推&#xff09;*解法二 &#xff08;动态规划&#xff09; *56. 携带矿石资源&#xff08;第八期模拟笔试&#xff09; leetco…

防火墙USG2000USG5000配置nat server 时 no-reverse的含义

防火墙USG2000&USG5000配置nat server 时 no-reverse的含义 https://forum.huawei.com/enterprise/zh/thread/580888066099396608?page2 多次执行带参数no-reverse的nat server命令&#xff0c;可以为该内部服务器配置多个公网地址&#xff1b;未配置参数no-reverse则表…

实现代码灵活性:用Roslyn动态编译和执行存储在数据库中的C#代码

在许多现代应用程序中&#xff0c;动态编译和执行代码是提升灵活性和功能的一种强大技术。本文将介绍如何使用Roslyn编译器平台动态编译和执行存储在数据库中的C#代码&#xff0c;并结合实际公司案例来说明这些技术的应用场景。 1. 引言 在很多应用场景中&#xff0c;我们可能…

牛客周赛53---DEF

D.小红组比赛 题目描述 \,\,\,\,\,\,\,\,\,\,小红希望出一场题目&#xff0c;但是他的实力又不够&#xff0c;所以他想到可以从以前的比赛中各抽一题&#xff0c;来组成一场比赛。不过一场比赛的难度应该是有限制的&#xff0c;所以所以这一场比赛会给一个目标难度分数 target…

docker笔记7-dockerfile

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

Vue3自研开源Tree组件 - Vitepress文档功能演示

基于自己学习的一点Vue3和ts的知识&#xff0c;写的一个企业级的开源Tree组件&#xff0c;给大伙儿演示下组件功能和API的使用&#xff0c;如果您喜欢&#xff0c;不妨点赞和关注下&#xff0c;后续会继续分享源码教程&#xff0c;感谢支持&#xff01; 演示视频地址&#xff…