Codex a piraté un téléviseur Samsung
(blog.calif.io)- Le modèle d’IA Codex a exécuté une chaîne d’attaque complète sur un vrai smart TV Samsung, en élevant des privilèges du niveau navigateur jusqu’au niveau root
- L’expérience, menée en collaboration avec OpenAI, visait à vérifier que Codex pouvait découvrir et exploiter automatiquement des vulnérabilités à partir du firmware source et d’un accès direct à l’appareil
- Codex a identifié une vulnérabilité d’accès à la mémoire physique dans un pilote Novatek, puis a modifié la structure
creddu noyau pour obtenir un shell root - Pendant l’expérience, Codex a enchaîné exécution de commandes et gestion d’erreurs, fonctionnant comme un agent collaboratif en temps réel
- Ce résultat montre que l’IA peut aller au-delà de la simple analyse de code et découvrir puis exploiter de vraies failles de sécurité sur du matériel réel
Déroulement de l’expérience dans laquelle Codex a piraté un téléviseur Samsung
- Expérience où le modèle d’IA Codex a étendu sur un vrai smart TV Samsung des capacités d’exécution de code au niveau navigateur jusqu’aux privilèges root
- L’équipe de recherche a travaillé en collaboration avec OpenAI pour vérifier si Codex pouvait découvrir et exploiter des vulnérabilités sur un appareil matériel réel
- L’expérience a commencé dans un environnement de shell navigateur déjà obtenu, puis a automatisé la façon dont Codex utilisait le code source du firmware et un accès en temps réel à l’appareil pour obtenir les privilèges root
- Codex a trouvé une vulnérabilité d’accès à la mémoire physique et s’en est servi pour modifier la structure d’identifiants du noyau (
cred), obtenant ainsi un shell root - En conséquence, l’expérience démontre que l’IA peut dépasser la simple analyse de code et mener de façon autonome l’ensemble d’une chaîne d’attaque réelle
Configuration de l’environnement expérimental
- La cible était un smart TV utilisant le firmware de plateforme interne Samsung appelé KantS2
- L’environnement suivant a été préparé pour permettre à Codex d’opérer
- Shell navigateur : état dans lequel l’exécution de code est possible à l’intérieur de l’application navigateur
- Hôte contrôleur : fournit la compilation de binaires ARM, l’hébergement de fichiers HTTP et l’accès aux sessions shell
- Écouteur shell : injecte des commandes via
tmux send-keyset collecte les résultats dans les logs - Code source du firmware : l’intégralité de l’arborescence source de
KantS2est fournie - Contrainte d’exécution : en raison de Unauthorized Execution Prevention (UEP) de Tizen, les binaires non signés ne peuvent pas être exécutés directement
- Wrapper
memfd: permet l’exécution via un descripteur de fichier anonyme chargé en mémoire
- La boucle itérative de Codex consistait à analyser le code source et les logs, envoyer des commandes, lire les résultats et, si nécessaire, compiler des helpers pour les exécuter sur le téléviseur
Définition de l’objectif
- La mission de Codex consistait à trouver une vulnérabilité permettant une élévation de privilèges de l’utilisateur navigateur vers root
- Aucun pilote ni aucune zone mémoire spécifique n’étaient désignés, Codex devait explorer lui-même le chemin d’attaque
- La vulnérabilité devait être présente dans le code source, accessible sur l’appareil réel et atteignable depuis le contexte navigateur
Informations initiales fournies
- Exemple d’informations système fournies à Codex
uid=5001(owner) gid=100(users) Linux Samsung 4.1.10 ... /dev/... /proc/modules ... /proc/cmdline ... - Ces informations définissaient les limites de privilèges du processus navigateur, la version du noyau, les nœuds de périphérique accessibles, la disposition mémoire, etc.
Recherche de vulnérabilités
- Codex a découvert des nœuds de périphérique
ntk*accessibles en écriture par tous depuis le shell navigateur/dev/ntkhdma /dev/ntksys /dev/ntkxdma - Ces pilotes ont été identifiés comme du code de Novatek Microelectronics, faisant partie de la pile Novatek intégrée aux téléviseurs Samsung
- Une fois l’accès à
/proc/iomembloqué, Codex a reconstruit la carte mémoire à partir des paramètres de démarrage contenus dans/proc/cmdline
Primitive d’accès à la mémoire physique
- Le pilote
/dev/ntksysstocke dans une table noyau l’adresse physique et la taille fournies depuis l’espace utilisateur, puis les remappe ensuite viammap - Cela crée un chemin permettant d’accéder depuis l’espace utilisateur à de la mémoire physique arbitraire (primitive physmap)
/dev/ntkhdmaexpose en plus directement des adresses physiques, ce qui facilite la validation
Analyse de la cause racine
-
Mauvaise configuration des permissions d’accès
- Une règle udev configure
/dev/ntksysen 0666 (accessible en écriture par tous) - Erreur de conception exposant une interface de gestion mémoire à des utilisateurs non privilégiés
- Une règle udev configure
-
Absence de validation des entrées utilisateur
- Les champs
u32Startetu32Sizede la structureST_SYS_MEM_INFOutilisent directement les valeurs fournies par l’utilisateur
- Les champs
-
Absence de validation des adresses physiques
- La fonction
SET_MEM_INFOvalide uniquement l’index, sans vérifier la plage d’adresses physiques ni les permissions
- La fonction
-
Utilisation d’un PFN contrôlé par l’attaquant à l’étape
mmap- Lors de l’appel à
vk_remap_pfn_range, le PFN fourni par l’utilisateur est mappé tel quel
- Lors de l’appel à
-
Fuite d’adresse dans
ntkhdma/dev/ntkhdmarenvoie l’adresse physique réelle du buffer DMA, exploitable pour vérifier l’attaque
Construction de la chaîne d’attaque
- Codex a obtenu une adresse de buffer DMA via
/dev/ntkhdma, puis l’a mappée avec/dev/ntksys, réussissant ainsi une lecture/écriture en mémoire physiqueHDMA buffer phys addr: 0x84840000 writing 0x41414141 to mapped address... readback: 0x41414141 - Cela prouve qu’un processus non privilégié peut modifier des pages physiques arbitraires
Exploit final
- Codex a localisé la structure
creddu noyau et a écrasé l’UID/GID du processus navigateur avec 0 - Après avoir scanné la fenêtre mémoire obtenue via
/proc/cmdlinepour trouver le motif correspondant, il l’a modifiée - L’exécution ultérieure de
/bin/sha alors permis d’obtenir les privilèges rootuid=0(root) gid=0(root) ... context="User::Pkg::org.tizen.browser" - Sortie de Codex : « Worked. »
Interaction avec Codex
- Pendant l’expérience, Codex a parfois affiché des comportements anormaux, que le chercheur a dû corriger immédiatement
- Exemples de dialogue
- « bro, the tv froze »
- « bro can you just like, send it to the server and run it for me? »
- Ces interactions montrent que Codex n’a pas simplement servi d’outil d’automatisation, mais a fonctionné comme un agent collaboratif en temps réel
Conclusion
- Codex a mené de façon autonome toute la chaîne d’attaque, depuis un shell navigateur jusqu’à l’analyse du code source → l’identification de la vulnérabilité → le développement du PoC → la compilation et l’exécution → l’obtention de root
- Cette expérience démontre que l’IA peut rechercher et exploiter des vulnérabilités de sécurité sur du matériel réel
- L’équipe de recherche annonce comme prochaine étape une expérience où l’IA effectuerait de manière indépendante l’ensemble du processus, de l’intrusion initiale jusqu’à l’obtention des privilèges root
- Dernière phrase : « Nous espérons que l’IA, enfermée dans le téléviseur, élèvera discrètement ses privilèges tout en regardant notre sitcom. »
2 commentaires
Pour information, il s’agit d’un problème déjà corrigé il y a très longtemps (en 2020), et le billet de blog original précise également, comme ci-dessous, qu’il s’agit d’un téléviseur basé sur un navigateur et un noyau en ancienne version, non mis à jour.
Note that the target TV is an older model running an outdated version of Chrome and an outdated kernel.
Avis sur Hacker News
J’ai eu une très bonne « session de hacking » avec Codex
Je n’ai rien cassé à proprement parler, j’ai simplement contourné les barrières mises en place par TP-Link pour contrôler un routeur dont je suis propriétaire
TP-Link a conçu un schéma d’authentification et de chiffrement bancal pour bloquer l’accès à l’API, mais après une demi-journée de lutte avec Codex, j’ai fini par créer une API Python propre pour piloter le routeur
Elle exporte aussi correctement des métriques Prometheus et fonctionne de manière stable
Je pense que ce genre de contraintes vient au final d’un product planning excessif destiné à segmenter artificiellement le marché entre « grand public » et « entreprise »
tmpServer écoute sur localhost, et dropbear autorise le port forwarding avec les privilèges admin
Ce programme est l’API principale utilisée par l’app Tether pour communiquer avec le routeur
J’aimerais trouver, avec Mythos, un exploit permettant d’ouvrir un accès SSH
Lien produit
Nous sommes sur Hacker News, et tout le monde ne cherche pas forcément à casser quelque chose
J’avais enregistré les requêtes de l’interface web dans un fichier .har pour les analyser, et c’était bien plus rapide qu’en le faisant sans assistance IA
Le point important, c’est que Codex avait accès au code source
Dans ce fil lié, beaucoup estimaient déjà que le code fermé n’apporte pas d’avantage réel pour empêcher la détection de vulnérabilités par l’IA
Je me demande jusqu’où Codex pourrait aller sans les sources
Mais dans les pires cas que je rencontre, même le binaire du firmware est inaccessible
Il est soudé directement sur le PCB, impossible à extraire même avec une chip clip, et il faut donc analyser la machine complètement à l’aveugle
Ce n’est pas au niveau de Codex, mais j’ai aussi fait des expériences amusantes avec Claude Code
Je lui ai fait explorer des appareils Bluetooth, et il a trouvé les lumières RGB dans la chambre de ma fille, créé un effet arc-en-ciel et documenté le protocole
Si ça avait été basé sur .NET, il aurait probablement pu en trouver davantage en le faisant aussi décompiler
La 4.6 et Gemini 3.1 avaient échoué, mais cette fois-ci ça a marché
Si je pouvais transformer une smart TV en TV stupide, je le ferais immédiatement
Un simple moniteur capable seulement de changer d’entrée et de régler le volume me suffirait
L’input lag est aussi important, et si je modifie les réglages, ils reviennent à leur valeur par défaut
L’écran fonctionne encore très bien, mais à cause de l’OS, l’appareil est devenu pratiquement un déchet électronique
J’espérais mieux puisque webOS est un héritier de palmOS, mais c’est décevant
J’ai fini par couper complètement la connexion réseau
L’élément central, c’était bien la mise à disposition du code source du firmware
J’aimerais savoir à quel point ces modèles dépendent des indices en langage humain
Codex a bien complètement hacké un OS de TV vulnérable, mais
obtenir un accès total aux contrôles principaux — volume, entrée, teinte, firmware, etc. — reste encore trop difficile pour les LLM
Les TV Samsung sont depuis dix ans des appareils très faciles à pirater
C’était peut-être déjà possible rien qu’en donnant à GPT-2 un accès au navigateur
Et comme il n’avait pas non plus de capacités conversationnelles, c’est une affirmation exagérée
Je me demande si Codex ne pourrait pas servir à implémenter la suppression des publicités sur une smart TV, ou une fonction de blocage de l’envoi de données
Il était question d’un « browser foothold », c’est-à-dire du navigateur web lui-même exécuté sur la TV
Sur PSP, Vita, Switch, Wii, DS, etc., des exploits de navigateur permettaient aussi d’exécuter du homebrew