
CVE-2025-1242 : chaîne de connexion iothubowner codée en dur — Gardyn Home Kit (ICSA-26-055-03)
| Champ | Valeur |
|---|---|
| CVE | CVE-2025-1242 |
| ICSA | ICSA-26-055-03 |
| CVSS 3.1 | 9.1 (Critique) |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| CWE | CWE-798 (Utilisation d'identifiants codés en dur) |
| Chercheur | Michael Groberman — Gr0m |
| Publié | 2026-02-24 |
| Champ | Valeur |
|---|---|
| Fournisseur | Gardyn |
| Produit | Gardyn Home Kit 1.0, 2.0, 3.0, 4.0 ; Gardyn Studio 1.0, 2.0 |
| Composant | API cloud, application mobile, firmware de l'appareil |
| Versions affectées | Firmware < master.622, Application mobile < 2.11.0, API cloud < 2.12.2026 |
L'identifiant administratif Azure IoT Hub (stratégie d'accès partagé iothubowner) est extractible via plusieurs vecteurs, notamment les réponses API non authentifiées, le rétro-ingénierie de l'application mobile et l'analyse du firmware de l'appareil. Cet identifiant accorde un contrôle administratif sur le Gardyn IoT Hub, qui gère architecturalement tous les appareils enregistrés.
La stratégie d'accès partagé iothubowner est l'identifiant le plus privilégié d'Azure IoT Hub. Elle accorde :
La documentation Microsoft indique : « La stratégie iothubowner dispose de toutes les autorisations et doit être utilisée avec une extrême prudence. Elle est destinée uniquement à l'administration du service back-end et NE DEVRAIT JAMAIS être distribuée aux clients. »
Une seule chaîne de connexion iothubowner fournit un accès administratif au Gardyn IoT Hub.
L'identifiant a été exposé via plusieurs canaux indépendants :
1. Point de terminaison API non authentifié
Un point de terminaison d'approvisionnement d'appareil non authentifié renvoyait l'identifiant administratif à tout demandeur. Aucune authentification n'était requise. Le point de terminaison était accessible à toute personne sur Internet.
Détails de la requête supprimés — Les chemins d'accès spécifiques des points de terminaison, les noms de champs et les structures de requêtes ont été supprimés de cette divulgation publique pour réduire les possibilités d'attaque.
Le champ d'identifiant administratif a ensuite été supprimé de la réponse de ce point de terminaison (correction partielle), mais le point de terminaison renvoie toujours des identifiants au niveau de l'appareil sans authentification.
2. Point de terminaison d'énumération d'utilisateurs non authentifié
Un point de terminaison de liste d'utilisateurs non authentifié renvoyait des enregistrements complets pour tous les 134 215 utilisateurs enregistrés. Chaque enregistrement incluait l'identifiant administratif — 134 215 copies dans une seule réponse API.
Détails de la requête supprimés — Les chemins d'accès spécifiques des points de terminaison et les noms de champs ont été supprimés de cette divulgation publique pour réduire les possibilités d'attaque.
Ce point de terminaison exposait également des données personnelles sensibles pour tous les utilisateurs, notamment les noms complets, adresses e-mail, numéros de téléphone, numéros de carte de paiement partiels, identifiants utilisateur séquentiels (permettant IDOR), identifiants d'appareil et identifiants de connexion.
Selon CISA ICSA-26-055-03, cette voie d'exposition est corrigée dans les versions de correctif publiées.
3. Application mobile
L'identifiant est intégré dans le bundle de l'application React Native (bytecode Hermes dans index.android.bundle). Il est également distribué via Firebase Remote Config, qui enregistre les identifiants dans le logcat Android dans les versions de débogage.
4. Firmware de l'appareil
La chaîne de connexion est présente dans les fichiers du firmware de l'appareil sous /usr/local/etc/gardyn/ et est enregistrée dans syslog en texte clair lors de l'initialisation.
L'identifiant est exposé depuis au moins mai 2019 (plus de 6 ans selon la disponibilité du point de terminaison API). Le fournisseur a migré d'un IoT Hub antérieur ([REDACTED — nom de l'IoT Hub]) vers le hub actuel ([REDACTED — nom de l'IoT Hub]) mais a réutilisé la même clé d'accès partagé, ce qui signifie que quiconque a capturé l'identifiant pendant la fenêtre d'exposition initiale conserve l'accès.
Le fournisseur a confirmé qu'aucun journal d'accès n'existait sur les points de terminaison concernés, ce qui signifie que l'étendue des accès non autorisés pendant la fenêtre d'exposition de plus de 6 ans ne peut être déterminée.
Le fournisseur a déclaré à CISA qu'aucun journal d'accès n'existait sur les points de terminaison concernés pendant la fenêtre d'exposition. La page de sécurité publique du fournisseur est https://mygardyn.com/security/.
Un attaquant disposant de l'identifiant iothubowner peut :
upgrade() vulnérable à l'injection de commandes (CVE-2025-29631)Combiné avec CVE-2025-29631, cet identifiant permet l'exécution de code à distance en tant que root sur les appareils utilisant les identifiants partagés (vérifié sur l'appareil du chercheur).
Cet identifiant, combiné au nom d'hôte IoT Hub, permettait un accès administratif direct au IoT Hub gérant la flotte d'appareils Gardyn concernée. Les capacités d'un identifiant iothubowner sont documentées par Microsoft (voir Impact ci-dessus et la documentation Azure liée dans Références). CISA a noté cette CVE à CVSS 9.1 (Critique).
Les autres CVE dans ICSA-26-055-03 sont documentées comme des conclusions indépendantes ; l'exposition de cet identifiant est un problème distinct de ces vulnérabilités, bien qu'un attaquant unique disposant de plusieurs conclusions puisse les combiner dans certains scénarios.
La propre documentation de Microsoft indique explicitement : « La stratégie iothubowner dispose de toutes les autorisations et doit être utilisée avec une extrême prudence. Elle est destinée uniquement à l'administration du service back-end et NE DEVRAIT JAMAIS être distribuée aux clients. »
Atténuations recommandées pour les propriétaires d'appareils :
Correction recommandée pour le fournisseur :
iothubownerSignalé par Michael Groberman — Gr0m à CISA.
| Permission | Description | Niveau de risque |
|---|
| RegistryRead | Lire le registre des appareils (énumérer tous les appareils) | ÉLEVÉ |
| RegistryWrite | Modifier le registre des appareils (ajouter/supprimer des appareils) | CRITIQUE |
| ServiceConnect | Envoyer des messages du cloud vers l'appareil | CRITIQUE |
| DeviceConnect | Envoyer des messages de l'appareil vers le cloud (usurper l'identité de tout appareil) | CRITIQUE |
| ServiceInvoke | Invoquer des méthodes directes sur tout appareil | CRITIQUE |
| Service | Objectif |
|---|
| Azure IoT Hub Device Provisioning Service (DPS) | Approvisionnement automatisé d'identifiants par appareil avec certificats X.509 |
| Stratégies d'accès partagé limitées | Stratégies d'accès au moindre privilège (par exemple, device, service, registryRead) |
| Azure Monitor / Diagnostics IoT Hub | Journalisation des accès et détection d'anomalies pour les opérations IoT Hub |
| Date | Événement |
|---|
| 2025-10-14 | Divulgation initiale au fournisseur |
| 2025-12-11 | Divulgation à CERT/CC |
| 2026-01-22 | Rotation de l'identifiant administratif iothubowner Azure IoT Hub (observable : la clé précédemment distribuée a cessé de fonctionner) |
| 2026-02-24 | Publication de ICSA-26-055-03 (initiale) |
| 2026-04-02 | Mise à jour A de ICSA-26-055-03 |