Thiasap/oppo-pgem10-ghostlock

GitHub: Thiasap/oppo-pgem10-ghostlock

该项目是对 GhostLock 漏洞(CVE-2026-43499)在 OPPO Find X6 Pro 设备上的 exploit 适配研究,详细分析了 PAC 防护机制导致的利用阻塞问题。

Stars: 0 | Forks: 0

# OPPO Find X6 Pro GhostLock 适配项目 ## 概述 本项目针对 CVE-2026-43499 (GhostLock) 漏洞在 OPPO Find X6 Pro (PGEM10) 上进行适配研究。 基于 [NebuSec CyberMeowfia](https://github.com/NebuSec/CyberMeowfia) 原始 exploit 架构,参考 [oppo-ghostlock](https://github.com/pubglite55/oppo-ghostlock) 适配思路。 ## 设备信息 | 项目 | 值 | |------|-----| | 设备 | OPPO Find X6 Pro (PGEM10) | | 芯片 | Snapdragon 8 Gen 2 (SM8550) | | 内核 | Linux 5.15.149-android13 #1 SMP PREEMPT | | 编译日期 | Thu Feb 13 2025 | | Android | 15 (ColorOS 15.0) | | ROM 版本 | PGEM10_15.0.0.600(CN01) | | PAC | CONFIG_ARM64_PTR_AUTH_KERNEL=y | | BTI | CONFIG_ARM64_BTI_KERNEL=y | | KASLR | CONFIG_RANDOMIZE_BASE=y | | VA_BITS | 39 | | VA 偏移 | P0_PAGE_OFFSET = 0xffffff8000000000 | ## 项目成果摘要 ### ✅ 已完成 | 模块 | 状态 | 说明 | |------|------|------| | **Perf KASLR bypass** | ✅ | 核心突破 — 通过 perf_event_open + callchain 采样,<1s 获取当前 KASLR slide | | **MM_STRUCT_SZ 修正** | ✅ | 从 0x500 修正为 0x400(1024B),KernelSnitch 立即成功 | | **IDA 偏移全验证** | ✅ | 所有关键符号/结构体/函数已通过 IDA 交叉验证 | | **FUTEX_CMP_REQUEUE_PI** | ✅ | GhostLock UAF 触发成功 | | **ashmem 验证** | ✅ | C ashmem 可用,type confusion 路径理论可行 | | **调用链分析** | ✅ | 确认内核中无调用链深度 ≥ 0x800 | | **内核配置扫描** | ✅ | 完整攻击面评估 | ### ❌ 阻塞 | 模块 | 状态 | 根本原因 | |------|------|----------| | **SLIDE 栈覆盖** | ❌ | PAC 导致 futex 链栈帧膨胀至 0xA70,pselect 仅 0x620 | | **fops 覆盖** | ❌ | 需要 SLIDE,PAC 阻断 | | **type confusion** | ❌ | 依赖 fops 覆盖 | | **Pipe physrw** | ❌ | 依赖 type confusion | | **Root** | ❌ | 依赖上述链路 | ## 项目结构 ``` oppo-pgem10-ghostlock/ ├── README.md # 本文件 ├── 问题描述.md # 详细问题分析 ├── docs/ │ ├── architecture.md # 架构设计与调用链 │ └── adaptation-guide.md # PAC 内核适配指南 ├── reports/ │ ├── offsets.md # IDA 偏移验证报告 │ ├── kaslr.md # KASLR 分析报告 │ └── summary.md # 最终总结 ├── src/ │ ├── kaslr_perf.h # Perf KASLR 可复用模块 │ └── kaslr_perf.c # Perf KASLR 实现 └── analysis/ └── chains/ # 调用链分析脚本 ``` ## 关键配置差异 (PGEM10 vs Pixel 10) ``` CONFIG_ARM64_PTR_AUTH_KERNEL=y # ← 核心差异:PAC 直接导致帧膨胀 CONFIG_ARM64_BTI_KERNEL=y # BTI 进一步增加开销 CONFIG_SHADOW_CALL_STACK=y # SCS 增加栈帧 CONFIG_VMAP_STACK=y # 栈可重映射 CONFIG_KASAN_HW_TAGS=y # 编译启用 CONFIG_ARM64_VA_BITS=39 # 39位VA(非48位) ``` ## 阻塞根因:PAC 栈帧膨胀 ``` 函数 Pixel 10 (无PAC) PGEM10 (有PAC) __arm64_sys_futex 0x90 0x4C0 do_futex 0x70 0x420 futex_wait_requeue_pi 0x1A0 0x1B0 ───────────────────────────────────────────────── futex 链总深 0x300 0xA70 ← 3.5倍 pselect 栈深 0x620 0x620 覆盖可能? ✅ YES ❌ NO (0xA70 > 0x620) ``` 调用链分析确认:内核中 **0 条** 调用链深度 ≥ 0x800(2048B)。 最大单帧:0x1F0(496B)。 ## 参考资源 - 原始项目: https://github.com/NebuSec/CyberMeowfia - OPPO Find N2 适配: https://github.com/pubglite55/oppo-ghostlock - NebuSec research: https://nebusec.ai/research/ionstack-part-2/ - 内核源码: https://github.com/oppo-source/android_kernel_oppo_sm8550 - 通用内核源码: https://github.com/oppo-source/android_kernel_common_oppo_sm8550
标签:0day挖掘, CVE-2026-43499, Web报告查看器, 内核安全, 协议分析, 安全渗透, 安卓安全, 客户端加密, 权限提升, 目录枚举, 移动安全