CVE漏洞复现-CVE-2019-5021 镜像漏洞利用

news/2025/2/2 13:55:30/

CVE-2019-5021 镜像漏洞利用

随着容器技术的普及,容器镜像也成为软件供应链中非常重要的一个组成的部分。人们像使用 pip 等工具从仓库获取各种编程软件库一样,可以从 Docker Hub 或 第三方仓库拉取镜像,在其基础上进行开发,从而实现所需功能,最后打包发布

然而,业务依赖的基础镜像可能存在问题——无论是开发者无心导致的安全漏洞还是攻击者故意埋下的恶意代码,这种“内生风险”的潜在危害比黑客从外部发起攻击严重的多,且更不易被发现。

下面我们来介绍一种容器软件供应链攻击:镜像漏洞利用

镜像漏洞利用

镜像漏洞利用指的是镜像本身存在漏洞时,使用镜像创建并运行的容器也通常会存在相同漏洞,攻击者可以利用镜像中存在的漏洞去攻击容器,往往具有事办功倍的效果

列如,Alpine 是一个轻量化的 Linux 发行版,基于 musl libc 和 busybox 构建而成。由于其体积小,因此以Alpine为基础构建的软件是非常流行的。但 Alpine 镜像曾爆出过一个漏洞: CVE-2019-5021。在 3.3~3.9 版本的Alpine 镜像中,root 用户的密码被设置为空,攻击者可能在攻入容器后借此提升到容器内部的 root 权限

这个漏洞看起来很简单,但是 CVSS3.0评分高达9.8分。我们拉取一个3.3版本的镜像,然后构建容器并检查一下密码信息文件 “/etc/shadow” ,如图所示,可以 shadow 文件记录的 root 密码确实为空

#拉取alpine:3.3的镜像
docker pull alpine:3.3
#查看shadow 文件记录的 root 密码
docker run -it --rm alpine:3.3 cat /etc/shadow | grep root

在这里插入图片描述

Alpine 镜像使用 busybox 作为核心工具链,通过 /etc/securetty 文件限制了可以登陆 root 用户的 tty 设备。除非是用户主动安装 shadow 和 linux-pam 来代替默认工具链,否则这个漏洞将很难利用。接下来,我们来模拟一下这个场景。基于3.5版本的Apline 创建一个镜像,添加一个普通用户 non_root,并安装 shadow(https://github.com/brant-ruan/cloud-native-security-book/0303-供应链攻击/01-CVE-2019-5021-alpine)

漏洞复现

我们编写如下的Dockerfile:

FROM alpine:3.5RUN apk add --no-cache shadow
RUN adduser -S non_rootUSER non_root

创建好后,在 Dockerfile文件 的同一目录下执行如下的命令构建镜像:

docker build -t alpine:cve-2019-5021 .

在这里插入图片描述

然后运行一个容器,尝试执行su 切换为 root 用户,切换成功如图所示:

#运行一个容器
docker run -it --rm alpine:cve-2019-5021 /bin/sh
#查看当前用户
whoami
#且换为root用户
su -

在这里插入图片描述

整个过程非常简单,在现实中,如果用户使用了旧版本的 Alpine,同时安装了 shadow,一旦攻击者利用 Web服务获得了一个容器内的低权限的shell,就可以凭借此漏洞直接提升为容器内的root权限。


http://www.ppmy.cn/news/1008714.html

相关文章

element+vue 之动态form

1.页面部分 <div v-for"(item,index) in formList" :key"index"><el-col :span"6" v-if"item.inputType0"><el-form-item :label"item.conditionName" :prop"item.conditionCode":rules"{req…

【C# 基础精讲】C# 开发环境搭建(Visual Studio等)

安装C#开发环境是开始学习和使用C#编程的第一步。目前&#xff0c;最常用的C#开发环境是Microsoft Visual Studio&#xff0c;它是一套强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了丰富的工具和功能&#xff0c;使开发C#应用程序变得更加便捷。以下是安装…

整数规划——第三章 全单模矩阵

整数规划——第三章 全单模矩阵 若线性规划问题的约束矩阵为全单模矩阵&#xff0c;则该问题可行域的顶点都是整数点&#xff0c;从而线性规划与整数规划的最优解相同。 3.1 全单模性与最优性 考虑线性整数规划问题&#xff1a; (IP) min ⁡ c T x , s . t . A x ≤ b , x …

Stable Diffusion系列课程二:ControlNet

AUTOMATIC1111/stable-diffusion-webui参考B站Nenly视频《零基础学会Stable Diffusion》、视频课件推荐网站&#xff1a;stable-diffusion-art、Civitai&#xff08;魔法&#xff09; 、libilibi、AI艺术天堂推荐Stable Diffusion整合资料&#xff1a; NovelAI资源整合、《AI绘…

学习Boost二:从附录3来看编码习惯

附录C 关键字浅谈 在C11标准中&#xff08;C11.2.12&#xff09;总共定义了73个关键字&#xff08;keyword&#xff09;、2个“准”关键字&#xff08;identifiers with special meaning&#xff09;和11个操作符替代字&#xff08;alternative representation&#xff09;[1]。…

【Lua】Lua包管理器-LuaRocks的使用教程

文章目录 安装luarocks使用luarocks1. 安装模块2. 加载模块其它命令协作开发使用方式 lua的包管理工具是&#xff1a;LuaRocks。本文内容基于MacOS系统。 安装luarocks > cd 你预期的安装目录 > wget https://luarocks.org/releases/luarocks-3.9.2.tar.gz > tar zx…

基于Mediapipe的姿势识别并同步到Unity人体模型中

如题&#xff0c;由于是商业项目&#xff0c;无法公开源码&#xff0c;这里主要说一下实现此功能的思路。 人体关节点识别 基于Mediapipe Unity插件进行开发&#xff0c;性能比较低的CPU主机&#xff0c;无法流畅地运行Mediapipe&#xff0c;这个要注意一下。 Mediapipe33个人体…

数据结构和算法——了解哈希表(哈希查找、散列的基本思想)

目录 哈希查找 散列的基本思想 例一 例二 哈希查找 我们之前学过的几种查找方法&#xff1a; 顺序查找 二分查找&#xff08;静态查找&#xff09; 二叉搜索树 h为二叉查找树的高度平衡二叉树 还有没有更快的查找方法呢&#xff1f; …