Source : billet de blog de Linus Heckemann (9 janvier 2026).
L’auteur illustre d’abord le risque de « Process information leakage » lorsqu’un secret (ex. un token Bearer pour l’API GitLab) est passé en argument de commande, car les lignes de commande sont lisibles via /proc sur la plupart des distributions Linux (outils comme ps/pgrep). Des options comme hidepid pour /proc ou l’isolation par défaut de macOS limitent la visibilité inter-utilisateurs, mais la meilleure approche reste d’éviter de placer des secrets sur la ligne de commande.
Pour contourner ce risque, il propose de faire lire les en-têtes à un fichier sécurisé (umask 077) ou d’utiliser la substitution de processus (p. ex. @<(echo ‘Authorization: …’)), ce qui fournit un « fichier » éphémère non persistant et limite l’exposition dans la table des processus.
L’article aborde ensuite la « Shell history leakage » : des commandes contenant des secrets finissent dans l’historique. Des réglages comme HISTCONTROL=ignorespace évitent d’enregistrer les commandes préfixées d’un espace, mais l’auteur préfère des méthodes plus pratiques, comme saisir le secret via read -r (éventuellement -s pour masquer l’entrée) ou le récupérer depuis le presse-papiers ou un gestionnaire de mots de passe en ligne de commande, afin de ne pas inscrire le secret tel quel dans l’historique.
Il déconseille également de stocker des secrets dans des variables d’environnement exportées, car elles sont héritées par les processus enfants (exemples : Git invoquant ssh ; Terraform lançant des providers), augmentant les risques de fuites accidentelles (p. ex. dumps d’env en logs). Il privilégie les variables de shell non exportées et le passage explicite du secret aux commandes qui en ont besoin.
En conclusion, l’auteur assume une approche « paranoïde » mais pragmatique, visant à éviter l’écriture de secrets dans des fichiers persistants et à réduire les vecteurs de fuite. Il s’agit d’une recommandation de sécurité didactique, centrée sur l’opsec en shell et la minimisation d’exposition des secrets.
TTPs (conceptuels)
- Exposition de secrets via les arguments de processus visibles dans /proc.
- Fuite via fichiers d’historique de shell.
- Propagation involontaire via variables d’environnement héritées par des sous-processus.
🔗 Source originale : https://linus.schreibt.jetzt/posts/shell-secrets.html