Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-28664-PoC — PoC skeleton para CVE-2021-28664, um use-after-free no driver de GPU Mali kbase, demonstrando uma primitiva de leitura/escrita arbitrária de memória física no kernel em Android ARM64. | Kitploit
Ferramentas/GitHubGitHub/woaphone/cve-2021-28664-poc
Segurança AndroidForensia de MemóriaAnálise de VulnerabilidadesExploraçãoSegurança MóvelSegurança de Hardware e IoTPapers e PesquisaAprendizado e EducaçãoExploração de Binários
GitHubwoaphone/cve-2021-28664-poc

CVE-2021-28664-PoC

PoC skeleton para CVE-2021-28664, um use-after-free no driver de GPU Mali kbase, demonstrando uma primitiva de leitura/escrita arbitrária de memória física no kernel em Android ARM64.

há 11h 5mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

CVE-2021-28664-PoC

Mali kbase GPU 驱动 UAF(CVE-2021-28664)→ 内核任意物理内存 读/写原语 的 PoC 骨架。面向通用 ARM64 Android 平台,与任何具体厂商、机型无关。

研究范围 仅到"内核任意物理内存读/写原语"为止:如何把一个 GPU 驱动的 use-after-free 变成稳定、可控、可安全失败的内核内存读写能力。

本仓库不提供任何攻击。 不含成品 exploit、不含可直接运行的代码、 不含任何设备的偏移量/序列号/固件;禁止将任何内容用于攻击行为(见下)。


免责声明 / Disclaimer(必读)

  1. 本仓库不提供攻击。 本仓库是漏洞原理与内存破坏原语的技术复盘, 仅包含方法论文档和留空了全部设备数值的教学模板。它不能直接用于 攻击任何设备。
  2. 禁止攻击。 严禁将本仓库内容用于任何未授权设备、他人设备或任何 违法用途;由此产生的一切后果由使用者自行承担,与作者无关。
  3. 研究实验仅在 作者本人拥有 的设备上进行,目的为漏洞复现与安全研究。
  4. CVE-2021-28664 于 2021 年已由上游(Arm/Mali)修复;受影响的是长期 未更新的旧驱动/旧固件。本研究的意义在于理解历史漏洞的利用原理与 防御视角的检测思路。
  5. 本仓库内容按 "AS IS" 提供,无任何明示或默示担保。
  6. 如你代表厂商/安全团队需要更多细节,请通过 GitHub 联系作者。

适用范围

技术上适用(利用链各环节成立的前提)

环节前提条件
漏洞本体Mali kbase 驱动版本落在 CVE-2021-28664 受影响区间(上游修复前的 r 系列);与内核版本无关,只看驱动
GPU 资源/dev/mali 对应用可达;MEM_ALLOC 支持 SAME_VA 大缓冲;MEM_ALIAS 行为符合漏洞描述
管道复用Linux ≥ 4.5(pipe_buf_operations 引入),实测于 4.9 ~ 4.14 均成立;F_SETPIPE_SZ 可将管道调至单页
KASLR 泄露内核启用 CONFIG_RANDOMIZE_BASE(arm64 ≥ 4.6);anon_pipe_buf_ops 存在于公开符号表
物理地址模型arm64 + vmemmap 布局;sizeof(struct page)、页表格式 必须实测,不可假设

技术上不适用

  • 已修复 CVE-2021-28664 的 Mali 驱动(r 版本修复后);
  • 非 Mali GPU 平台(本链深度依赖 kbase 的 alias/MMU-dump 行为);
  • pipe_buffer 结构/copy_page_to_iter 校验差异较大的新内核(5.x 起 需按对应源码重新核对,链路结构可参考但细节不通用);
  • 无 /dev/mali 访问权限的环境(seLinux/厂商策略限制)。

边界声明

  • 本仓库只覆盖 读/写原语;拿到原语之后定位具体内核目标、进一步利用 或提权,均不在本仓库范围内。
  • 所有设备相关常量在模板中以 TODO(DEVICE) 留空,适配是使用者自己的 逆向工作,仓库不代劳。

漏洞背景

CVE-2021-28664:Mali kbase 驱动的 MEM_ALIAS 路径缺少对 GPU_WR 权限的 检查,攻击者可以把 已经释放的 GPU 内存页 alias 进自己的 GPU 地址空间, 形成"GPU 侧对已释放物理页的持续可见/可写"——一个跨 GPU/内核边界的 use-after-free。

利用价值不在 GPU 内存本身,而在于:

  1. 被释放的物理页会被内核 slab/buddy 重新分配给 内核对象 (本研究中为 pipe_buffer);
  2. GPU alias 视图仍能看到这些页 → 可以 读写内核正在使用的对象字段;
  3. 借助 GPU WRITE_VALUE job 对 alias 可见页做定点改写。

本研究做到哪一步

root@kitploit:~
victim GPU 缓冲 + MMU 页表 dump → 建立物理地址地图
  → trigger 缓冲释放制造压力 → 喷洒 pipe(F_SETPIPE_SZ 调小)
  → pipe_buffer 数组落进释放区(跨缓存 UAF 复用)
  → alias 视图扫描 ops 指针 → 泄露 anon_pipe_buf_ops → KASLR slide
  → GPU 改写 pipe_buffer 的 page / offset / len
  → 借助合法 pipe read/write 路径
  ⇒ 任意物理页读(伪造 page 指针)
  ⇒ 任意物理页写(pipe merge 写路径)
  ⇒ 用已知内容页做自证 oracle,保证读写不落进空洞/未映射区

到此为止。

关键技术点(每一点在 docs/ 有独立小节)

  • 多级安全门:任何物理读之前必须通过 overlap / 自洽 / contiguity / 内容自证等多道门,任何一道失败立即恢复现场退出——整个研究最重要的 工程纪律。
  • 物理地址模型的坑:GPU PTE 软件标志位污染、物理地址 32 位截断、 KASLR 对内核镜像 物理基址 也随机化、厂商 page_to_virt 实现差异、 no-map 保留区在线性映射里根本不存在(读了就 panic)。
  • m 歧义处理:物理地址高位歧义永远不靠猜,用"已知内容页 oracle" 做内容自证。
  • 原语寿命与安全失败:读探针有次数预算,超限后必须放弃本轮;每次 实验的每条退出路径都要恢复被篡改的对象字段。

仓库结构

root@kitploit:~
docs/
  01-exploit-chain.md            从 UAF 到读写原语:各阶段原理与实现要点
  02-physical-address-model.md   物理地址模型、安全门、m 歧义、已知陷阱
exploit/
  cve-2021-28664-poc.c           PoC 模板:读写原语的完整流程骨架(无设备值)
scripts/
  README.md                      实验自动化工具的设计说明(循环/校验/恢复)

源码说明

exploit/cve-2021-28664-poc.c 是 读写原语的 PoC 骨架模板:

  • 保留完整流程结构(资源准备 → 喷洒 → 扫描 → 校准 → 读/写原语 → 恢复退出);
  • 所有设备相关常量均以 TODO(DEVICE) 标注,没有任何可直接使用的数值;
  • 每个危险操作前都有显式校验门与恢复路径,展示"安全失败"的设计方式。

它用于理解整条链怎么组织,不能直接编译成对任何设备有效的工具。

参考

  • ARM Mali kbase 驱动(公开内核源码树)
  • CVE-2021-28664 上游修复记录与公开分析
  • Linux fs/pipe.c / include/linux/pipe_fs_i.h(公开源码)
  • arm64 内存模型:Documentation/arch/arm64/memory.rst(公开文档)

License

  • 代码(exploit/):GPL-3.0,见 LICENSE
  • 文档(README、docs/、scripts/):CC BY-NC-SA 4.0,见 LICENSE-DOCS (禁止商用;衍生内容需相同方式共享并保留本声明)
Baixar ferramenta