- Environ 30 fichiers de l’interface web d’administration du firmware des caméras Hanwha Vision contenaient le même token GitHub, qui disposait de droits administrateur sur des centaines de dépôts de l’organisation
- Le
fwupgraderdu firmware reconstituait une clé AES codée en dur en la combinant par XOR avec une table statique, puis déchiffrait le système de fichiers racine avecopenssl; la clé et l’IV étaient partagés par toute la même famille de modèles - Comme une variable de build Vite était configurée sur l’intégralité de
process.env, les variables d’environnement du job CI ont été inscrites dans l’artefact final, ce qui a inclusGITHUB_NPM_TOKENainsi que plusieurs configurations internes dans le firmware de la caméra - En examinant environ 500 firmwares de la même manière, 62 % ont pu être extraits ; les 3 firmwares où un token GitHub a été trouvé contenaient tous le même token
- Hanwha a révoqué le token en moins de 12 heures après le signalement, mais une configuration qui injecte tout l’environnement CI dans les artefacts clients peut exposer des identifiants et des informations sur l’infrastructure interne dans le produit
Obtention du firmware et première couche de chiffrement
- Le site de Hanwha Vision publiait les images de firmware par modèle de caméra, ce qui permettait de télécharger les fichiers pour les analyser
- L’examen de l’image avec
binwalka révélé une archive tar distincte contenant des composants IA pour la caméra, ainsi qu’unfwimage.tgzchiffré - En suivant l’analyse de Matt Brown sur le déchiffrement du firmware Hanwha, le mot de passe utilisé combinait
HTWet le numéro de modèle- Dans l’échantillon analysé,
HTWXNP-9300RWfonctionnait
- Dans l’échantillon analysé,
- À l’intérieur de la tarball extraite se trouvait un autre
fwimage.tgz, chiffré différemment, si bien qu’il n’était pas possible de réutiliser telle quelle la procédure de déchiffrement existante
Reconstitution du procédé de déchiffrement dans fwupgrader
- Le binaire
fwupgraderinclus dans la tarball externe a été analysé avec Ghidra et Claude Code afin d’extraire le véritable système de fichiers racine fwupgraderutilisait une obfuscation destinée à masquer le procédé de déchiffrement- La clé AES était reconstituée à l’exécution après XOR avec une petite table de clés statique présente dans le binaire
- L’IV était présent en clair dans le binaire
- Des fragments de commande
opensslétaient également obfusqués par XOR de la même manière
- La commande reconstituée avait la forme suivante, en utilisant SHA-256 et AES-256-CBC
openssl enc -md sha256 -aes-256-cbc -d \ -K <KEY> -iv <IV> -in <INPUT> -out <OUTPUT> - La clé et l’IV étaient codés en dur et partagés par la même famille de modèles
KEY = dfa049bb922e63e2decc764af5628068e5b7a2662e479a615b14643e567579b0 IV = 53f926801b81454a4f889c9a390db6e6
Token administrateur GitHub inclus dans le firmware
- L’analyse du système de fichiers racine extrait avec
trufflehoga révélé le même token GitHub en double dans environ 30 fichiers - Ce token disposait de droits administrateur sur des centaines de dépôts appartenant à l’organisation GitHub de Hanwha
- L’interface de la caméra est construite avec Vite, et une variable de build était configurée sur l’ensemble de
process.env, ce qui montre que tout l’environnement du job CI a été inscrit dans les fichiers générésvar W = { DATAPORT: "9090", GIT_LFS_SKIP_SMUDGE: "1", npm_command: "run-script", KUBERNETES_SERVICE_PORT_HTTPS: "443", GITHUB_NPM_TOKEN: "<snip>:ghp_…REDACTED…", npm_config_userconfig: "/home/docker/.npmrc", // etc } - Faute d’avoir la caméra physique, il n’a pas été possible de vérifier le comportement réel
- Le token a pu être transmis sur le réseau à tout utilisateur accédant à l’interface d’administration
- Il reste aussi possible que les fichiers n’aient existé que sur le disque sans être effectivement servis
Adresses DoD présentes dans l’environnement CI
- Parmi les variables d’environnement exposées figuraient aussi des adresses IP attribuées au département de la Défense des États-Unis
SWARM_MASTER_NFS_ADDRESS:55.101.212.23OTEL_ELASTIC_URL:http://55.101.212.21:5601/<snip>CIMIP:55.101.211.213
- Il n’a pas été possible de déterminer s’il s’agissait d’adresses utilisées arbitrairement pour des services internes non connectés à l’extérieur, ou si elles découlaient d’une relation entre Hanwha et le département de la Défense des États-Unis
- Hanwha Vision est une entreprise de vidéosurveillance fondée sous le nom de Samsung Techwin et une filiale du groupe Hanwha
- Parmi ses anciens produits figurent l’obusier automoteur K9 Thunder, le véhicule blindé de ravitaillement en munitions K10, des sous-systèmes du K2 Black Panther et le robot de garde SGR-A1
- Le SGR-A1 est un robot de garde armé
- Il est aussi possible que le CI soit fourni par l’organisation centrale de Hanwha et que des variables associées aient été partagées à la demande de la filiale Hanwha Aerospace ou de Hanwha Defense USA, mais cela reste une spéculation non vérifiée
Analyse de l’ensemble des firmwares
- Afin de vérifier s’il s’agissait d’un cas isolé ou s’il existait d’autres tokens différents, les firmwares de caméras téléchargeables depuis le site de Hanwha ont été collectés
- Sur environ 600 caméras, environ 500 firmwares ont été récupérés pour les modèles où un firmware était disponible
- En appliquant la même méthode, 62 % ont pu être extraits, sans que la cause des échecs sur le reste ait pu être déterminée
- Seuls 3 firmwares contenaient un token GitHub, et ils incluaient tous le même token
Signalement et réponse
- Le minimum d’informations permettant d’identifier l’emplacement du token a été envoyé à l’adresse publique de signalement sécurité de Hanwha
- Hanwha a répondu en moins de 12 heures après le signalement et a révoqué le token concerné
- L’inclusion d’un token GitHub dans le firmware était une erreur, mais la prise en compte du signalement et la résolution ont été très rapides
1 commentaires
Avis sur Hacker News
Je cherche des caméras IP en marque blanche, prises en charge par le fabricant mais dont on peut retirer le rootfs si nécessaire, ou des produits quasi plug-and-play
Avant, il n’y avait que des kits de développement coûteux, parfois même sans boîtier, mais il semble qu’il existe désormais des options comme GoodCam
Les caméras ONVIF sont compatibles avec la plupart des enregistreurs vidéo réseau (NVR), et il existe aussi plusieurs NVR open source
Si l’on n’expose pas des caméras PoE bon marché à Internet, la sécurité du firmware du fabricant est moins critique, mais les VLAN et la segmentation réseau doivent être configurés très soigneusement
La stabilité est comparable à Apple HomeKit, donc pas vraiment excellente
J’ai mis à niveau deux Sonoff Slim Gen2 sans problème
Stránka nenalezenaetThere's been a glitch...Le fait que le firmware contienne en dur une adresse IP du département de la Défense des États-Unis semble être le problème le plus grave, et cela me donne envie d’éviter les produits de sécurité coréens
De nombreux fournisseurs utilisent des valeurs par défaut dangereuses, une sécurité cassée et des valeurs codées en dur
Même si la sécurité n’est pas la priorité absolue, il faut au minimum effectuer des contrôles de base comme la détection d’identifiants codés en dur
Mettre les caméras dans un VLAN séparé et bloquer complètement l’accès Internet de ce VLAN est le minimum à faire
En vérifiant par le passé, j’ai constaté que de nombreux dongles OBD-II étaient livrés avec la même adresse MAC, ce qui permettait d’accéder à toutes les informations de plusieurs sites web
Même si l’on veut éviter ce genre de problème, il finit toujours par se produire
Si le site web utilisait l’adresse MAC fournie par le client comme moyen d’authentification, c’est un échec typique de sécurité IoT
Il vaudrait mieux retirer sécurité du nom du produit et les appeler simplement des caméras
Le mauvais usage de l’icône de lien externe sur ce blog m’agace
a[href*="://"]::aftersuppose que les liens internes sont des chemins relatifs commehref="/about", mais ce site utilise aussi des URL absolues comme[https://hhh.hn/about](https://hhh.hn/about)pour les liens de navigation, ce qui ajoute une icône à tous les liensOn peut corriger cela en excluant les liens qui commencent par l’adresse du site :
a[href*="://"]:not([href^="https://hhh.hn"])::afterL’éclairage d’ambiance d’intérieur que j’ai acheté récemment ne pouvait pas être contrôlé sans son application dédiée
En récupérant l’APK sur le Google Store et en l’analysant, j’ai vu que les clés API du backend et de Shopify, entre autres, y étaient en pratique présentes telles quelles, mais je ne m’en suis pas encore servi pour faire quoi que ce soit
Un développeur soucieux de la sécurité utiliserait App Attest ou l’équivalent du Google Store
Cela dit, pour avoir conseillé des boutiques Shopify, la qualité du code fourni par des consultants ou designers bon marché est souvent désastreuse, donc ce n’est pas surprenant
Il existait une société qui protégeait les chercheurs des conséquences juridiques, mais je ne me souviens plus de son nom
À cause des LLM, l’obfuscation de code est devenue pratiquement inefficace
L’obfuscation ne faisait que rendre le travail pénible, mais l’IA ne se soucie pas de cet effort
Les organisations étatiques ou les groupes de cybercriminels acceptent largement cet effort
J’ai déjà vu ce genre de système dans un salon américain de l’industrie de défense, il y a donc de fortes chances qu’il soit effectivement utilisé quelque part