Brecha cachée des identifiants actifs SPA exposés dans les paquets JavaScript

Publié 8 min de lectura 125 lecture

Les clés API filtrées ont longtemps cessé d'être une anecdote; cependant, la taille réelle du problème lorsque ces identifiants apparaissent dans le code front-end - en particulier dans les paquets JavaScript - est restée largement invisible jusqu'à des études récentes. Une équipe technique a développé une nouvelle technique de détection des secrets et l'a appliquée à des millions d'applications avec un objectif clair : analyser les dispositifs déployés en production, pas seulement le code source. La constatation était forte et montre un écart inquiétant dans la chaîne de sécurité des applications d'une page (SPA).

En appliquant cette méthodologie à l'échelle, les chercheurs ont généré un volume impressionnant de résultats : le fichier de sortie occupait plus de 100 Mo de texte plat et contenait des dizaines de milliers de jetons exposés qui pouvaient correspondre à des références réelles. Concrètement, le scan priait pour l'émergence de milliers de secrets différents, distribués en centaines de types différents, et beaucoup d'entre eux n'étaient pas des clés de test ou des jetons inactifs; ils étaient des références avec une autorisation réelle sur les services en production. Cette différence entre « clé expirée » et « titre actif avec accès » marque la gravité de la constatation.

Brecha cachée des identifiants actifs SPA exposés dans les paquets JavaScript
Image générée avec IA.

Parmi les expositions les plus nuisibles figuraient des jetons de plateformes de dépôt comme GitHub ou GitLab. Ces références, lorsqu'elles sont actives et avec des permissions étendues, donnent la clé d'entrée au code et aux pipelines, et peuvent donner accès à des secrets supplémentaires utilisés dans les intégrations CI / CD, stockage en nuage et les clés SSH. Ils sont également apparus clés pour les outils de gestion de projet qui vous permettent de voir les tickets internes et les métadonnées organisationnelles, le chat actif et les livres Web d'automatisation (y compris des dizaines de Slack et Zapier), les API logicielles CAO avec des informations sensibles sur le projet, les services de conversion de documents, les plateformes de renseignement commercial et les raccourcis de liens qui vous permettent de créer et de lister des URL potentiellement dangereuses.

Comment tout cela est-il possible d'atteindre les faisceaux de production visibles? La réponse est dans une combinaison de défaillances dans le cycle de vie du logiciel et dans les limites des outils de sécurité habituels. De nombreuses organisations comptent sur des scanners fonctionnant sur des dépôts ou sur l'analyse statique du code source (SAST). Ces outils sont précieux et détectent les identifiants encodés directement dans les fichiers du dépôt, mais ils ne couvrent pas toujours ce qui se passe par la suite: le processus de construction et de déploiement peut introduire, transformer ou mélanger des artefacts de sorte que les routes par lesquelles certains secrets entrent ne correspondent pas à ce qui est inspecté dans le contrôle de code.

D'autre part, les scanners d'infrastructure traditionnels ou de nombreux modèles de détection automatique font des analyses très simples: ils demandent une URL de base, inspectent la réponse directe et appliquent des expressions régulières à la recherche de modèles connus. Cela fonctionne dans de nombreux cas, mais il a une limite évidente: il n'exécute pas le JavaScript de la page ou de télécharger les paquets que le navigateur charge pour rendre un SPA. Par conséquent, les fichiers emballés contenant des jetons peuvent rester en dehors de la portée de ces vérifications.

Il existe des outils conçus pour la numérisation dynamique (DAST) qui peuvent exécuter un navigateur sans tête, authentifier et passer par l'application plus en profondeur, et donc détecter des vecteurs que les scanners statiques ou d'infrastructure n'atteignent pas. Cependant, DAST est souvent plus coûteux, complexe à configurer et, dans la pratique, s'applique à un petit nombre d'applications considérées comme de grande valeur. Le maintien d'un DAST complet pour l'ensemble du parc d'applications d'une entreprise est rare, et en outre de nombreuses implémentations n'ont pas toutes les signatures ou expressions régulières nécessaires pour identifier la variété de secrets qui peuvent apparaître.

Un exemple pratique de limitations actuelles est le modèle de détection de jetons personnels GitLab dans les dépôts ProjectDiscovery pour Nuclei. Ce modèle suppose une URL de base, vérifie la réponse initiale et, si vous trouvez un modèle qui ressemble à un jeton, fait un appel à l'API publique pour confirmer si elle est active. C'est une logique efficace dans des contextes spécifiques, mais elle ne remplace pas la capacité d'analyser toutes les ressources qu'une page charge en visitant un vrai navigateur, comme les paquets de JavaScript qui contiennent souvent les secrets après la construction (exemple du dépôt: Modèle Nuclei pour jetons personnels GitLab).

Cela laisse ouvert une zone aveugle que ni les scanners de dépôt ni beaucoup de scanners d'infrastructure ne couvrent, et que DAST ne s'adresse que s'il est déployé à grande échelle. La conséquence est que les secrets introduits pendant la phase de construction ou par des pipelines de déploiement peuvent se retrouver dans des artefacts de production sans les contrôles de "gauche" (ceux qui poussent la sécurité aux premiers stades tels que le développement et le dépôt) les détecter.

Dans ce contexte, la solution n'est pas d'abandonner les pratiques existantes, mais de les compléter. Des contrôles précoces dans le cycle de développement et l'intégration de la numérisation secrète dans les dépôts et dans les environnements CI / CD restent essentiels - pour une raison ou une autre, les organismes de référence recommandent la gestion secrète et la détection précoce. L'OWASP, par exemple, propose des guides sur la façon de gérer les secrets et de réduire les risques d'exposition dans les environnements de développement et de production ( Gestion des secrets de l'OWASP Feuille de chaleur).

Mais, en outre, il est nécessaire d'inspecter les derniers artefacts qui atteignent le web: scanner les paquets JavaScript publiés, simuler l'exécution du SPA avec un navigateur automatisé pour télécharger les ressources que le client utilise réellement, et vérifier qu'il n'y a pas de jetons exposés ou de paramètres sensibles. Les outils de numérisation qui analysent les fichiers livrés en production et effectuent l'araignée SPAs aident à combler cette lacune. En outre, les plates-formes de dépôt public ont développé des fonctions de détection secrète qui devraient être activées; GitHub, par exemple, offre des services intégrés de numérisation secrète pour alerter les fuites dans les communs et les dépôts ( Documentation de GitHub sur la numérisation secrète).

Au niveau des bonnes pratiques opérationnelles, la recommandation vise à minimiser les risques en limitant les permis (le principe de moins de privilège), la rotation automatique des engagements clés et l'adoption de systèmes de gestion secrète dans lesquels les pouvoirs ne font jamais partie du code source ou des dispositifs statiques. Il convient également d'examiner l'utilisation des jetons par des tiers, de limiter leur portée et de vérifier qui et ce qui les utilise. Pour des jetons spécifiques de plates-formes comme GitLab, il existe une documentation sur l'utilisation et les limitations des jetons d'accès personnels qui aide à concevoir des autorisations plus sûres ( GitLab: Jetons d'accès personnels).

Brecha cachée des identifiants actifs SPA exposés dans les paquets JavaScript
Image générée avec IA.

Le risque tend à augmenter à mesure que les flux de travail sont automatisés et que l'utilisation du code généré par l'IA dans les pipelines augmente : si les validations passent à des processus automatiques sans contrôle adéquat, des références valides peuvent être insérées dans des dispositifs sans examen humain suffisant. C'est pourquoi la stratégie devrait inclure la numérisation non seulement du code source mais aussi des paquets et des paquets qui atteignent les clients, et des contrôles automatisés intégrés pendant la phase de construction pour détecter et bloquer les secrets avant le déploiement.

La leçon est claire : la sécurité du front n'est pas limitée aux politiques appliquées dans le dépôt. La fenêtre qui s'ouvre dans la construction et la livraison des artefacts doit être fermée. Les outils qui combinent l'analyse statique, dynamique et la navigation réelle et la numérisation des appareils déployés permettent de détecter des problèmes qui autrement seront clairs jusqu'à ce qu'un attaquant les trouve. Pour les organisations disposant de grands parcs d'applications, l'alternative est de risquer les titres de compétences critiques restant visibles dans la production et, par conséquent, d'une voie d'accès opportuniste pour les acteurs malveillants.

Si vous voulez aller au travail qui aborde spécifiquement ce problème à grande échelle ou des solutions commerciales qui intègrent déjà la détection secrète dans les paquets SPA, les recherches publiées par les équipes qui étudient ce phénomène et les pages des fournisseurs de sécurité offrent des ressources utiles pour comprendre la portée et l'atténuation. En plus des guides et des fonctions de dépôt de l'OWASP, examiner les pratiques de gestion secrète et évaluer l'inclusion d'objets scannés dans votre pipeline sont des mesures pratiques et urgentes pour réduire l'exposition.

Couverture

Autres

Plus de nouvelles sur le même sujet.