Scanner de secrets divulgués
Un scanner de secrets divulgués vérifie si des fichiers et des identifiants qui ne devraient jamais être publics peuvent être récupérés par n’importe qui depuis votre site web : un fichier .env avec des mots de passe de base de données, un dossier .git qui livre tout votre historique de code, une archive de sauvegarde oubliée dans la racine web, ou une vraie clé API dans un bundle JavaScript. Saisissez une URL et ce scanner sonde les chemins d’exposition connus, vérifie le contenu de tout ce qui répond et analyse la page et ses scripts à la recherche de motifs de secrets connus — en ne montrant que des valeurs masquées, jamais le secret lui-même. Le guide associé, fichiers .env exposés et clés divulguées, explique comment ces expositions surviennent et pourquoi supprimer le fichier ne suffit jamais à lui seul. Associez-le au contrôle des en-têtes de sécurité pour le durcissement des réponses et à l’audit des scripts tiers pour les scripts que vous chargez chez d’autres.
Dernière mise à jour:
Vous voulez une surveillance continue ? Surveillez-le gratuitement avec myeventwatch — alertes d’expiration et de panne, sans carte.
Ce qui compte comme exposé — et ce qui ne compte pas
Le scanner sonde une liste publiée de chemins connus — /.env et ses variantes courantes, /.git/HEAD et /.git/config, fichiers de configuration, archives de sauvegarde et fichiers de clés — avec de simples requêtes GET publiques, exactement celles qu’un attaquant, un moteur de recherche ou un visiteur curieux pourrait faire. Un chemin ne compte comme exposé que lorsque le contenu de la réponse correspond à ce que ce fichier devrait réellement être : un fichier env doit pouvoir se lire comme des lignes clé–valeur, un HEAD Git doit ressembler à une référence Git. Beaucoup de serveurs répondent 200 à chaque chemin — replis d’applications monopages, pages d’erreur personnalisées, réécritures attrape-tout — et un 200 contenant le HTML de votre page d’accueil n’est pas une fuite. Ces chemins sont listés séparément dans le résultat comme répondu mais non confirmé, pour que vous jugiez vous-même ; cet outil n’appelle jamais fuite un 200 non confirmé, et aucun scanner que vous utilisez ne devrait le faire.
En plus des sondes de fichiers, le scanner récupère la page elle-même et jusqu’à une quinzaine de ses bundles JavaScript et y cherche des formes de secrets connues : identifiants de clés d’accès au cloud, en-têtes de clé privée, affectations génériques de clés API et de jetons, chaînes de connexion à des bases de données et motifs similaires à fort signal. Le code côté client est public par définition — tout ce qui est envoyé à un navigateur peut être lu par chaque visiteur —, donc un identifiant réel trouvé dans un bundle est exposé même si aucun fichier n’était mal configuré. Les trouvailles sont signalées par type, par fichier source et par nombre d’occurrences, avec la valeur masquée à quatre caractères initiaux au maximum : assez pour que vous reconnaissiez de quelle clé il s’agit, jamais assez pour qu’un lecteur du rapport puisse l’utiliser. Le secret complet n’est jamais récupéré, stocké ni affiché dans ce rapport.
Limites, dites clairement
Il s’agit d’une sonde publique, en lecture seule, de chemins connus, et ses limites font partie du résultat. Elle ne demande que les chemins de la liste publiée — un secret dans un fichier au nom inhabituel ne sera pas trouvé. Elle analyse la page d’arrivée et environ quinze bundles de scripts, pas chaque ressource d’un grand site, et elle ne se connecte pas, n’explore pas derrière une authentification, ne devine pas de noms de fichiers et ne teste rien qui ne soit pas déjà accessible par un GET non authentifié. Les analyses sont limitées à 5 par heure et par visiteur et les résultats sont mis en cache 10 minutes, donc une nouvelle analyse dans cette fenêtre peut montrer le verdict en cache. Une analyse dispose aussi d’un budget de temps : quand une cible lente l’épuise, le résultat est marqué partiel et le dit — traitez un résultat propre partiel comme « pas entièrement vérifié », pas comme « propre ».
Si l’analyse trouve quelque chose, l’ordre du travail compte plus que la vitesse de suppression. Faites d’abord tourner l’identifiant — révoquez la clé exposée et émettez-en une nouvelle — car des copies peuvent déjà exister dans des caches, des archives et des mains étrangères ; supprimer le fichier arrête les nouveaux téléchargements mais ne fait rien pour une clé déjà sortie. Retirez ou bloquez ensuite le fichier sur le serveur, purgez les caches CDN et proxy qui pourraient en garder une copie, et examinez vos journaux d’accès à la recherche de récupérations antérieures du même chemin. L’article associé, fichiers .env exposés et clés divulguées, parcourt dans l’ordre le manuel de la première heure qu’utilisent les attaquants et la séquence complète de récupération.
Les contrôles voisins complètent le tableau : l’audit des scripts tiers couvre les scripts externes que vos pages chargent — un risque de chaîne d’approvisionnement différent de celui de vos propres fichiers divulgués — et le contrôle des en-têtes de sécurité note les protections de navigateur que portent vos réponses. Une note sur la méthode : un résultat propre signifie qu’aucun des chemins sondés n’a répondu avec un contenu correspondant et qu’aucun motif de secret connu n’est apparu dans les fichiers analysés, au moment de l’analyse et depuis la position réseau du vérificateur. C’est une preuve sur ces chemins et ces fichiers, pas une garantie sur tout le serveur — gardez les fichiers hors de la racine web dès le départ et relancez l’analyse après chaque changement de déploiement qui touche ce que votre serveur publie.
La liste de sondes, publiée
| /.env et variantes | Fichiers d’environnement (.env, .env.local, .env.production et similaires) contenant mots de passe de bases de données, identifiants de messagerie et clés API. Confirmé seulement quand le corps se lit comme des lignes clé–valeur. |
| /.git/HEAD et /.git/config | Un dossier .git servi révèle le dépôt : HEAD prouve la structure, config nomme souvent le dépôt distant. Avec les deux, l’historique complet du code peut en général être reconstruit. |
| Fichiers de configuration | Chemins de configuration connus (par exemple sauvegardes de wp-config, copies de config.php et fichiers de configuration de frameworks) qui transportent des identifiants en clair. |
| Fichiers de sauvegarde et d’archive | Dumps de bases de données, archives .zip / .tar.gz du site et copies de sauvegarde d’éditeur laissées dans la racine web — souvent une copie complète du site, identifiants inclus. |
| Fichiers de clés et de certificats | Fichiers en forme de clé privée (.pem, .key, noms de type id_rsa) qui ne devraient jamais être accessibles par le web ; une clé privée servie est à elle seule une trouvaille critique. |
| Bundles JavaScript | La page plus jusqu’à environ 15 bundles de scripts, cherchés pour identifiants de clés cloud, en-têtes de clé privée, affectations de jetons et chaînes de connexion. Les valeurs sont masquées à quatre caractères initiaux au maximum. |
| Règle de confirmation | Une sonde ne compte comme exposée que lorsque le contenu de la réponse correspond à la forme attendue du fichier. Un simple 200 est listé comme répondu-non confirmé et n’est jamais signalé comme fuite. |
| Budget et cache | Sondes GET publiques uniquement, en lecture seule, 5 analyses par heure et par visiteur, résultats en cache 10 minutes. Une analyse qui épuise son budget de temps est marquée partielle. |
Questions fréquentes
L’analyse dit qu’un chemin a « répondu mais non confirmé ». Est-ce une fuite ?
Pas sur cette preuve. Cela signifie que le chemin a répondu avec un HTTP 200 mais que le contenu ne correspondait pas à la forme du fichier sondé — la cause habituelle est une route attrape-tout ou une page de repli qui répond à chaque URL avec votre page d’accueil ou votre coquille d’application. Ouvrez le chemin vous-même dans une fenêtre privée et regardez ce qui revient réellement : si vous voyez le vrai contenu du fichier, traitez-le comme exposé ; si vous voyez votre site normal, c’est le repli.
Le scanner a trouvé une de mes clés. Que faire en premier ?
Faites-la tourner — révoquez l’identifiant exposé et émettez un remplaçant — avant toute autre chose. Les copies d’un fichier public s’échappent vite dans les caches, les archives et les bases des scanners, donc supprimer le fichier ne « dé-divulgue » pas une clé. Retirez ou bloquez ensuite le fichier, purgez les caches CDN et proxy, examinez les journaux d’accès du chemin et vérifiez où le même identifiant a encore été utilisé.
Le scanner stocke-t-il ou affiche-t-il les secrets complets qu’il trouve ?
Non. Le vérificateur signale le type de secret, le fichier où il a été trouvé et un nombre d’occurrences, avec la valeur masquée à quatre caractères initiaux au maximum — assez pour identifier de quel identifiant il s’agit, jamais assez pour l’utiliser. Le rapport ne contient volontairement rien qui vaille la peine d’être volé : un rapport de fuite ne devrait pas devenir une seconde fuite.
Peut-il analyser mon site de test ou une page derrière une connexion ?
Non. Le scanner ne fait que des requêtes GET publiques non authentifiées, donc tout ce qui se trouve derrière une connexion, un VPN ou une liste d’IP autorisées est hors de portée — volontairement, car la question à laquelle il répond est ce qu’un étranger sur internet peut récupérer. Les cibles bloquées, y compris les adresses d’infrastructure de ce site lui-même, sont refusées net.
Pourquoi mon résultat est-il en cache ou partiel ?
Les résultats sont mis en cache 10 minutes pour rendre les vérifications répétées peu coûteuses et pour rester un invité poli sur le serveur cible ; le résultat indique quand il vient du cache. Un résultat partiel signifie que l’analyse a atteint son budget de temps — en général une cible lente ou de nombreux gros bundles — avant de finir chaque sonde ; la bannière le dit, et un résultat propre partiel devrait être relancé plutôt que cru entièrement propre.