Des acteurs de la menace ont été découverts en train de violer des comptes AWS à l’aide de secrets d’authentification divulgués en texte brut dans des objets d’artefact Atlassian Bitbucket.
Le problème a été découvert par Mandiant, qui enquêtait sur une récente exposition de secrets Amazon Web Services (AWS) que les acteurs de la menace utilisaient pour accéder à AWS.
Bien que le problème ait été découvert dans le cadre d’une enquête, il illustre comment des données précédemment considérées comme sécurisées peuvent être divulguées en clair dans des référentiels publics.
Variables sécurisées de BitBucket
Bitbucket est un référentiel de contrôle de version Web compatible Git et un service d’hébergement géré par Atlassian, offrant aux développeurs une plate-forme de gestion de code et de collaboration.
Bitbucket Pipelines est un service intégré de livraison/déploiement continus (CI / CD) qui automatise les processus de génération, de test et de déploiement.
Les administrateurs système relient souvent les pipelines directement à AWS pour un déploiement rapide des applications et pour accéder aux ressources à l’aide de l’interface de ligne de commande AWS, des kits SDK et d’autres outils AWS.
Pour faciliter cette automatisation, Bitbucket permet aux développeurs de stocker des informations sensibles, telles que des secrets d’authentification AWS, dans des « Variables sécurisées » pour utiliser facilement ces variables dans leur code sans exposer les clés à d’autres personnes.
Lorsqu’une variable est définie comme sécurisée dans BitBucket, elle est stockée sous forme cryptée pour empêcher l’exposition publique de ses valeurs dans l’environnement Bitbucket.
« Vous pouvez sécuriser une variable, ce qui signifie qu’elle peut être utilisée dans vos scripts mais que sa valeur sera masquée dans les journaux de construction (voir l’exemple ci-dessous) », explique la documentation de Bitbucket.
« Si vous souhaitez modifier une variable sécurisée, vous pouvez uniquement lui attribuer une nouvelle valeur ou la supprimer. Les variables sécurisées sont stockées sous forme de valeurs cryptées. »
Cependant, Mandiant a découvert que les objets d’artefact générés lors de l’exécution du pipeline peuvent contenir des informations sensibles, y compris des variables sécurisées en texte brut. Comme les développeurs peuvent ne pas savoir que ces secrets sont exposés dans des fichiers d’artefacts, le code source peut être publié dans des référentiels publics où les acteurs de la menace peuvent les voler.
Secrets en texte clair
Les artefacts sont définis dans les pipelines bitbucket.fichier de configuration yml utilisé pour spécifier les processus CI / CD d’un projet Bitbucket.
L’une des directives de ces fichiers est artefacts:, qui sont utilisés pour spécifier des variables, des fichiers et des répertoires qui sont exportés vers des objets artefacts à conserver et à utiliser dans les étapes ultérieures du processus de génération et de test.
Mandiant indique qu’il est courant que les développeurs utilisent la commande printenv pour stocker tous les fichiers d’environnement dans un fichier texte, qui est ensuite transmis à un objet artefact pour les étapes futures du processus de génération.
Cependant, cela entraînera l’exportation des « variables sécurisées » en texte brut vers le fichier d’artefact plutôt que sous sa forme cryptée.
Si ces fichiers d’artefacts sont ensuite stockés dans un emplacement public, un auteur de menace peut simplement ouvrir le fichier texte et afficher toutes les variables en texte brut, volant facilement des secrets d’authentification qui peuvent être utilisés pour voler des données ou effectuer d’autres activités malveillantes.
« Mandiant a vu des cas dans lesquels les équipes de développement utilisaient des artefacts Bitbucket dans le code source de l’application Web à des fins de dépannage, mais, à l’insu des équipes de développement, ces artefacts contenaient des valeurs en texte brut de clés secrètes », lit-on dans le rapport.
« Cela a entraîné l’exposition des clés secrètes à l’Internet public où elles se trouvaient, puis leur exploitation par des attaquants pour obtenir un accès non autorisé. »
Une autre possibilité selon Mandiant est une mauvaise configuration des pipelines bitbucket.fichier yml ‘ qui définit le pipeline CI/CD, pour inclure des variables sécurisées dans des journaux ou des artefacts.
Lorsque les scripts de pipeline enregistrent des variables d’environnement à des fins de débogage, ils peuvent involontairement enregistrer des informations sensibles, et comme ces journaux sont généralement stockés dans des emplacements accessibles, il existe à nouveau un risque d’exposition secrète.
Conseils d’atténuation
Mandiant rappelle aux développeurs que Bitbucket n’a pas été conçu pour gérer les secrets, suggérant qu’un produit dédié et spécialisé est utilisé à cette fin à la place.
Il est également recommandé aux développeurs d’examiner attentivement les artefacts pour s’assurer qu’aucun secret en texte brut n’est contenu dans les fichiers générés.
Enfin, il est conseillé de déployer l’analyse du code sur l’ensemble du cycle de vie du pipeline pour détecter les événements d’exposition secrets et les supprimer avant que le code n’atteigne la production.