Rooter une caméra de sécurité avec un MP3
L’histoire du jour est signée Luke M, un hacker qui a découvert comment rooter une caméra avec… du son !
L’appareil en question est une caméra chinoise de la marque Yi qui utilise une fonctionnalité appelée “Sonic Pairing” pour faciliter la configuration WiFi. Comme ça, au lieu de galérer à taper votre mot de passe WiFi sur une interface minuscule avec vos gros doigts boudinés, vous jouez simplement un petit son depuis votre téléphone et c’est ce son qui contient votre clé WiFi encodés en modulation de fréquence. La caméra écoute, décode, et se connecte.
Magique, non ?
Sauf que cette fonctionnalité marquée en “beta” dans l’app Yi IoT contient deux bugs magnifiques : une stack overflow local et un global overflow. En gros, en fabriquant un fichier audio malveillant avec les bons patterns, Luke a pu injecter du code arbitraire dans la caméra, ce qui lui permet d’obtenir un shell root qui se lance via la commande telnetd avec les identifiants par défaut. Tout ça, sans accès physique… juste la lecture d’un wav ou d’un MP3.
Pour arriver à ses fins, Luke a utilisé Frida , un framework de hooking que j’adore, capable d’intercepter les fonctions natives de l’app. Cela lui a permis de remplacer les données légitimes attendues par l’app par son propre payload.
Le premier bug (stack overflow) n’étant pas suffisant seul, Luke a dû utiliser un autre bug (
un out-of-bounds read via DOOM
) pour leaker un pointeur et contourner l’
ASLR
. Mais le second bug (global overflow) est bien plus intéressant puisqu’il lui permet directement de faire une injection de commande via system() lors du pairing, sans avoir besoin d’autre chose.
Voici la waveform utilisée par le second exploit
Et comme la chaîne que vous pouvez envoyer via le son peut faire jusqu’à 128 bytes c’est largement suffisant pour un telnetd ou n’importe quelle commande shell. Notez que pour que l’exploit marche, le bind_key doit commencer par ‘CN’, ce qui force un path exploitable et, en bonus fait causer la caméra en chinois ^^.
Après faut savoir que ce hack amusant ne fonctionne que si la caméra n’est pas encore connectée au cloud. Donc c’est pas très utile pour attaquer des caméras déjà déployées mais ça illustre bien le problème de tout cet IoT pas cher avec des tas de features “pratiques” comme ce “Sonic Pairing” qui finissent par être catastrophique dans la pratique.
Voilà… si vous voulez les détails techniques complets avec les waveforms et le code d’exploit, foncez lire ça sur Paged Out! #7 .
