
Analyse de recherche en sécurité sur l'exploitation de CVE-2026-43499 sur l'Amazon Fire TV Stick 3rd Gen (sheldonp), du root temporaire au déverrouillage du bootloader.
sheldonp)Enchaîner une élévation de privilèges du noyau Linux avec un rétrogradation du preloader et un déverrouillage du bootloader.
Ce dépôt documente ma reproduction autorisée de la chaîne d'exploitation CVE-2026-43499 sur un Amazon Fire TV Stick 3e génération (sheldonp). La chaîne utilisait un accès root temporaire au noyau pour exécuter une rétrogradation contrôlée du preloader, puis utilisait le workflow Kamakiri BootROM existant pour atteindre le fastboot déverrouillé et terminer le déverrouillage du bootloader.
Il s'agit d'une reproduction et d'une étude de cas spécifique à l'appareil. Je n'ai pas découvert CVE-2026-43499, créé l'exploit original IonStack/GhostLock, ni développé Kamakiri. Les chercheurs et développeurs en amont sont crédités ci-dessous.
[!IMPORTANT] Ce document est un compte rendu technique, pas un guide de root universel. La compatibilité de la build est importante, le root temporaire n'est pas un root persistant, et des erreurs impliquant le Preloader, LK, TEE ou les partitions protégées par dm-verity peuvent briquer définitivement l'appareil.
La chaîne de bout en bout a été complétée le 12 septembre 2026. Ce dépôt consigne l'appareil et les versions logicielles testés, les archives exactes utilisées, leurs hachages SHA-256 et les preuves originales capturées pendant le processus.
| Champ | Cible de reproduction |
|---|---|
| Appareil | Amazon Fire TV Stick 3e génération |
| Modèle | AFTSSS |
| Nom de code | sheldonp |
| Système d'exploitation | Fire OS 7.7.1.6 / build PS7716.5666N |
| Incrémental | 0036005356164 |
| Base Android | Android 9 |
| Noyau | 4.4.162+ |
| Hôte utilisé pour l'étape BootROM | Ubuntu 26.04.1 LTS, démarré en session live USB |
| Android platform tools | 37.0.1 |
| Implémentation du root temporaire | R0rt1z2/GhostLock 1.1.0, branche 4.4 |
| Implémentation BootROM | kamakiri-sheldon-1.0 |
| Résultat | Root temporaire, rétrogradation du preloader, bootloader déverrouillé, TWRP et Fire OS préservé |
Hors périmètre : découverte de vulnérabilité, nouvelle implémentation d'exploit, exploitation à distance, root persistant ou prise en charge d'appareils autres que l'unité sheldonp testée. Aucune ROM personnalisée n'a été installée durant cette reproduction.
Voici les archives ZIP exactes utilisées durant cette reproduction. Les archives ne sont pas redistribuées dans ce dépôt ; leurs hachages SHA-256 sont consignés afin que des copies obtenues indépendamment puissent être comparées aux fichiers utilisés dans cette étude de cas.
| Archive | Source | Version | SHA-256 |
|---|---|---|---|
ghostlock-sheldon-v1.1.0.zip | Guide de root temporaire et de rétrogradation sur XDA | GhostLock 1.1.0 | 8D541F7DF58487AF6D6D45D778482D3455A71F62E32651751CFE0B2DDFC6554F |
kamakiri-sheldon-1.0.zip | Guide de déverrouillage du bootloader sur XDA | Kamakiri Sheldon 1.0 | 1B07161D9F894935E5918A9B8F9A230F67B9487E9863C242E758338E8C6C5784 |
Ces hachages identifient les copies utilisées dans cette étude de cas ; les lecteurs doivent néanmoins comparer leurs téléchargements avec les sources amont originales et consulter les licences tierces applicables.
CVE-2026-43499, également connu sous le nom de GhostLock, est un use-after-free dans le chemin futex/rtmutex d'héritage de priorité du noyau Linux. Lors du rollback du proxy-lock, remove_waiter() opérait sur current au lieu de la tâche stockée dans waiter->task. Par conséquent, le véritable waiter pouvait retourner en espace utilisateur avec pi_blocked_on référençant encore un rt_mutex_waiter dans une frame de pile noyau libérée.
La recherche originale IonStack transforme cette référence de pile pendante en primitive d'élévation de privilèges locale. R0rt1z2 a adapté la technique au Fire TV Stick 3e génération et au Fire TV Stick Lite (sheldonp/sheldon) exécutant Fire OS 7 sur un noyau 4.4.
La distinction clé dans cette étude de cas est que CVE-2026-43499 ne déverrouille pas directement le bootloader. Il fournit un accès temporaire au niveau du noyau. Cet accès de courte durée permet d'effectuer la rétrogradation contrôlée du preloader requise avant que l'ancienne chaîne Kamakiri BootROM puisse s'exécuter.
flowchart LR
A[Fire OS 7 on sheldonp] --> B[CVE-2026-43499 / GhostLock]
B --> C[Temporary root shell]
C --> D[Controlled preloader downgrade]
D --> E[Expected non-booting transition state]
E --> F[Kamakiri BootROM stage]
F --> G[Unlocked fastboot]
G --> H[Bootloader unlocked]
La chaîne traverse deux frontières de sécurité distinctes :
Avant de modifier l'appareil, j'ai identifié le nom de code du matériel et enregistré les versions de Fire OS, de build, du bootloader et du noyau via ADB.
adb devices -l
adb shell getprop ro.product.device
adb shell getprop ro.product.model
adb shell getprop ro.build.version.release
adb shell getprop ro.build.version.incremental
adb shell getprop ro.build.fingerprint
adb shell getprop ro.bootloader
adb shell uname -a
adb shell id
La base de référence obtenue était sheldonp / AFTSSS, Fire OS PS7716.5666N, incrémentale 0036005356164, Android 9 et noyau 4.4.162+. Le numéro de série est volontairement omis.

J'ai connecté le Fire TV via USB avec le débogage ADB activé et utilisé GhostLock 1.1.0, le paquet sheldon/sheldonp publié avec le guide XDA de R0rt1z2. Le lanceur spécifique à l'appareil redémarre le Fire TV pour démarrer dans un état vierge, déploie l'exploit et réessaie lorsque c'est nécessaire.
Une exploitation réussie crée un environnement root temporaire. J'ai vérifié le contexte de sécurité depuis un shell ADB plutôt que de considérer la seule fin d'exécution du script comme une preuve :
adb shell
su
id
Le contexte racine est éphémère et est perdu au redémarrage. Ce comportement est important : cette étape est une primitive d'activation pour le downgrade, pas le mécanisme de persistance final ni le déverrouillage du bootloader lui-même.
L'exécution réussie a affiché uid=0, a fait passer SELinux en mode permissif pour l'environnement temporaire, a monté le su temporaire et a désactivé les paquets OTA de Fire OS gérés par l'outil.

La trace complète de l'exploit GhostLock est conservée comme preuve à l'appui.