IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Security issue : nom de fichier interprétables


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut Security issue : nom de fichier interprétables
    Salut les linuxiens,

    J'ai un certain nombre de fichiers dans un dossier, je voudrais tester que le nom de ces fichiers ne contiennent pas de caractères "interprétables" en unix/linux du style :

    filename :
    "toto `ls -l`.pdf"
    "toto 'rm *'.pdf"
    ...

    Est-ce que vous avez connaissance d'une regex ou d'un script permettant de s'assurer de manière exhaustive que les noms de fichiers sont conformes?

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Bonjour,

    avec bash, tu peux en faire la liste dans une variable, en les protégeant, et en les séparant par un caractère OU de regex :ensuite, avec l'opérateur =~ entre double-crochets ([[), la partie droite sera considérée comme une regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ touch 'toto `ls -l`.pdf' autre\ fichier
    $ for f in *; do printf '%s\t: ' "$f"; [[ $f =~ $chars ]] && echo spec || echo pas spec; done
    autre fichier   : pas spec
    toto `ls -l`.pdf        : spec

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    bonjour,

    l'approche me semble mauvaise, même si on peut probablement faire le tour des différentes manières d'exécuter du code de façon plus ou moins exhaustive, quid des formes malignes et/ou multicaractères du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    touch "fichier_\$\(<code>\)_crado"
    touch "true\ \&\&\ <code>"
    touch "eval\ \"<code>\""
    touch "bash\ -c\ \"<code>\""
    (...)
    dans l'idée le but est plutôt d'autoriser un ensemble de caractères strictement choisis que de restreindre uniquement quelques caractères parmi tous ceux possibles (par exemple n'autoriser strictement que [a-z0-9])

    mais si cette question te préoccupe à juste titre, c'est probablement qu'à un moment donné dans ton script les noms de fichiers passent par un eval, du coup en termes de sécurité j'aurais plutôt tendance à chercher une autre façon de faire, parce-que dans ce cas de figure rien ne servira de parser on pourra toujours faire exécuter un code arbitraire

  4. #4
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    J'ai effectivement décidé d'autoriser un type de caractères plutôt que de restreindre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [shell] Interprétation d'une variable issue d'un fichier
    Par seawolfm dans le forum Administration système
    Réponses: 3
    Dernier message: 10/03/2011, 00h27
  2. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 14h20
  3. Réponses: 3
    Dernier message: 08/10/2007, 17h05
  4. Réponses: 4
    Dernier message: 10/10/2003, 19h04
  5. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo