Analyse de l’infrastructure exposée

Le client mobile de la marque X communique exclusivement avec le domaine api.redacted-telematics.com.au. L’enquête a débuté par le téléchargement et la décompilation de l’APK, ce qui a permis de reconstituer les requêtes HTTP émises par l’application. Le code montre que chaque appel passe par l’URL https://api.redacted-telematics.com.au, confirmant que l’infrastructure télématique est entièrement publique et donc accessible à tout acteur disposant de l’adresse IP.

dartExecutor.executeDartEntrypoint(createDefault, CollectionsKt.r(gson.toJson(new GlobalConfigParams(false, g11, com.redacted.app.xcapp.a.f69866f, "X", str)), new Gson().toJson(new ApiConfig("https://api.redacted-telematics.com.au", "https://api.redacted-telematics.com.au", "https://api.redacted-telematics.com.au" ...

Cette visibilité a facilité la découverte d’un sous‑domaine d’administration (admintool.redacted-telematics.com.au) qui renvoie une page de connexion très basique, mais qui charge un bundle JavaScript complet contenant les clés d’API.

Fonctionnement de l’outil d’administration

Le bundle JavaScript expose plusieurs points d’accès sans authentification supplémentaire : recherche d’utilisateurs par adresse e‑mail, conversion d’une plaque d’immatriculation en VIN via un service public australien, puis transformation du VIN en GUID d’abonné grâce à une API interne. Cette chaîne de requêtes permet d’obtenir les informations d’identification d’un compte (e‑mail) à partir d’une simple plaque d’immatriculation.

Exemple de flux : plaque → VIN → GUID abonné → compte utilisateur (via /v1/account). Aucun jeton d’accès n’est requis pour ces appels, car les clés d’API sont codées en dur dans le JavaScript.

Exposition des identifiants ForgeRock

L’enquête a ensuite ciblé le système d’identité central, basé sur ForgeRock OpenAM/OpenIDM, hébergé sous openidm.redacted-identity.com.au. Dans le même bundle JavaScript, les identifiants administrateur de l’instance OpenIDM ont été découverts, initialement destinés à un environnement de staging mais fonctionnels en production. Ces identifiants permettent d’appeler les API internes de ForgeRock, notamment la création de jetons d’authentification pour n’importe quel utilisateur.

{"username":"admin","password":"SuperSecretPassword123"}

Avec un jeton d’accès valide, l’attaquant peut invoquer les API /api.redacted-telematics.com.au (REST et GraphQL) pour déclencher des actions à distance sur le véhicule : déverrouillage, verrouillage, activation du klaxon ou du moteur.

Limites et contre‑mesures

Malgré la présence d’un WAF Nginx qui bloque les requêtes directes vers /openidm/, les clés d’administration intégrées dans le bundle contournent cette protection, car elles sont utilisées côté client avant que le WAF n’intervienne. Le principal vecteur d’attaque repose donc sur la fuite de ces secrets dans le code front‑end. La mitigation immédiate consiste à retirer les clés du bundle, à restreindre l’accès aux API d’identité à des réseaux internes et à appliquer une authentification forte pour toute opération sensible. À plus long terme, la séparation stricte entre les environnements de staging et de production et la mise en place de scans automatisés de secrets dans les artefacts JavaScript sont essentielles pour éviter la récurrence de ce type de faille.