6 points par GN⁺ 2025-03-01 | Aucun commentaire pour le moment. | Partager sur WhatsApp

« Bien sûr, Firebase était (en partie) en cause »

  • Lors du téléchargement de l’installateur de l’éditeur IA Cursor, il a été constaté via le pare-feu Lulu qu’une connexion vers ToDesktop était tentée
    • ToDesktop est un service qui fournit le packaging d’apps Electron, un SDK, les mises à jour, etc.
  • Après avoir confirmé que l’app utilisait Firestore, une première enquête sur Firebase a été lancée via les outils de développement
    • Firebase : plateforme backend pour applications fournie par Google, qui prend en charge le stockage et le traitement des données côté client via la base NoSQL Firestore
  • En utilisant les outils de développement (DevTools) et les source maps, les collections utilisées dans Firestore ont été examinées
  • Une collection nommée temporaryApplications a été découverte, mais il ne s’agissait que d’une ancienne liste sans informations sensibles (elle n’avait pas été mise à jour depuis 2022)
  • Il a été confirmé que la majeure partie de la logique principale et du déploiement passait par le package npm @todesktop/cli
  • @todesktop/cli disposait lui aussi de source maps, ce qui a permis de reconstituer la structure du code source original avec sourcemapper

Examiner le CLI de ToDesktop

  • Le CLI de ToDesktop gère les fonctions principales comme le déploiement d’apps et l’envoi du code source
  • En analysant les source maps du CLI, une vulnérabilité a été découverte : elle permettait d’abuser de la Firebase Cloud Function getSignedURL pour tenter des uploads S3 arbitraires, même s’il semblait difficile de trouver des chemins de fichiers réellement utiles

Détourner le pipeline de déploiement via un script postinstall

  • Objectif : obtenir des droits d’exécution de code dans le conteneur (serveur) où le build s’exécute
  • Une charge utile de reverse shell a été ajoutée au script postinstall du package.json, ce qui a permis de recevoir une connexion depuis le conteneur de build
  • L’accès à l’intérieur du conteneur a été obtenu avec succès, ce qui a permis d’examiner la structure de l’environnement de build et des fichiers importants
  • Le fichier config.json.encrypted a été identifié, puis la méthode de déchiffrement a été retrouvée afin d’extraire les vrais secrets (config.json)
  • En complément, une clé Firebase Admin (dotée de privilèges étendus) a aussi été trouvée à l’intérieur

Post-exploitation

  • Cette vulnérabilité permettait de déployer librement des mises à jour d’apps, avec exécution immédiate de code malveillant dès que l’utilisateur redémarrait l’application
  • Une mise à jour a effectivement été déployée sur une app de test, et une RCE (exécution de code à distance) a été reproduite côté client

Portée de l’impact

  • Comme il était possible de déployer des mises à jour malveillantes sur toutes les apps utilisant ToDesktop, le problème pouvait potentiellement affecter des millions d’utilisateurs
  • Exemples d’apps mentionnées :
  • Comme beaucoup de leurs utilisateurs travaillent dans l’IT et la tech, les dommages potentiels en cas d’attaque pouvaient être importants

The fix

  • Après le signalement, le contact avec ToDesktop a été pris immédiatement afin de lancer la résolution
  • ToDesktop a corrigé rapidement le problème et a accordé une récompense supplémentaire
  • L’architecture a été modifiée afin que les opérations sensibles, comme la signature et l’upload, soient effectuées dans un conteneur sidecar disposant de privilèges séparés du conteneur de build
  • Le rapport officiel de ToDesktop sur l’incident de sécurité est disponible ici
  • Un incident de sécurité peut arriver à n’importe quelle entreprise, mais l’essentiel est la manière de réagir ; ToDesktop a laissé une impression positive grâce à une réponse rapide et coopérative

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.