
Kit de root pour HP Slate 7 2800 sous Android 4.1.1 utilisant CVE-2015-1805.
Anglais | Русский
Ce dépôt contient un kit complet et autonome permettant d'obtenir un accès root persistant sur la HP Slate 7 2800 fonctionnant sous le firmware 1.05.18 et le noyau Linux 3.0.8+, en exploitant la vulnérabilité locale CVE-2015-1805. Le kit a été exécuté sur la tablette réelle, et le résultat a été vérifié depuis une nouvelle session ADB et après un redémarrage normal.
Ce n'est pas un outil de root Android universel. L'exploit est spécifique à cette configuration du noyau HP. Ne l'exécutez pas sur un autre modèle, un autre firmware ou une autre version de noyau.
| Paramètre | Valeur vérifiée |
|---|---|
| Fabricant et modèle | HP Slate 7 2800 |
| Android | 4.1.1, API 16, build JRO03H |
| Produit / appareil | t7h / pine |
| Processeur | Rockchip RK3066, ARMv7 |
| Empreinte de build | hp/t7h/pine:4.1.1/JRO03H/v1.05.18_user:user/release-keys |
| Noyau | 3.0.8+ #13 SMP PREEMPT Tue Jul 28 15:24:30 CST 2015 |
| ABI | ARM EABI5 32 bits |
| SELinux | non présent dans la configuration du noyau (CONFIG_SECURITY est désactivé) |
Partition /system | ext4, montée en lecture seule par défaut |
Vous pouvez inspecter l'appareil sans rien modifier :
adb devices -l
adb shell getprop ro.product.model
adb shell getprop ro.build.fingerprint
adb shell getprop ro.build.version.sdk
adb shell cat /proc/version
Vous pouvez également utiliser le script ci-dessous. Il refusera de continuer si l'empreinte de build ou la version du noyau ne correspond pas :
./scripts/check-target.sh
./scripts/check-target.sh ADB_SERIAL
.
├── bin/
│ ├── hp-slate7-cve-2015-1805-root # verified exploit
│ ├── hp-slate7-install-root # installs su into /system
│ └── hp-slate7-su # minimal setuid-root wrapper
├── src/
│ ├── exploit/ # CVE source and device-specific changes
│ ├── installer/install-root.c # installer source
│ └── su/rootsh.S # minimal su source
├── scripts/
│ ├── build.sh # rebuilds all three ELF files
│ ├── check-target.sh # safe compatibility check
│ └── root-device.sh # verifies, uploads, and runs the kit
├── SHA256SUMS # hashes of the verified bin/* files
├── NOTICE # attribution for the original PoC
└── LICENSE # GPL-3.0
| Fichier | Format | Taille | Rôle |
|---|---|---|---|
bin/hp-slate7-cve-2015-1805-root | ELF 32-bit ARM EABI5, static, unstripped | 2,722,320 octets | Exploite la CVE, obtient l'uid 0 et lance l'installateur |
bin/hp-slate7-install-root | ELF 32-bit ARM EABI5, static, stripped | 22,596 octets | Remonte temporairement /system en rw, installe su et restaure le mode ro |
bin/hp-slate7-su | ELF 32-bit ARM EABI5, static, stripped | 656 octets | Appelle setresgid(0,0,0) et setresuid(0,0,0), puis lance /system/bin/sh |
Sommes de contrôle SHA-256 des binaires vérifiés :
6bf8ea09efb9f409dfc7aa5efbc3108e5c1a19fc5b07ae913328ef4639a7644f bin/hp-slate7-cve-2015-1805-root
4857c71efc846636afc5b50d7f3c971c6eb68d3760f652086f2a38c5dc50bc4a bin/hp-slate7-install-root
40626e555f71b71aa5ef7a727e9f6be55e552ef998ae3f49e9390f3e213c610e bin/hp-slate7-su
Vérification sur macOS :
shasum -a 256 -c SHA256SUMS
Vérification sur Linux :
sha256sum -c SHA256SUMS
Utilisez les fichiers de bin/ sur la tablette : ce sont exactement les octets qui ont été vérifiés sur l'appareil. Le répertoire build/ est destiné aux reconstructions locales et n'est pas suivi par Git.
CVE-2015-1805 est un défaut dans les implémentations de pipe_read() et pipe_write() des anciens noyaux Linux. Lorsqu'une copie atomique échoue, le code continue incorrectement de parcourir le tableau iovec, ce qui peut déplacer un pointeur au-delà de ses limites. Par conséquent, un processus local non privilégié peut corrompre la mémoire, faire planter le noyau ou élever ses privilèges. Une explication détaillée du mécanisme a été publiée sur oss-security. Les correctifs se trouvent, entre autres, dans les commits Linux amont 637b58c et f0d1bec.
Le noyau 3.0.8+ de la tablette s'est révélé vulnérable. Avant de modifier la mémoire du noyau, la même course a été testée séparément avec une sonde inoffensive dont les deux cibles d'écriture étaient toutes deux situées dans la mémoire ordinaire du processus de test. Elle a rapporté CVE-2015-1805: VULNERABLE, et la tablette est restée accessible via ADB.
readv(), les changements de mappage mémoire et le traitement d'un grand tableau iovec dans le code vulnérable des pipes du noyau.sys_call_table par l'adresse d'une petite trampoline ARM dans le processus de l'exploit.0xffff0008. Sur l'appareil vérifié, l'instruction est 0xe59ff410 et sa valeur littérale pointe vers vector_swi = 0xc04d0d40.vector_swi et sys_call_table ont été assemblés indépendamment à partir de l'archive officielle du noyau Open Source HP 1.05.10 (SHA-256 de l'archive : dd69f0468973714fd9ba22cdfea7e96f39f651ee51b9cb537728d9dcadbafda2) avec la defconfig rk30_t7h_dvt_defconfig. Leur décalage est 0xc4. Le firmware installé ne comporte ni OABI ni seccomp, si bien que l'adresse d'exécution finale de la table est 0xc04d0e04.sp courant, l'aligne sur la taille de pile noyau de 8 192 octets et écrit -1 uniquement dans thread_info.addr_limit au décalage 8. Elle ne contient aucun appel externe, prologue ni code runtime du compilateur.sys_ni_syscall dans la source HP ; le pointeur restauré sur le noyau vérifié est 0xc051900c.addr_limit élargi, la copie par pipe lit le task_struct courant, localise cred et valide la structure à l'aide des valeurs uid/gid courantes, de l'alignement, du compteur de références et de la condition real_cred == cred. Ce n'est qu'après ces vérifications que les valeurs uid/gid sont mises à zéro et les masques de capacités remplis de uns.uid=0 et lance /data/local/tmp/install-root. L'installateur remonte /system en rw, copie la charge utile vers /system/xbin/su, attribue la propriété root:root et le mode 06755, appelle sync() et remonte /system en lecture seule.La fonction d'origine current_thread_info() des anciens en-têtes du noyau était incompatible avec Clang moderne à -O0 : un prototype précoce lisait un mot non initialisé au lieu du registre sp et pouvait faire planter le noyau. Dans ce dépôt, elle a été remplacée par une trampoline ARM nue vérifiée. Le binaire précoce n'est pas inclus dans le dépôt.
bin/