• # Sécurité de la ligne de commande

    Posté par . En réponse à la dépêche WinAdminPassword : Déployer des mots de passe uniques sur les systèmes GNU Linux / Microsoft Windows. Évalué à 10.

    Très bon projet, je me permet néanmoins une remarque d'un point de vue de la sécurité : il est très dangereux de passer des arguments tels que des mots de passe (ou, dans le cas présent, une clef secrète) via la ligne de commande.
    En effet, deux scénarios d'attaques sont alors facilement envisageables :
    -quelqu'un qui a accès à l'historique (bash_history étant la manière la plus simple) connaitra alors toutes les clefs
    -si c'est un script ou un cron qui l'exécute, il suffit d'avoir accès au script en question ou au crontab de l'utilisateur (assez facile)
    -autre scénario, presque encore plus facile : réaliser un petit programme qui se charge de scruter la liste des process actifs, en permanence (équivalent de "ps aux" mais exécuté en continu, très rapidement). Dès qu'il trouve "winadminpassword" dans la liste, bingo, la clef est derrière!

    Ainsi, la plupart des logiciels qui demandent un mot de passe ou une clef en entrée optent pour deux possibilités (pas forcément contradictoires) :
    -lecture depuis un fichier : c'est la solution privilégiée pour l'exécution depuis un cron ou un script : le crontab est accessible potentiellement par tout le monde, mais pas le fichier "secret" qui ne contient que le mot de passe.
    -lecture depuis l'entrée standard : cela impose certes un mode interactif, mais c'est la solution privilégiée lorsque l'on exécute le script manuellement.

    Et pour le reste, "keep up the good work"!