
Exploit d'élévation de privilèges local Android pour CVE-2026-43499 qui corrige les creds du noyau et lance KernelSU embarqué en mode late-load via LD_PRELOAD.
Adaptation d'élévation de privilèges locale basée sur la vulnérabilité du noyau CVE-2026-43499, intégrant KernelSU embarqué. Compile et génère preload.so ; après une exploitation réussie, KernelSU sera démarré en mode late-load (mode jailbreak). Prend en charge la génération de target.h à partir de (xbl_config.img / vendor_boot.img) + boot.img.
Adaptation d'élévation de privilèges locale basée sur une vulnérabilité du noyau, intégrant KernelSU embarqué.
Compile et génère preload.so ; après une exploitation réussie, KernelSU sera démarré en mode late-load (mode jailbreak).
Prend en charge la génération de target.h à partir de (xbl_config.img / vendor_boot.img) + boot.img. ou autre méthode
Projets de référence :
[!IMPORTANT] L'exploitation non autorisée de vulnérabilités pour endommager, compromettre ou accéder à des systèmes informatiques est interdite par la loi. Ce projet est fourni strictement à des fins de recherche, d'éducation et d'apprentissage, et ne peut être utilisé que dans des systèmes et environnements pour lesquels une autorisation préalable a été accordée. Toute utilisation de ce projet se fait aux risques et périls de l'utilisateur. Les auteurs et contributeurs n'assument aucune responsabilité pour toute mauvaise utilisation de ce projet ou pour tout dommage, perte ou conséquence juridique résultant de son utilisation.
Avertissement : l'exploitation non autorisée de vulnérabilités pour endommager, pénétrer ou accéder sans autorisation à des systèmes informatiques peut violer les lois et réglementations en vigueur. Ce projet est limité à des fins de recherche de sécurité, d'apprentissage et de test dans des systèmes et environnements légalement autorisés. Toute perte directe ou indirecte, responsabilité juridique ou autre conséquence résultant de l'utilisation, de l'abus ou de la modification de ce projet incombe à l'utilisateur, et les auteurs et contributeurs du projet déclinent toute responsabilité.
Lorsque votre version du noyau est {Linux Kernel}, vous êtes dans le périmètre d'impact de cette vulnérabilité
Linux Kernel < commit 3bfdc63936dd4773109b7b8c280c0f3b5ae7d349
2.6.39 <= {Linux Kernel} < 6.1.175
6.2 <= {Linux Kernel} < 6.6.140
6.7 <= {Linux Kernel} < 6.12.86
6.13 <= {Linux Kernel} < 6.18.27
6.19 <= {Linux Kernel} < 7.0.4
| Target | État |
|---|---|
rodin(par défaut) | Vérifié |
Autres src/targets/* | Référence |
.
├── Makefile
├── build/
│ └── embed/
│ └── ksud # binaire userspace KernelSU embarqué dans preload.so
├── tools/
│ ├── generate_target.py # point d'entrée unifié de génération de target.h de ce dépôt
│ └── vendor/ # scripts auxiliaires de génération originaux synchronisés depuis le répertoire parent
└── src/
├── main.c # flux principal de l'exploit
├── preload.c # constructeur LD_PRELOAD + écriture/lancement de ksud
├── root.c # patch cred/seccomp/SELinux/root
├── slide.c # fuite de slide KASLR via pselect
├── fops.c # route pselect/FOPS
├── pipe.c # primitive de lecture/écriture physique via pipe-buffer
├── ksud_blob.S # .incbin build/embed/ksud
├── kernelsnitch/ # helpers KernelSnitch
└── targets/
├── rodin/
├── beryl/
└── ...
~/android-ndk-r29ANDROID_NDK_HOME / ANDROID_NDK_ROOT / NDK_ROOTmakegitmake PROJECT=<target> -j$(nproc)
Sortie :
build/<target>/bin/preload.so
make list-projects
Ce dépôt intègre déjà un script unifié de génération de target :
tools/generate_target.py
tools/vendor/generate_target.py
tools/vendor/generate_target_2.py
tools/vendor/detect_offset.py
tools/generate_target.py est le script d'entrée. Il s'inspire et encapsule tous les flux de génération de target du répertoire parent, puis produit un src/targets/<project>/target.h complet adapté au code source de ce dépôt.
Le script ne force pas la vérification de CONFIG_DEBUG_INFO_BTF=y dans IKCONFIG. Si les décalages des champs de structure ou la disposition percpu de entry_task ne peuvent pas être vérifiés, il affiche un avertissement et poursuit la génération.
Si l'image ne contient aucun BTF utilisable, par exemple en cas d'apparition de :
有效 vmlinux BTF 候选不唯一: []
le générateur passe en fallback sans BTF :
boot.img courant ;rodin ;without BTF et le modèle utilisé ;Il est possible de spécifier le modèle de fallback :
tools/generate_target.py --project <project> --boot boot.img --profile profile.json --template-target rodin
# ou
TARGET_TEMPLATE=rodin tools/generate_target.py --project <project> --boot boot.img --profile profile.json
make generate-target PROJECT=<project> BOOT=/path/to/boot.img PROFILE=/path/to/profile.json
Écrit par défaut dans :
src/targets/<project>/target.h
Il est également possible d'appeler directement le script :
tools/generate_target.py --project <project> --boot /path/to/boot.img --profile /path/to/profile.json
profile.json doit contenir les informations d'adresse physique, par exemple :
{
"p0_phys_offset": "0x40000000",
"p0_kernel_phys_load": "0x40000000"
}
Générer uniquement le profile :
make detect-profile PROFILE_OUT=profile.json
Détecter le profile et générer immédiatement le target :
tools/generate_target.py --project <project> --boot /path/to/boot.img \
--detect-adb-and-generate --profile-out profile.json
Le script expose également les autres points d'entrée pris en charge par le générateur du répertoire parent :
tools/generate_target.py --project <project> --boot boot.img --xbl-config xbl_config.img
tools/generate_target.py --project <project> --boot boot.img --mtk-vendor-boot vendor_boot.img
tools/generate_target.py --project <project> --boot boot.img --mtk-partitions /path/to/partitions
make generate-target PROJECT=rodin BOOT=../rodin/boot_a PROFILE=../profile.json
make generate-target PROJECT=beryl BOOT=../beryl/boot.img PROFILE=../profile.json
Forme de sortie en cas de succès :
生成成功: .../src/targets/<project>/target.h
kernel SHA-256: <sha256>
target macros: 168
rodin conserve par défaut la valeur vérifiée sur appareil réel :
#define MM_STRUCT_SZ 0x500
Pour la remplacer :
tools/generate_target.py --project rodin --boot boot.img --profile profile.json --mm-struct-sz 0x...
Il est recommandé de générer à partir d'une image boot et d'un profile correspondants :