
Firmware-spezifischer temporärer Root-Exploit für Toshiba/Amazon Fire TV (hazel) unter Verwendung von CVE-2026-43499. Implementiert ARM32-futex-PI-UAF, Kernel-Adressleck, mm_struct-Reclaim und Credential-Patching, um UID 0 über ADB zu erreichen.
Temporärer Root-Exploit für die Toshiba/Amazon hazel Fire TV-Plattform, basierend auf CVE-2026-43499.
Der aktuelle Exploit wurde getestet auf:
| Gerät | Toshiba Fire TV (hazel) |
| Fire OS-Build | PS7716.5665N |
| Kernel | Linux 4.9.113 |
| Produktmodell | AFTHA004 (C350) |
[!WARNING] Dieser Exploit ist firmwarespezifisch. Kernel-Adressen, Struktur-Offsets und Teile der Reclaim-Kette sind für
PS7716.5665Nkalibriert.Führen Sie den aktuellen Build nicht auf einer anderen Firmware oder einem anderen Gerät aus, ohne ihn vorher zu portieren/neu zu kalibrieren.
Ein fehlgeschlagener Heap-Reclaim kann einen Panic auslösen und den Fernseher neu starten. Root ist temporär und geht nach einem Neustart verloren. Wenn Ihr Fernseher einfriert, können Sie ihn jederzeit durch Aus- und Einschalten neu starten.
Der Exploit nutzt CVE-2026-43499, um temporäre UID 0 aus der normalen ADB-Shell-Umgebung zu erlangen.
Die Exploit-Kette umfasst:
mm_struct Cross-Cache-ReclaimNach einem erfolgreichen Lauf hält der Exploit die für den Root-Pfad erforderlichen Kernel-Objekte am Leben und startet einen lokalen Befehls-Daemon.
SELinux bleibt Enforcing. Befehle, die über den Root-Daemon ausgeführt werden, behalten die SELinux-Domäne shell und das auf dieser Firmware verfügbare Capability-Bounding-Set.
hazel_root.c Haupt-Exploit, Kernel-Lese-/Schreib-Phase, Credential-Patching und Root-Befehls-Client/Serverhazel_reclaim.h Kernel-Adressleck und mm_struct Cross-Cache-ReclaimDie Beispiele unten gehen von Linux aus und dass adb in $PATH verfügbar ist.
Setzen Sie NDK auf Ihr Android-NDK-r27d-Verzeichnis:
export NDK=/pfad/zu/android-ndk-r27d
Dann kompilieren:
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" \
--target=armv7a-linux-androideabi28 \
-O2 -g0 -Wall -Wextra -Wpedantic -fPIE -pie \
hazel_root.c -o hazel_root \
-pthread
Verbinden Sie sich per ADB mit dem Fernseher.
Bei Netzwerk-ADB:
adb connect <TV_IP>:5555
Exploit übertragen:
adb push hazel_root /data/local/tmp/hazel_root
adb shell chmod 755 /data/local/tmp/hazel_root
Starten Sie von einem sauberen Boot:
adb shell 'cd /data/local/tmp && ./hazel_root'
Ein erfolgreicher Lauf endet mit einer Ausgabe ähnlich wie:
[root] uid=0 euid=0 gid=0
[ROOT] uid=0 daemon pid=... socket=@hazel_root
Der Reclaim ist probabilistisch. Ein erfolgloser Versuch kann sauber fehlschlagen oder einen Panic auslösen und den Fernseher neu starten.
Wenn der Fernseher neu startet, lassen Sie ihn normal booten und versuchen Sie es erneut.
Sobald der Exploit erfolgreich ist, starten Sie keine weitere Kopie. Lassen Sie die Exploit-Prozesse laufen, da sie Kernel-Objekte behalten, die für den temporären Root-Pfad verwendet werden.
Dieselbe Binärdatei fungiert als Client für den Root-Daemon:
adb shell 'cd /data/local/tmp && ./hazel_root --client id'
Zum Beispiel:
adb shell 'cd /data/local/tmp && ./hazel_root --client getenforce'
adb shell 'cd /data/local/tmp && ./hazel_root --client cat /proc/self/status'
adb shell 'cd /data/local/tmp && ./hazel_root --client "id; uname -a"'
Ein erfolgreicher Root-Befehl sollte melden:
uid=0(root) gid=0(root) context=u:r:shell:s0
Beachten Sie, dass UID 0 SELinux nicht umgeht. SELinux bleibt Enforcing.
disable_ota.sh übertragen und über den Root-Daemon ausführen:
adb push disable_ota.sh /data/local/tmp/disable_ota.sh
adb shell chmod 755 /data/local/tmp/disable_ota.sh
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_ota.sh"'
Das Skript deaktiviert beide Fire OS-OTA-Pakete, löscht ausstehende Updater-Zustände und verifiziert den resultierenden Package-Manager-Zustand. Es startet den Fernseher nicht neu.
disable_amazon_services.sh deaktiviert den Arcus-Remote-Konfigurations-Proxy,
den ADEP-Anwendungsblockierungsdienst, die automatische Inhaltserkennung (ACR) und
die dedizierten Amazon-Metriken-Pakete, die auf der getesteten Hazel-Firmware vorhanden sind. ACR
wird deaktiviert und seine gespeicherten Daten werden gelöscht, aber sein schreibgeschütztes System-APK wird nicht
gelöscht, wodurch der Vorgang umkehrbar ist. Das Skript deaktiviert nicht
CrashManager oder die Low-Level-Logging-Pakete, sodass Kernel-Panic- und Dropbox-
Diagnosen während der Entwicklung oder Fehlersuche am Exploit verfügbar bleiben.
Skript übertragen und über den Root-Daemon ausführen:
adb push disable_amazon_services.sh /data/local/tmp/disable_amazon_services.sh
adb shell chmod 755 /data/local/tmp/disable_amazon_services.sh
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh"'
Aktuellen Zustand anzeigen, ohne etwas zu ändern:
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh status"'
Pakete später bei Bedarf wiederherstellen:
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh restore"'
Der aktivierte oder deaktivierte Paketzustand überlebt normalerweise einen Neustart. Das Wiederherstellen der Pakete stellt nicht die Paketdaten wieder her, die während der Deaktivierung gelöscht wurden.
Fernseher neu starten:
adb reboot
Der Exploit modifiziert nur temporären Kernel-Zustand, daher geht Root nach einem Neustart verloren.
Absichtlich vorgenommene Änderungen an persistenten Android-Einstellungen oder -Daten, während Root aktiv war, werden durch einen Neustart natürlich nicht unbedingt rückgängig gemacht.
Das einzige derzeit bestätigte Ziel ist:
hazel
PS7716.5665N
Linux 4.9.113
ARM32
Andere Fernseher scheinen ebenfalls den Gerätenamen hazel zu verwenden, aber das Teilen des Codenamens bedeutet nicht, dass sie denselben Kernel-Build, dasselbe Board oder dasselbe Strukturlayout teilen.
Gehen Sie nicht von Kompatibilität mit einem anderen hazel-Gerät aus.
Wenn Sie am Portieren des Exploits interessiert sind, umfassen nützliche Zielinformationen:
adb shell getprop ro.product.model
adb shell getprop ro.product.device
adb shell getprop ro.product.board
adb shell getprop ro.build.version.incremental
adb shell uname -a
Die fest codierten Kernel-Adressen und Struktur-Offsets im aktuellen Quellcode müssen für jede Ziel-Firmware verifiziert werden.
Dies ist eine firmwarespezifische Adaption der CVE-2026-43499-Exploit-Kette für den ARM32-Linux-4.9-Kernel des Herstellers, der von diesem Fire OS-Build verwendet wird.
Die Hazel-spezifische Arbeit umfasst:
mm_struct SLUB/Cache-ShapingDer aktuelle Exploit sollte daher nicht als generischer CVE-2026-43499-PoC oder als Drop-in-Exploit für beliebige Fire TV-Firmware behandelt werden.
Dieser Port wurde durch das Studieren und Anpassen von Ideen aus den folgenden öffentlichen CVE-2026-43499-Exploit-Implementierungen entwickelt:
gitchw/ghostlock-cve-2026-43499 ARM32-futex-PI-UAF-Referenz und Waiter/Owner/Consumer-Kette.
NebuSec/CyberMeowfia IonStack-Exploit, einschließlich des breiteren Designs für gefälschte fops, Kernel-Lesen/Schreiben und Credential-Patching.
F-19-F/IonStackQuest3
ARM32-setsockopt(MCAST_JOIN_SOURCE_GROUP)-Stack-Stamping- und Synchronisationsreferenz.
R0rt1z2/GhostLock-5.10 Zusätzliche ARM32-Layouts und Exploit-Techniken, die beim Gegenprüfen des Hazel-Ports verwendet wurden.
Während der Entwicklung wurde ein KI-Codierungsagent verwendet, insbesondere um Absturz- und Disassembly-Daten zu analysieren, zielspezifische Kernel-Adressen und Struktur-Offsets zu lokalisieren und gegenzuprüfen sowie bei Debugging und Code-Bereinigung zu helfen.
Der Exploit selbst wurde auf dem Zielgerät PS7716.5665N getestet, und die zielspezifischen Werte, die vom veröffentlichten Build verwendet werden, wurden gegen diese Firmware validiert. KI-Ausgabe wurde als Forschungsunterstützung und nicht als Quelle der Wahrheit behandelt.