Le blog des décideurs du digital sur toutes les tendances tech, architecture, organisation et produit

Une CI expose des milliers de données d’authentification au grand jour

Les hackers peuvent récupérer des données d’authentification de projets (accéder au code ou à la base de données de sites web par exemple). Cela leur permet alors de modifier le comportement des softwares à leur avantage, ou d’accéder à des données confidentielles.

Pour cela, ils passent par Travis CI. On vous explique.

⚙️ Situation

Travis CI est un service d'intégration continue, qui facilite l’automatisation des tests ou des déploiements par exemple. Or, ce que l’on va vous expliquer dans cette newsletter, c’est que Travis expose une API qui permet d’accéder à plusieurs dizaines voire centaines de milliers de secrets d’utilisateurs. Ce qu’on entend par secret peut être par exemple un token GitHub, un identifiant de compte AWS ou un mot de passe de bases de données.

Que se passe-t-il exactement ?

🕵️ Explication de la faille

Pour mettre en place Travis CI sur un projet, il faut fournir des secrets, par exemple des token GitHub pour que Travis puisse lire le code du projet, ou des credentials pour pouvoir communiquer avec une base de données.

Les contributeurs à un projet peuvent décider de logger des informations (pour l’historique ou le debug). Le contenu de ces logs est libre. Travis possède une API qui permet de lire ces logs depuis 2013. Or, une partie de ces logs (ceux des comptes free-tiers) est accessible en clair sans avoir à s’authentifier. Et certains de ces logs peuvent contenir des secrets, comme leur contenu est choisi par les contributeurs aux projets. L’entreprise Aqua qui a ainsi découvert la faille a trouvé facilement plus de 70 000 secrets en clair en ne regardant que 1% des logs existants.

Une personne malintentionnée peut donc parcourir ces logs et finir par trouver des secrets. En fonction des secrets loggés, elle peut par exemple implanter un malware dans le code d’un projet, ou obtenir des accès à d’autres comptes.

Schéma Travis

La première correction de Travis a été de remplacer dans les logs les termes secrets par “[secure]”. Cependant, pour pouvoir détecter ce qui est secret ou non, ils ont établi une liste de termes à remplacer (contenant par exemple “github_token”). Mais cette liste, bien qu’elle réduise les risques, ne peut pas être exhaustive (un token github peut se trouver derrière le terme “github_token”, mais aussi “github_secret”, “gh_token”, “github_api_key”…). En parallèle, Travis a également changé le rate limiting de l’API pour réduire la fréquence à laquelle un utilisateur peut effectuer des calls et ainsi complexifier les attaques. Enfin, Travis indique que c’est à ses utilisateurs de veiller à la sécurité de leur installation et leur fournit une liste de recommandations à suivre.

Le fait de ne pas avoir à s’authentifier pour accéder aux logs des utilisateurs free tiers est voulu par Travis. Si nous n’avons pas trouvé d'explication claire de cette décision, nous supposons qu’elle vise à faciliter les intégrations dans le cas des projets Open Source.

🛡 Comment se protéger ?

En tant qu’utilisateur de Travis :

  • Utiliser un outil tel que Aqua Trivy ou gitleaks pour vérifier que vos projets ne contiennent pas de secrets accessibles, et s’il y en a, supprimer immédiatement les logs associés et désactiver les secrets
  • Ne pas afficher d’éléments secrets dans les logs
  • Modifier régulièrement les secrets de vos comptes
  • Donner le moins de privilèges possible aux tokens et autres credentials

En tant que développeur d’une API :

  • Assurer le bon niveau d’authentification et de contrôle d’accès requis pour chaque route de l’API

🏹 Pour aller plus loin

[1] Explication tech de la faille

[2] Explication non tech

[3] Explication complète de la découverte de la faille par l’entreprise Aqua

[4] Recommandations de Travis pour se protéger en tant qu’utilisateur

[6] Aqua Trivy pour vérifier que des secrets ne sont pas accessibles

[7] Article de 2019 détaillant cette vulnérabilité

 

Nous avons pour ambition de sécuriser le web, et pour atteindre cet objectif, nous avons besoin de vous ! Si vous avez des questions, des suggestions ou le moindre doute, n'hésitez pas à contacter notre équipe sécurité par mail security@theodo.fr.

Topics: Sécurité