Aller au contenu

Supprimez les secrets des journaux et des fichiers HAR avant de les partager

Blog / Publié 

"Pouvez-vous m'envoyer un fichier HAR ?" est une demande raisonnable d'un ingénieur de support et une chose dangereuse à respecter sans réfléchir. Une exportation HAR est un enregistrement complet d'une session de navigateur : chaque requête, chaque en-tête de réponse, chaque cookie envoyé et souvent aussi les corps de réponse. En remettre un non édité donne au destinataire la possibilité d'agir comme vous sur n'importe quel site de cet enregistrement, aussi longtemps que ces sessions sont en direct.

La même chose s'applique, de manière moins évidente, aux extraits de journaux que les gens collent dans les tickets, les fils de discussion Slack et les fenêtres de discussion toute la journée. Cela vaut la peine d'avoir une routine.

Que contient réellement un fichier HAR

HAR est JSON et il est exhaustif de par sa conception. Dans un export normal vous trouverez :

Le Désinfectant de fichiers HAR prend l'exportation et supprime les parties portant les informations d'identification - cookies, en-têtes d'authentification, jetons - tout en laissant intacte la structure de demande et de réponse, ce dont la personne qui débogue votre problème a réellement besoin. Collez-le, récupérez un fichier nettoyé, joignez-le.

Regarde ce que tu envoies

Il vaut mieux désinfecter à l’aveugle que ne pas désinfecter, mais l’habitude utile consiste à regarder en premier. Copiez les en-têtes de la requête suspecte hors de vos outils de développement et exécutez-les via le analyseur d'en-tête HTTP: il divise un bloc brut en paires nom/valeur que vous pouvez lire, ce qui le rend évident lorsqu'il y a un X-Internal-Auth ou un en-tête de jeton spécifique au fournisseur qu'un modèle de rédaction générique n'aurait pas reconnu comme un secret.

Les cookies méritent leur propre look. Collez un Cookie ou Set-Cookie ligne dans le analyseur de cookies et vous obtenez chaque cookie divisé avec ses attributs - HttpOnly, Secure, SameSite, expiration. Il s'agit à la fois d'un contrôle de rédaction (« lesquels sont des jetons de session ? ») et d'un examen de sécurité : un cookie de session sans HttpOnly ou avec une expiration d'un an est une découverte en soi, et vous l'examinez déjà.

La sortie du terminal a deux problèmes

Les journaux de terminal collés contiennent des secrets (chaînes de connexion, jetons dans les commandes curl, vidages d'environnement) et contiennent également des séquences d'échappement ANSI. C'est la raison pour laquelle une bûche colorée se transforme en ESC[0;32m du bruit lorsqu'il atterrit dans un ticket, et ils rendent le texte difficile à lire pour quiconque et difficile à rechercher. Le Décapant ANSI supprime les codes de couleur et de contrôle du curseur et laisse le texte.

Puis expurgez. Le rédacteur de données trouve les catégories récurrentes (adresses e-mail, adresses IP, numéros de téléphone, numéros de carte, chaînes en forme de clé) et les remplace de manière cohérente, de sorte que le journal se lit toujours comme une trace cohérente au lieu de devenir un mur de [REDACTED]. La cohérence est importante lors du débogage : si le même identifiant utilisateur est remplacé partout par le même espace réservé, le lecteur peut toujours suivre une requête sur cinquante lignes.

La correspondance de modèles ne détectera pas un secret qui ressemble à du texte ordinaire, alors lisez le résultat avant de l'envoyer. Les noms d'hôtes internes, les noms de clients dans les champs de texte libre et les chemins de fichiers contenant les noms d'utilisateur sont les trois éléments qui survivent à chaque passage automatisé.

La rédaction n'est pas une rotation

Le point le plus important, et celui que l’on ignore : si un identifiant a déjà été envoyé quelque part, il n’aurait pas dû y aller, le supprimer d’un document ne fait rien. Le destinataire peut l'avoir. Il peut s'agir d'une archive de courrier électronique, d'un système de tickets, d'un backend de discussion, du dossier de téléchargement local de quelqu'un ou des journaux d'un fournisseur de modèles.

Tourner. Invalidez la session, révoquez le jeton, lancez la clé API. Nettoyez ensuite le fichier. Dans cet ordre, car le nettoyage prend une minute et la rotation est la partie qui ferme réellement l'exposition.

Coller dans une fenêtre de discussion, c'est publier

Le débogage avec un assistant est désormais normal, et une trace de pile contenant une chaîne de connexion est transmise à un tiers au moment où vous appuyez sur Entrée. Selon le produit et le plan, ce texte peut être conservé, révisé par un humain ou utilisé à des fins de formation. Traitez tout collage dans un modèle hébergé comme un transfert vers un tiers (car c'est de cela qu'il s'agit) et nettoyez-le exactement comme vous nettoieriez une pièce jointe à un e-mail externe.

C'est le cas où les outils locaux ne sont pas une préférence mais l'essentiel : chaque outil nommé ici s'exécute dans votre navigateur, de sorte que la version non expurgée du fichier n'est jamais téléchargée sur quoi que ce soit en cours de nettoyage. Nettoyer un journal contenant des secrets en le collant sur un site Web qui le traite sur un serveur signifie que le secret a déjà disparu, quelle que soit l'apparence du résultat nettoyé.

Une liste de contrôle à épingler

  1. Enregistrez le HAR dans une fenêtre privée avec uniquement l'onglet correspondant ouvert et démarrez l'enregistrement après vous êtes connecté.
  2. Exécutez l’exportation via le désinfectant.
  3. Ouvrez le fichier nettoyé et recherchez-le token, secret, key, auth, password et vos propres noms de domaine.
  4. Supprimez les codes ANSI de toute sortie de terminal, puis supprimez les identifiants.
  5. Lisez le résultat de bout en bout. C'est plus court que vous ne le pensez.
  6. Faites pivoter tout ce qui était en direct dans l'original.
  7. Envoyez-le via un canal qui expire, pas un canal qui archive pour toujours.

Six minutes de travail contre une fuite d’identifiants qui, autrement, resterait indéfiniment dans la file d’attente des tickets.

Écrit par Ján Turský

Créateur de TextArray : création d'outils gratuits axés sur la confidentialité qui s'exécutent entièrement dans votre navigateur.