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

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.mzph.cn/news/23994.shtml

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

相关文章

网络音频终端音频编码解码终端

网络对讲终端SV-7011V 网络对讲终端SV-7011V,采用了ARM音频DSP架构,集网络对讲、网络广播、监听等功能于一身,内置麦克风、配置line out、line in、Mic in功能输出接口,适用于学校,机场,广场等场所。 产品…

保姆级教程--抢先体验 Microsoft 365 Copilot,微软全家桶Chat GPT

【ChatGPT】前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击查看学习资料) 前段时间微软发的Microsoft 365 Copilot 可以说非常火爆了,那么该…

元素2D转3D 椭圆形旋转实现

椭圆旋转功能展示 transform-style: preserve-3d;(主要css代码) gif示例(背景图可插入透明以此实现边框线的旋转) 导致的无法点击遮挡问题可以参考我的另一个文章 穿透属性-----------------------css穿透属性 实时代码展示

决策树的划分依据之:信息增益率

在上面的介绍中,我们有意忽略了"编号"这一列.若把"编号"也作为一个候选划分属性,则根据信息增益公式可计算出它的信息增益为 0.9182,远大于其他候选划分属性。 计算每个属性的信息熵过程中,我们发现,该属性的值为0, 也就…

Redis 双写一致性实践及案例

面试问题: 你只要用缓存,就可能会涉及到redis缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?双写一致性,你先动缓存redis还是数据库mysql哪一个&…

解决word打字卡顿问题的方法

❤ 2023.8.5 ❤ 最近整理论文,本来我是wps死忠粉,奈何wps不支持latex公式。。。 无奈用起了word,但是谁想字数稍微多了一点,word就卡得欲仙欲死,打个字过去2s才显示出来,删除的时候都不知道自己删了几个字…

代码随想录算法训练营之JAVA|第二十一天| 77. 组合

今天是第21天刷leetcode,立个flag,打卡60天。 算法挑战链接 77. 组合https://leetcode.cn/problems/combinations/description/ 第一想法 需要从N个数中选取K个数,那么第一想法肯定是k个for循环,每个for循环选取一个数&#x…

尚品汇总结三:商城首页(面试专用)

目录 首页商品分类实现 1、封装数据接口 2、页面静态化: 什么是页面静态化 为什么要使用静态化 首页商品分类实现 前面做了商品详情,我们现在来做首页分类,我先看看京东的首页分类效果,我们如何实现类似效果: 思路…

MongoDB 使用总结

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

【ASP.NET MVC】使用动软(四)(12)

一、筛选器类和Cookie实现路由 需解决的问题: 网站登录往往需要用户名密码验证,为避免重复验证,一般采用Cookie 、Session等技术来保持用户的登录状态: Session是在服务端保存的一个数据结构,用来跟踪用户的状态&…

glide加载content://com.android.contacts图片源码粗略梳理

获取链路是这样的; UriLoader类里定义了协议头: 里面有个内部类StreamFactory: 通过StreamLocalUriFetcher类的loadResource方法获取InputStream然后把流转换成为图片; 在这里作个草稿笔记给自己看

数据安全治理实施办法

随着《数据安全法》和《个人信息保护法》陆续出台,各行业数据安全监管力度持续增强,数据安全合规成为企业数据安全治理体系建设的第一推动力。同时,企业普遍面临数据安全治理成本过高,对业务影响过大,实施路径不清晰等…

适配器模式(AdapterPattern)

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 优缺点 优点: 单一职责原则。你可以将接口或数据转换代码从程序主要业务逻辑中分…

Docker 安装 MySQL5.6

方法一、docker pull mysql 查找Docker Hub上的mysql镜像 #docker search mysql 这里我们拉取官方的镜像,标签为5.6 #docker pull mysql:5.6 (第一次启动Docker-MySql主要是查看Docker里面MySQL的默认配置,数据位置,日志位置,配…

Arthas GC日志-JVM(十八)

上篇文章说jvm的实际运行情况。 Jvm实际运行情况-JVM(十七) Arthas介绍 因为arthas完全是java代码写的,我们直接用命令启动: Java -jar arthas-boot.jar 启动成功后,选择我们项目的进程。 进入我们可用dashboard…

使用ChatGPT编写技术文档

技术文档对于任何项目都是至关重要的,因为它确保所有利益相关者都在同一层面上,并允许有效的沟通和协作。创建详细而准确的技术文档可能既耗时又具有挑战性,特别是对于那些不熟悉主题或缺乏强大写作技巧的人来说。ChatGPT 是一个强大的人工智…

docker容器学习笔记1

docker容器是干什么用的 docker就是一个轻量级的虚拟机,是一个容器,隔离性好,能够确保环境的统一,有效利用系统资源,轻松迁移和拓展。简单的可以理解为容器就是一个小型功能齐全的虚拟机。 实际上是如何使用的呢&…

DNS部署与安全详解(上)

文章目录 一、DNS二、域名组成1. 域名组成概述2. 域名组成 三、监听端口四、DNS解析种类1. 按照查询方式分类:2. 按照查询内容分类: 五、DNS服务器搭建过程1. 先确保服务器的IP地址是固定的2. 安装DNS软件 一、DNS DNS全称Domain Name Service&#xff0…

大文件裁剪阿里云oss上传 plupload

亲测有效 home/include_upload_maxfile.jsp 效果如下 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <%String path request.getContextPath();%><%page import"com.home.base.DBRow"%> &l…

求解n阶勒让德多项式的值

描述 用递归方法求n阶勒让德多项式的值&#xff0c;递归公式为&#xff1a; 在主函数中输入一个整数n和一个实数x&#xff0c;调用函数 legendre(n,x)&#xff0c;并输出其返回值。 输入 第一行输入一个整数n&#xff0c;表示阶数&#xff1b;第二行输入一个实数x。 输出 …