
Rooting-Kit für HP Slate 7 2800 mit Android 4.1.1 unter Verwendung von CVE-2015-1805.
English | Русский
Dieses Repository enthält ein vollständiges, eigenständiges Kit zur Erlangung dauerhafter Root-Zugriffsrechte auf dem HP Slate 7 2800 mit Firmware 1.05.18 und Kernel Linux 3.0.8+ durch Ausnutzung der lokalen Schwachstelle CVE-2015-1805. Das Kit wurde auf dem tatsächlichen Tablet ausgeführt, und das Ergebnis wurde aus einer frischen ADB-Sitzung sowie nach einem normalen Neustart verifiziert.
Dies ist kein universelles Android-Rooting-Tool. Der Exploit ist spezifisch für diese HP-Kernel-Konfiguration. Führen Sie ihn nicht auf einem anderen Modell, einer anderen Firmware oder einer anderen Kernel-Version aus.
| Parameter | Verifizierter Wert |
|---|---|
| Hersteller und Modell | HP Slate 7 2800 |
| Android | 4.1.1, API 16, Build JRO03H |
| Produkt / Gerät | t7h / pine |
| Prozessor | Rockchip RK3066, ARMv7 |
| Build-Fingerprint | hp/t7h/pine:4.1.1/JRO03H/v1.05.18_user:user/release-keys |
| Kernel | 3.0.8+ #13 SMP PREEMPT Tue Jul 28 15:24:30 CST 2015 |
| ABI | 32-Bit-ARM-EABI5 |
| SELinux | nicht in der Kernel-Konfiguration vorhanden (CONFIG_SECURITY ist deaktiviert) |
/system-Partition | ext4, standardmäßig schreibgeschützt eingehängt |
Sie können das Gerät prüfen, ohne Änderungen vorzunehmen:
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
Alternativ verwenden Sie das folgende Skript. Es verweigert die Ausführung, wenn entweder der Fingerprint oder die Kernel-Version nicht übereinstimmt:
./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
SHA-256-Prüfsummen der verifizierten Binaries:
6bf8ea09efb9f409dfc7aa5efbc3108e5c1a19fc5b07ae913328ef4639a7644f bin/hp-slate7-cve-2015-1805-root
4857c71efc846636afc5b50d7f3c971c6eb68d3760f652086f2a38c5dc50bc4a bin/hp-slate7-install-root
40626e555f71b71aa5ef7a727e9f6be55e552ef998ae3f49e9390f3e213c610e bin/hp-slate7-su
Überprüfung unter macOS:
shasum -a 256 -c SHA256SUMS
Überprüfung unter Linux:
sha256sum -c SHA256SUMS
Verwenden Sie auf dem Tablet die Dateien aus bin/: Es handelt sich um exakt die Bytes, die auf dem Gerät verifiziert wurden. Das Verzeichnis build/ ist für lokale Neubauten gedacht und wird nicht von Git verfolgt.
CVE-2015-1805 ist ein Fehler in den pipe_read()- und pipe_write()-Implementierungen älterer Linux-Kernel. Wenn eine atomare Kopie fehlschlägt, fährt der Code fälschlicherweise mit dem Durchlaufen des iovec-Arrays fort und kann dabei einen Zeiger über dessen Grenzen hinaus verschieben. Dadurch kann ein lokaler Prozess ohne Privilegien Speicher beschädigen, den Kernel zum Absturz bringen oder seine Privilegien erweitern. Eine detaillierte Erklärung des Mechanismus wurde auf oss-security veröffentlicht. Die Korrekturen finden sich unter anderem in den Upstream-Linux-Commits 637b58c und f0d1bec.
Der 3.0.8+-Kernel des Tablets erwies sich als verwundbar. Vor der Änderung von Kernel-Speicher wurde dieselbe Race-Bedingung separat mit einer harmlosen Sonde getestet, deren beide Schreibziele sich im normalen Speicher des Testprozesses befanden. Sie meldete CVE-2015-1805: VULNERABLE, und das Tablet blieb über ADB erreichbar.
readv(), Änderungen am Speicher-Mapping und der Verarbeitung eines großen iovec-Arrays im verwundbaren Pipe-Code des Kernels.sys_call_table durch die Adresse eines kleinen ARM-Trampolins im Exploit-Prozess.0xffff0008 berechnet. Auf dem verifizierten Gerät lautet die Instruktion 0xe59ff410, und ihr Literal zeigt auf vector_swi = 0xc04d0d40.vector_swi und sys_call_table wurden unabhängig aus dem offiziellen HP-Open-Source-Kernelarchiv 1.05.10 (Archiv-SHA-256: dd69f0468973714fd9ba22cdfea7e96f39f651ee51b9cb537728d9dcadbafda2) mit der Defconfig rk30_t7h_dvt_defconfig assembliert. Ihr Offset beträgt 0xc4. Die installierte Firmware besitzt weder OABI noch seccomp, daher lautet die endgültige Laufzeitadresse der Tabelle .Die ursprüngliche Funktion current_thread_info() aus den alten Kernel-Headern war mit modernem Clang bei -O0 inkompatibel: Ein früher Prototyp las anstelle des sp-Registers ein nicht initialisiertes Wort und konnte den Kernel zum Absturz bringen. In diesem Repository wurde sie durch ein verifiziertes nacktes ARM-Trampolin ersetzt. Das frühe Binary ist nicht im Repository enthalten.
bin/adb aus den Android-SDK-Platform-Tools;Sie benötigen weder das Android-NDK, Java, Python, fastboot, einen entsperrten Bootloader, eine Custom-Recovery, eine Rooting-APK noch Netzwerkzugriff. Der Exploit und die Nutzlast sind statisch gelinkt.
shasum oder sha256sum zur Überprüfung des Ergebnisses.Das Android-NDK ist weiterhin nicht erforderlich: Zig stellt eine ARM-musl-Cross-Toolchain bereit.
Prüfen Sie die Verbindung:
adb devices -l
Der Status muss device sein, nicht offline oder unauthorized.
Wechseln Sie in das Stammverzeichnis des Repositorys und prüfen Sie zuerst, ob das Gerät exakt übereinstimmt:
./scripts/check-target.sh
Wenn mehrere Geräte verbunden sind, übergeben Sie die Seriennummer bei jedem Befehl mit adb -s SERIAL oder setzen Sie die Umgebungsvariable ANDROID_SERIAL.
Laden Sie die drei Dateien unter den Namen hoch, die sie gegenseitig erwarten:
adb push bin/hp-slate7-cve-2015-1805-root /data/local/tmp/cve-2015-1805-root
adb push bin/hp-slate7-install-root /data/local/tmp/install-root
adb push bin/hp-slate7-su /data/local/tmp/rootsh-armv7
Setzen Sie die Berechtigungen und schreiben Sie die bereitgestellten Dateien auf den Speicher:
adb shell 'chmod 755 /data/local/tmp/cve-2015-1805-root /data/local/tmp/install-root /data/local/tmp/rootsh-armv7; sync'
Führen Sie den Exploit einmal aus:
adb shell '/data/local/tmp/cve-2015-1805-root; rc=$?; echo DEVICE_RC=$rc; exit $rc'
Verifizierte erfolgreiche Ausgabe:
offset:c4
addr:c04d0d40
[+] Done
restored syscall 222 to 0xc051900c
exploit rc=0 uid=0 gid=0
installer uid=0 gid=0
install-su ok
DEVICE_RC=0
Wenn das Gerät für einige Sekunden aus ADB verschwindet, führen Sie den Exploit nicht erneut aus. Warten Sie, bis es zurückkehrt:
adb wait-for-device
Das Skript prüft den Fingerprint und den Kernel, verifiziert die SHA-256-Hashes, lädt die Dateien hoch, fragt Sie nach der Eingabe von ROOT, führt den Exploit aus und überprüft uid=0:
./scripts/root-device.sh
Für mehrere Geräte:
./scripts/root-device.sh --serial ADB_SERIAL
Die Option --yes deaktiviert die interaktive Bestätigung und ist nur für bewusste automatisierte Verwendung gedacht:
./scripts/root-device.sh --serial ADB_SERIAL --yes
Überprüfen Sie Root aus einer frischen ADB-Shell, nicht aus der uid des Exploit-Prozesses:
adb shell 'id; /system/xbin/su -c id; echo SU_RC=$?'
adb shell 'ls -l /system/xbin/su'
adb shell 'cat /proc/mounts' | grep ' /system '
Erwartete Ausgabe:
uid=2000(shell) ...
uid=0(root) gid=0(root) ...
SU_RC=0
-rwsr-sr-x root root ... su
... /system ext4 ro,...
Entfernen Sie als Nächstes nur die temporären Bereitstellungsdateien. Das installierte /system/xbin/su wird nicht entfernt:
adb shell '/system/xbin/su -c "rm -f /data/local/tmp/cve-2015-1805-root /data/local/tmp/install-root /data/local/tmp/rootsh-armv7; sync"'
Das Kit erstellt kein /data/local.prop und verändert keine Benutzerdaten.
Führen Sie einen normalen Neustart durch und überprüfen Sie anschließend den dauerhaften Root-Zugriff:
adb reboot
adb wait-for-device
adb shell getprop sys.boot_completed
adb shell '/system/xbin/su -c id'
Das verifizierte Tablet lieferte nach dem Neustart folgendes Ergebnis:
uid=0(root) gid=0(root) ...
Die installierte Datei wurde vom Tablet zurückgeholt und stimmte Byte für Byte mit bin/hp-slate7-su überein:
40626e555f71b71aa5ef7a727e9f6be55e552ef998ae3f49e9390f3e213c610e
Um einen einzelnen Befehl auszuführen:
adb shell '/system/xbin/su -c id'
adb shell '/system/xbin/su -c "ls -la /data"'
hp-slate7-su ist ein bewusst minimaler Wrapper ohne Android-App, Bestätigungsabfragen, Daemon oder Berechtigungsprotokoll. Jeder lokale Prozess, der /system/xbin/su ausführen kann, kann potenziell Root erlangen. Verwenden Sie dieses veraltete Tablet nach dem Rooten nicht für sensible Daten und installieren Sie keine nicht vertrauenswürdigen APKs.
Geben Sie den Pfad zum portablen Zig 0.15.2 an oder fügen Sie zig zu PATH hinzu:
ZIG_BIN=/absolute/path/to/zig ./scripts/build.sh
Die Ausgabe wird nach build/ geschrieben:
build/hp-slate7-cve-2015-1805-root
build/hp-slate7-install-root
build/hp-slate7-su
Prüfen Sie die Dateiformate:
file build/hp-slate7-*
Alle drei Dateien müssen 32-Bit-ARM-EABI5-ELF-Dateien sein. Mit der verifizierten Zig-Version 0.15.2 werden der Installer und su Byte für Byte identisch zu den Dateien in bin/ neu gebaut. Der Exploit-Hash kann aufgrund absoluter Pfade in den DWARF- und Linker-Metadaten abweichen; sein kritisches Sechs-Instruktionen-Trampolin war im Verifikations-Build Byte für Byte identisch. Ein Neuaufbau ersetzt nicht die Prüfsummen der Dateien in bin/, die tatsächlich auf dem Tablet ausgeführt wurden.
unauthorizedEntsperren Sie den Bildschirm und akzeptieren Sie den RSA-Schlüssel für USB-Debugging. Wenn die Abfrage nicht erscheint, schließen Sie das Kabel erneut an und führen Sie adb devices -l nochmals aus.
offline oder das Gerät verschwindetWarten Sie einige Sekunden und führen Sie adb wait-for-device aus. Wenn das Tablet ausgeschaltet ist, schalten Sie es normal mit dem Netzschalter ein. Führen Sie nicht gleichzeitig eine zweite Instanz des Exploits aus.
[+] Done nicht ausgegebenDie CVE wird über eine Race-Bedingung ausgenutzt und kann theoretisch fehlschlagen. Starten Sie das Tablet neu, bevor Sie einen einzigen erneuten Versuch unternehmen. Führen Sie das Binary nicht in einer Schleife aus: Eine fehlgeschlagene Race-Bedingung kann den Kernel zum Absturz bringen.
su existiert, aber der Befehl endet mit Code 127Überprüfen Sie den SHA-256-Hash der Datei. Ein früher Forschungs-Wrapper behandelte argv auf ARM falsch und beendete sich mit Code 127. Dieses Repository enthält die korrigierte 656-Byte-Version mit SHA-256 40626e555f71b71aa5ef7a727e9f6be55e552ef998ae3f49e9390f3e213c610e.
Prüfen Sie den tatsächlichen Zustand von Android:
adb shell getprop sys.boot_completed
adb shell dumpsys window windows
sys.boot_completed=1 bedeutet, dass Android hochgefahren ist, auch wenn das physische Display noch ein altes Bild anzeigt.
Andere bekannte Ansätze wurden sicher ausgeschlossen oder erwiesen sich auf diesem Gerät als ungeeignet: CVE-2013-6282, CVE-2013-2094, CVE-2012-0056, CVE-2013-4787, Dirty COW und PingPongRoot. Towelroot/CVE-2014-3153 brachte diesen Kernel zum Absturz und darf nicht verwendet werden. CVE-2014-7951 ermöglichte es, über eine Pfad-Traversal-Schwachstelle bei der ADB-Wiederherstellung eine Datei zu schreiben, aber die HP-Firmware lud /data/local.prop nicht, daher verschaffte diese Methode kein Root.
Der Bootloader verwendet einen alten Rockchip-Loader und erschien nicht als Standard-fastboot-Gerät. Das Flashen einer Recovery oder das Entsperren des Bootloaders war für dieses Ergebnis nicht erforderlich.
Der Exploit-Code basiert auf mobilelinux/iovy_root_research, Commit f945796, das wiederum auf dosomder/iovyroot verweist. Zu den gerätespezifischen Änderungen gehören die Reduzierung der Thread-Anzahl, die Korrektur des Timeouts, die Verwendung eines nackten ARM-Trampolins, die frühzeitige Wiederherstellung der Syscall-Tabelle, die Validierung von cred und das Deaktivieren des nicht anwendbaren SELinux-Zweigs.
Die ursprünglichen Hinweise wurden beibehalten. Das Repository wird unter GPL-3.0 verteilt; siehe LICENSE und NOTICE.
Die Ausnutzung von Kernel-Speicher birgt immer das Risiko eines Neustarts des Geräts, einer Beschädigung des Systems oder von Datenverlust. Dieses Kit ist ausschließlich für ein HP Slate 7 2800 bestimmt, das Ihnen gehört und dessen Firmware exakt übereinstimmt. Sichern Sie alle wichtigen Daten und verwenden Sie es nicht auf Geräten, die anderen Personen gehören.
Die Sicherheitsforschung und die Dokumentation wurden mit Unterstützung von OpenAI Codex erstellt, basierend auf GPT-5.6 Sol mit Daybreak-Blue-Cybersicherheitszugang.
Repository-Standorte: kanonische Quelle · GitHub · schreibgeschützter Mirror
| Datei | Format | Größe | Zweck |
|---|
bin/hp-slate7-cve-2015-1805-root | ELF 32-Bit-ARM-EABI5, statisch, nicht gestrippt | 2.722.320 Byte | Nutzt die CVE aus, erlangt uid 0 und startet den Installer |
bin/hp-slate7-install-root | ELF 32-Bit-ARM-EABI5, statisch, gestrippt | 22.596 Byte | Hängt /system vorübergehend rw ein, installiert su und stellt ro wieder her |
bin/hp-slate7-su | ELF 32-Bit-ARM-EABI5, statisch, gestrippt | 656 Byte | Ruft setresgid(0,0,0) und setresuid(0,0,0) auf und startet dann /system/bin/sh |
0xc04d0e04sp, richtet es an der Kernel-Stack-Größe von 8.192 Byte aus und schreibt -1 ausschließlich in thread_info.addr_limit an Offset 8. Es enthält keine externen Aufrufe, kein Prolog und keinen Compiler-Runtime-Code.sys_ni_syscall; der auf dem verifizierten Kernel wiederhergestellte Zeiger ist 0xc051900c.addr_limit erweitert wurde, liest das Pipe-Kopieren das aktuelle task_struct, lokalisiert cred und validiert die Struktur anhand der aktuellen uid/gid-Werte, der Ausrichtung, des Referenzzählers und der Bedingung real_cred == cred. Erst nach diesen Prüfungen werden die uid/gid-Werte auf null gesetzt und die Capability-Masken mit Einsen gefüllt.uid=0 und startet /data/local/tmp/install-root. Der Installer hängt /system rw ein, kopiert die Nutzlast nach /system/xbin/su, setzt die Eigentümerschaft root:root und den Modus 06755, ruft sync() auf und hängt /system wieder schreibgeschützt ein.