
Reolink Duo 2 WiFi v1.0.280 - Vulnérabilité d'énumération de comptes
Septembre 2024
CVE: https://www.cve.org/CVERecord?id=CVE-2024-48644
NVD: https://nvd.nist.gov/vuln/detail/CVE-2024-48644
Tenable: https://www.tenable.com/cve/CVE-2024-48644
Une vulnérabilité d'énumération de comptes dans le composant de connexion de la caméra WiFi Reolink Duo 2 (version du firmware v3.0.0.1889_23031701) permet à des attaquants distants non authentifiés de déterminer les comptes utilisateur valides via des tentatives de connexion. Cela peut conduire à l'énumération des comptes utilisateur et potentiellement faciliter d'autres attaques, comme le brute-force des mots de passe. La vulnérabilité provient de la réponse différente de l'application aux tentatives de connexion avec des noms d'utilisateur valides et invalides.
Reolink Duo Wifi v3.0.0.1889_23031701
Reolink Duo 2 WiFi - https://reolink.com/br/product/reolink-duo-wifi/
Cette vulnérabilité peut être reproduite en tentant de se connecter avec des noms d'utilisateur par défaut ou courants. Les réponses distinctes de l'application aux noms d'utilisateur valides et invalides permettent aux attaquants potentiels de discerner les comptes valides. Plus précisément, l'application répond avec password wrong lorsqu'un nom d'utilisateur valide est fourni avec un mot de passe incorrect et login failed lorsqu'un nom d'utilisateur invalide est fourni.
Voici ci-dessous une preuve de concept en trois étapes pour reproduire et démontrer la vulnérabilité :
En accédant à la page de connexion, on observe que le champ du nom d'utilisateur est automatiquement rempli avec admin. Cela indique que admin peut être un nom d'utilisateur par défaut.

Lorsqu'un mot de passe incorrect est utilisé, l'application répond avec un tableau JSON contenant un objet. Dans cet objet, la propriété error inclut un autre objet avec deux propriétés : detail et rspCode. La propriété detail retourne spécifiquement le message password wrong.


Lorsqu'un nom d'utilisateur invalide est utilisé, l'application répond avec un tableau JSON contenant un objet. Cet objet inclut une propriété error, qui elle-même contient un autre objet avec deux propriétés : detail et rspCode. Dans ce cas, la propriété detail retourne le message login failed, indiquant que le nom d'utilisateur n'existe pas.


Pour atténuer cette vulnérabilité d'énumération de comptes, il est recommandé d'implémenter un message d'erreur générique pour toutes les tentatives de connexion échouées, quelle que soit la raison. Cela signifie que, que le nom d'utilisateur soit valide ou non, ou que le mot de passe soit correct ou non, l'application doit toujours retourner un message générique comme Invalid username or password. Cela empêche les attaquants potentiels de distinguer les noms d'utilisateur valides des invalides en fonction des réponses de l'application.
CWE-200: Exposure of Sensitive Information to an Unauthorized Actor
OWASP - 04 Testing for Account Enumeration and Guessable User Account
Découvert par Rosemberg Silva