
CVE-2026-43499-root-KernelSU — Mis à jour !
Adaptation d'élévation de privilèges locaux basée sur la vulnérabilité noyau CVE-2026-43499, intégrant KernelSU embarqué. Mode jailbreak CVE-2026-43499+KernelSU.
CVE-2026-43499-root-KernelSU
Adaptation d'élévation de privilèges locaux basée sur la vulnérabilité du noyau CVE-2026-43499, intégrant un KernelSU embarqué. La compilation génère preload.so ; après un déclenchement réussi, KernelSU est 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 locaux basée sur une vulnérabilité du noyau, intégrant un KernelSU embarqué. Compile et génère preload.so ; après une exploitation réussie, KernelSU est 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 d'une autre manière.
Projets de référence :
- Linuxoid-cn/CVE-2026-43499-Poc-Analysis
- x-spy/CVE-2026-43499-popsicle
- Colorful-glassblock/duchamp-root
[!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 sur des systèmes et dans des environnements pour lesquels une autorisation préalable a été accordée. Toute utilisation de ce projet est effectuée aux risques de l'utilisateur. Les auteurs et contributeurs déclinent toute responsabilité en cas d'utilisation abusive de ce projet ou de tout dommage, perte ou conséquence juridique résultant de son utilisation.
Avertissement : l'exploitation non autorisée de vulnérabilités pour endommager, s'introduire dans ou accéder sans autorisation à des systèmes informatiques peut violer les lois et réglementations applicables. Ce projet est strictement limité à la recherche, à l'étude et aux tests de sécurité sur des systèmes et environnements ayant reçu une autorisation légale. Toute perte directe ou indirecte, responsabilité légale ou autre conséquence résultant de l'utilisation, de l'abus ou de la modification de ce projet est à la charge exclusive de l'utilisateur ; les auteurs et contributeurs du projet n'assument aucune responsabilité.
Versions concernées
Lorsque votre version du noyau est {Linux Kernel}, elle se trouve dans la portée 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
État actuel
| Target | Statut |
|---|---|
rodin (défaut) | Vérifié |
Autres src/targets/* | Référence |
Structure du répertoire
.
├── Makefile
├── build/
│ └── embed/
│ └── ksud # 被嵌入 preload.so 的 KernelSU userspace binary
├── tools/
│ ├── generate_target.py # 本仓库统一 target.h 生成入口
│ └── vendor/ # 从父目录同步的原始生成辅助脚本
└── src/
├── main.c # exploit 主流程
├── preload.c # LD_PRELOAD constructor + ksud 写出/启动
├── root.c # cred/seccomp/SELinux/root patch
├── slide.c # pselect KASLR slide leak
├── fops.c # pselect/FOPS route
├── pipe.c # pipe-buffer phys R/W primitive
├── ksud_blob.S # .incbin build/embed/ksud
├── kernelsnitch/ # KernelSnitch helpers
└── targets/
├── rodin/
├── beryl/
└── ...
Construction
Dépendances
- Linux host
- Android NDK
- Chemin par défaut :
~/android-ndk-r29 - Ou définissez :
ANDROID_NDK_HOME/ANDROID_NDK_ROOT/NDK_ROOT
- Chemin par défaut :
makegit
Compilation
make PROJECT=<target> -j$(nproc)
Sortie :
build/<target>/bin/preload.so
Voir les targets disponibles
make list-projects
Génération de target.h
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 processus de génération de target du répertoire parent, et produit finalement un src/targets/<project>/target.h complet adapté au code source de ce dépôt.
Le script ne valide pas de manière obligatoire CONFIG_DEBUG_INFO_BTF=y dans IKCONFIG. Si les décalages des champs de structure ou la disposition percpu entry_task ne peuvent pas être validés, il affiche un avertissement et poursuit la génération.
Si l'image ne contient aucun BTF exploitable, par exemple si le message suivant apparaît :
有效 vmlinux BTF 候选不唯一: []
Le générateur passe alors en fallback sans BTF :
- Il continue de récupérer les décalages des symboles de fonctions/objets globaux à partir des kallsyms du
boot.imgactuel ; - Les macros de champs de structure/layout qui ne peuvent pas être récupérées depuis BTF héritent de la target template, dont le template par défaut est
rodin; - Un avertissement est écrit en haut du header généré, indiquant
without BTFet le template utilisé ; - Ce type de header garantit une compilabilité aussi bonne que possible, mais sa fiabilité à l'exécution doit être validée sur du matériel réel.
Vous pouvez spécifier un template de fallback :
tools/generate_target.py --project <project> --boot boot.img --profile profile.json --template-target rodin
# 或
TARGET_TEMPLATE=rodin tools/generate_target.py --project <project> --boot boot.img --profile profile.json
1. Génération avec boot.img + 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
Vous pouvez également 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'adresses physiques, par exemple :
{
"p0_phys_offset": "0x40000000",
"p0_kernel_phys_load": "0x40000000"
}
2. Détection du profile depuis un appareil ADB rooté
Générer uniquement le profile :
make detect-profile PROFILE_OUT=profile.json
Détecter le profile et générer immédiatement la target :
tools/generate_target.py --project <project> --boot /path/to/boot.img \
--detect-adb-and-generate --profile-out profile.json
3. Génération avec (xbl_config.img / vendor_boot.img) + boot.img
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
Exemple
make generate-target PROJECT=rodin BOOT=../rodin/boot_a PROFILE=../profile.json
make generate-target PROJECT=beryl BOOT=../beryl/boot.img PROFILE=../profile.json
Exemple 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 validée sur matériel 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...
Ajouter une nouvelle target
Il est recommandé de générer à partir d'une image boot et d'un profile correspondants :