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

Langage Perl Discussion :

insecure $ENV{PATH} while running setuid at


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut insecure $ENV{PATH} while running setuid at
    bonjour

    J'ai ce message d'erreur depuis deux jours, et j'ai toujour pas trouvé de solution. J'ai cherché un peux partout sur le net, j'ai regardé la doc sur perlsec, mais pas moyen de régler mon probleme. Je voudrais savoir comment on fait pour definir correctement $ENV{PATH}.

    merci d'avance

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    c'est à dire?
    $ENV{PATH} contient les varibles d'environnement de ta becanne, que veux tu faire?
    fait et tu verras

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    voila le code

    le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #! /usr/bin/perl -wTU
     
    #creation des groupes sur le serveur ldap
     
    open(GROUPE,"ldapsearch -x objectClass=kwartzGroup|");
     
    my @groupe = ();
    while( defined(my $c = <GROUPE>)) 
    {
            if ($c =~ m/^cn/)
            {
            chomp $c;
            $c =~ s/cn:\s//;
            push(@groupe,$c);
            }
    }
     
    foreach $c (@groupe)
    {
    system ("mkdir /home/$c");
    system ("chown $c: /home/$c"); 
    system ("chmod 2550 /home/$c");
    }
     
    close(GROUPE);

    et les messages d'erreurs

    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 5.
    Insecure dependency in piped open while running setuid at ./creation_dossier_groupe.pl line 5.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 5.
    Insecure EXEC while running setuid at ./creation_dossier_groupe.pl line 5.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    mkdir: ne peut créer le répertoire `/home/stagiaires': Le fichier existe.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    mkdir: ne peut créer le répertoire `/home/test': Le fichier existe.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    mkdir: ne peut créer le répertoire `/home/isen': Le fichier existe.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 20, <GROUPE> line 66.
    mkdir: ne peut créer le répertoire `/home/gerson': Le fichier existe.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 21, <GROUPE> line 66.
    Insecure $ENV{PATH} while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.
    Insecure dependency in system while running setuid at ./creation_dossier_groupe.pl line 22, <GROUPE> line 66.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    met ton code sous balise code pour une meilleure lisibilité sur le forum

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    je comprends ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open(GROUPE,"ldapsearch -x objectClass=kwartzGroup|");
    ldapsearch -x objectClass=kwartzGroup|
    est un nom de fichier ?
    De plus pourquoi je te conseil de le remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/perl
    use strict;
    use warnings;
    voilà

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par djibril
    je comprends ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open(GROUPE,"ldapsearch -x objectClass=kwartzGroup|");
    est un nom de fichier ?
    en fait le pc est connecté à un serveur ldap et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open(GROUPE,"ldapsearch -x objectClass=kwartzGroup|");
    est une requete pour récuperer sur le seveur les noms des groupes d'utilisateurs.

    j'ai effectué les modifications en debut de code, les use, et j'ai des nouveaux messages d'erreurs:

    Global symbol "$c" requires explicit package name at ./creation_dossier_groupe.pl line 20.
    Global symbol "$c" requires explicit package name at ./creation_dossier_groupe.pl line 22.
    Global symbol "$c" requires explicit package name at ./creation_dossier_groupe.pl line 23.
    Global symbol "$c" requires explicit package name at ./creation_dossier_groupe.pl line 23.
    Global symbol "$c" requires explicit package name at ./creation_dossier_groupe.pl line 24.
    Execution of ./creation_dossier_groupe.pl aborted due to compilation errors.

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    C'est à cause de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach $c (@groupe)
    {
    system ("mkdir /home/$c");
    system ("chown $c: /home/$c"); 
    system ("chmod 2550 /home/$c");
    }
    Il faut que tu déclares $c, de plus tu utilises des appels à system() alors que Perl a déjà toutes ces fonctions en interne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach my $user (@groupe) {
      mkdir "/home/$user" if not -e "/home/$user";
      my $uid = getpwnam($user)
        or die "$user not in passwd file\n";
      chown $uid, -1, "/home/$user"; 
      chmod 02550 "/home/$user";
    }
    --
    Jedaï

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    merci je vais modifier cela tout de suite.

    par contre pour mon probleme initial, si je lance le programme en root il fonctionne, mais en tant que simple utilisateur avec suid bit j'ai les erreurs de PATH

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par ptirouquin
    merci je vais modifier cela tout de suite.

    par contre pour mon problem initial, si je lance le program en root il fonctionne, mais en tant que simple utilisateur avec suid bit j'ai les erreurs de PATH
    Tu as bien corrigé le shebang ? Il n'y a plus de -T (taint mode) dessus ?

    --
    Jedaï

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    oui j'ai modifié le debut en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #! /usr/bin/perl
    use strict;
    use warning;
    ls -l donne: -rws---r-x 1 root root 459 2007-06-26 11:45 creation_dossier_groupe.pl

    et je suis connecté en simple utilisateur

    echo $PATH : /usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games

    le programme est dans /home/stagiaires/severin.delcourt/Desktop

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    et si j'ajoute les bon path dans $PATH avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     export PATH=$PATH:"les différents path"
    ça peut marcher?

  12. #12
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu devrais mettre exactement le PATH que tu veux au début de ton script avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ENV{PATH} = '/usr/sbin:/sbin';
    --
    Jedaï

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    j'ai mis en debut de fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $ENV{PATH} = '/usr/bin:/bin';
    j'ai plus le premier message d'erreur : Insecure $ENV{PATH} while running setuid at
    par contre j'ai un nouveau message : Insecure dependency in mkdir while running setuid at ./creation_dossier_groupe.pl ligne 24
    la ligne 24 est j'ai tenté de rajouter /home dans $ENV{PATH} mais sans succès et apparement la commande mkdir est directement dans /bin donc deja définit dans $ENV{PATH}.

  14. #14
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ce n'est pas le problème, apparemment le script est en mode "taint", $user est venu directement de l'extérieur du script, et doit donc être "untainté" comme expliqué dans perlsec.
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            chomp $c;
            $c =~ s/cn:\s//;
            push(@groupe,$c);
            }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            chomp $c;
            $c =~ m/cn:\s(.*)$/;
            push(@groupe,$1);
            }
    --
    Jedaï

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    j'ai réussi à corriger le dernier bug.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach my $user (@groupe)
    {
           if ($user =~ /^([ &:#-\@\w.]+)$/) 
           {
                  $user = $1;
                  mkdir "/home/$user";
           }
    }
    et tout fonctionne, j'arrive enfin à executer mon programme en simple utilisateur et non en root.

    merci beaucoup djibril et jedai pour votre aide

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

Discussions similaires

  1. Insecure $ENV{PATH} while running with -T switch at
    Par Jane Home dans le forum Langage
    Réponses: 0
    Dernier message: 01/05/2010, 17h49
  2. [freebsd] Insecure directory in $ENV{PATH}
    Par gorgonite dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2008, 14h08
  3. Réponses: 1
    Dernier message: 09/07/2007, 18h50
  4. Insecure $ENV{PATH} while running setgid
    Par Dosseh dans le forum Langage
    Réponses: 4
    Dernier message: 06/10/2005, 13h40
  5. Réponses: 3
    Dernier message: 05/08/2005, 19h34

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