Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
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.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
InfinityCore-Android-CVE-2026-98260 — ARM64 Android proof-of-concept for CVE-2026-98260, a POSIX timer UAF in the kernel Timer subsystem, with a full race, heap spray, and root escalation chain. | Kitploit
Tools/GitHubGitHub/ylh440104/infinitycore-android-cve-2026-98260
Android SecurityPrivilege EscalationMemory ForensicsExploitationMobile SecurityShellcode GenerationPayload DevelopmentBinary Exploitation

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
GitHub
ylh440104/infinitycore-android-cve-2026-98260

InfinityCore-Android-CVE-2026-98260

ARM64 Android proof-of-concept for CVE-2026-98260, a POSIX timer UAF in the kernel Timer subsystem, with a full race, heap spray, and root escalation chain.

View Repository
4419111 days agoReviewed by Kitploit

InfinityCore Android — CVE-2026-98260 (Timer)

Chinese

Overview

ARM64 implementation of the Infinity Core series Timer subsystem vulnerability, with the target kernel form being the 7.0 series (same source code structure as Ubuntu 26.04 7.0.0-30-generic). This repository implements the complete trigger and privilege escalation chain; the key offsets are hardcoded according to the structure layout of that target version, and the symbol addresses can be corrected directly against the target vmlinux.

Vulnerability principle

When a non-leader thread calls exec(), de_thread() swaps the TID and calls release_task(leader), and POSIX timer cleanup is placed after several operations that can fail. After exec fails, the timerqueue node of the already-released k_itimer remains in the timerqueue of the surviving task, and subsequent cleanup dereferences that node again, causing a UAF.

Exploit chain: oracle thread pool races → AIO ring heap spray reclaims the UAF object → elist leaks the task address → controlled page constructs fake timer + fake cred → timerqueue removal double-write writes fake cred into task->cred → setresuid(0) obtains a root shell.

Hardcoded layout constants (7.0 structure)

k_itimer.it.cpu.elist        0xe0
k_itimer.it.cpu.handling     0xf0
k_itimer.it_interval         0x68
k_itimer size                0x180
task_struct.cpu_timers head  0xca0
task_struct.cred             0xd00
cred.uid/gid/euid/...        4/8/14/18/24/28/34/38
cred.cap_inh/prm/eff         0x30/0x40/0x50
cred.security                0x80
cred.user_ns                 0x90
cred size                    0xb8

Needs correction for the target machine: symbol addresses (the local KASLR leak self-calibrates, no hardcoding needed).

Files

timer_lpe.c           main program
ic_timer_target.h     structure layout (hardcoded)
ic_compat.h           syscall wrappers, AArch64 assembly primitives
ic_util.h             general utilities
ic_shellcode_arm64.c  AArch64 shellcode generator
ic_target.h           other offsets

Build

export ANDROID_NDK_HOME=/path/to/ndk
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang \
    -O2 -std=gnu11 -static -fno-stack-protector -fno-pic -no-pie \
    -I. timer_lpe.c ic_shellcode_arm64.c -o ic98260 \
    -Wl,--gc-sections -Wl,-z,norelro -pthread

English

Overview

An ARM64 implementation of the Infinity Core Timer subsystem vulnerability, targeting the 7.0-series kernel shape (same code structure as Ubuntu 26.04 7.0.0-30-generic). Complete trigger and escalation chain. Key offsets are hardcoded to that target structure layout; only symbol addresses need to be matched against the target vmlinux.

Root cause

When a non-leader thread calls exec(), de_thread() exchanges TIDs and calls release_task(leader); POSIX timer cleanup sits behind several fallible operations. After a failed exec, the freed k_itimer's timerqueue node stays in a live task's timerqueue, and later cleanup dereferences it again.

Chain: oracle thread pool races → AIO ring spray reclaims the UAF object → elist leaks the task address → fake timer and fake cred crafted in a controlled page → timerqueue unlink double-writes the fake cred into task->cred → setresuid(0) gives a root shell.

Hardcoded layout (7.0 structure)

k_itimer.it.cpu.elist        0xe0
k_itimer.it.cpu.handling     0xf0
k_itimer.it_interval         0x68
sizeof(k_itimer)             0x180
task_struct.cpu_timers head  0xca0
task_struct.cred             0xd00
cred.uid/gid/euid/...        4/8/14/18/24/28/34/38
cred.cap_inh/prm/eff         0x30/0x40/0x50
cred.security                0x80
cred.user_ns                 0x90
sizeof(cred)                 0xb8

Only symbol addresses need per-target adjustment; the in-kernel KASLR leak self-calibrates.

Files

timer_lpe.c           main program
ic_timer_target.h     structure layout (hardcoded)
ic_compat.h           syscall wrappers, AArch64 asm primitives
ic_util.h             shared helpers
ic_shellcode_arm64.c  AArch64 shellcode emitter
ic_target.h           other offsets

Build

export ANDROID_NDK_HOME=/path/to/ndk
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang \
    -O2 -std=gnu11 -static -fno-stack-protector -fno-pic -no-pie \
    -I. timer_lpe.c ic_shellcode_arm64.c -o ic98260 \
    -Wl,--gc-sections -Wl,-z,norelro -pthread
Download Tool