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

Sécurité Discussion :

Attaque sushi avec LD_library_path


Sujet :

Sécurité

  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut Attaque sushi avec LD_library_path
    Bonjour,

    D'après ce que j'ai lu, l'attaque sushi consiste, à partir d'un exécutable appartement à root ayant le bit suid à 1, de créer un fichier shell avec un bit suid à 1 que tout le monde pourra modifier/exécuter.

    Ainsi tout le monde pourra lancer un shell en tant que root.

    Heureusement, il existe des mécanismes pour se protéger de cette attaque :
    - quand un fichier est modifié par une autre personne que son propriétaire, le bit suid est mis à 0;
    - lors de l'exécution de script, le bit suid est ignoré.

    Mais quid de LD_LIBRARY_PATH ?
    Si j'ai un exécutable avec le bit suid à 1, je peux modifier LD_LIBRARY_PATH et "remplacer" les fonctions appelée par mes propres fonctions grâce à l'édition des liens dynamiques (et donc exécuter ce que je veux avec les droits root).

    Comment Linux fait-il pour se protéger de cela ? Quels autres mécanismes sont mis en jeux ?
    Est-ce que les fichiers avec le suid à 1 sont trop "dangereux" ?


    Existe-t-il un méthode plus "sûre" pour permettre à un utilisateur d'accéder de manière restreinte à une ressource uniquement accessible par le root ?

    Exemple :
    J'ai une liste et je ne veux que personne (à part le root) ne puisse le lire/écrire.
    Mais je veux qu'un programme exécutable par tous puisse lire ce fichier pour par exemple produire un résultat différent selon l'utilisateur.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Bonjour,

    Citation Envoyé par Neckara Voir le message
    Bonjour,
    ...
    ...
    Mais quid de LD_LIBRARY_PATH ?
    Si j'ai un exécutable avec le bit suid à 1, je peux modifier LD_LIBRARY_PATH et "remplacer" les fonctions appelée par mes propres fonctions grâce à l'édition des liens dynamiques (et donc exécuter ce que je veux avec les droits root).

    Comment Linux fait-il pour se protéger de cela ? Quels autres mécanismes sont mis en jeux ?
    Est-ce que les fichiers avec le suid à 1 sont trop "dangereux" ?
    Si le setuid bit est positionné, le système ne prend pas en compte le LD_LIBRARY_PATH de l'utilisateur.

    Existe-t-il un méthode plus "sûre" pour permettre à un utilisateur d'accéder de manière restreinte à une ressource uniquement accessible par le root ?

    Exemple :
    J'ai une liste et je ne veux que personne (à part le root) ne puisse le lire/écrire.
    Mais je veux qu'un programme exécutable par tous puisse lire ce fichier pour par exemple produire un résultat différent selon l'utilisateur.
    Pour ce genre de problème, tu as des commandes tel que sudo ou des concept de permission selon un certain contexte avec pam.

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Donc comme le LD_PATH de l'utilisateur est ignoré, il est alors impossible d'effectuer un test avec valgrind sur un fichier ayant le bit setuid positionné si je comprend bien.

    Citation Envoyé par disedorgue Voir le message
    Pour ce genre de problème, tu as des commandes tel que sudo ou des concept de permission selon un certain contexte avec pam.
    Utiliser sudo signifierait que que utilisateur connait ou peut connaitre le mot de passe root .
    Pour PAM, j'ai du mal à comprendre, une fois l'utilisateur "authentifié" (ce qui au final n'est pas si utile vu qu'on souhaite que l'application puisse être lancé par tous et qu'on peut utiliser la commande "id" -?- au cas où on souhaiterait vérifier l'identité de l'utilisateur) il faudra bien faire une sorte "d'élévation de privilège" afin de pouvoir accéder à la ressource appartenant à root.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    L'utilisation de sudo ne necessite en aucune manière que l'utilisateur connaisse le mot de passe de root.

    Pour pam, tu as un module tels que pam-script mais il est vrai que se serait se compliquer la vie pour ton cas. Le sudo est amplement suffisant.

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    L'utilisation de sudo ne necessite en aucune manière que l'utilisateur connaisse le mot de passe de root.
    Tu veux dire qu'on pourrait rendre l'exécutable non lisible pour les utilisateurs et qu'on peut alors utiliser sudo et faire en sorte que l'exécutable entre lui-même le mot de passe utilisateur ? Ou modifier la "politique de sécurité" ?

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Il n'y a pas de mot de passe à saisir, sudo permet d'executer une commande qui peut être un script avec les droit d'un autre utilisateur (même root), ceci se configure dans le sudoers. Mais, il faut bien faire attention au possibilité de la commande afin de ne pas créer une faille de sécurité.
    Voir le man de sudoers pour plus de détails.

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Je suis sous Ubuntu donc pour moi sudo permet surtout de passer root (après je n'avais pas vu qu'il avait autant de fonctionnalité ).
    Après, je ne sais pas si le mot de passe demandé est le mot de passe du root ou celui de l'utilisateur (vu que pour moi c'est le même... ).

    Donc ce que tu me conseille, c'est un peu ce qui est écrit ici dans le man :
    dgb boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm

    The user dgb may run /bin/ls, /bin/kill, and /usr/bin/lprm -- but only
    as operator. E.g.,

    $ sudo -u operator /bin/ls
    Dans mon cas, l'utilisateur devra alors entrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sudo maCommande // si la ressource appartient à root
    //ou dans le cas général
    sudo -u maCommande
    Par contre, il existe une option pour conserver l'environnement avec sudo.
    Dans ce cas là, LD_LIBRARY_PATH sera aussi ignoré ?

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Oui, l'exemple est pertinant...

    Par contre, concernant l'env de l'utilisateur, celui-ci peut-être conservé sauf pour des variables sensibles tel que LD_LIBRARY_PATH (c'est écrit dans le man )

  9. #9
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Merci pour ta réponse,

    Je pense que je peux mettre le sujet en résolu.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/03/2011, 01h30
  2. Réponses: 4
    Dernier message: 15/03/2011, 01h30
  3. Réponses: 0
    Dernier message: 07/12/2010, 19h27
  4. Réponses: 0
    Dernier message: 07/12/2010, 19h27
  5. Comment attaquer Mysql avec Visual C++
    Par brisou_ dans le forum Administration
    Réponses: 4
    Dernier message: 11/03/2003, 13h12

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