Une interrogation me trotte dans la tête depuis un petit moment.
Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV;
open(FIC, "tail -10 \"$fichier\" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm -rf
~root' est passer en parametre, ça peut faire beaucoup de dégâts.
Mon idée est donc d'ajouter avant l'instruction open, un test
d'existence du fichier :
-e $fichier or die("$fichier inexistant\n");
Mais qu'est-ce qui empêche de créer un fichier nommé 'rm -rf ~root', ou
'$(rm -rf ~root)' ?
Je me dis que je pourrais entourrer $fichier de \' au lieu de \". Mais
y a-t-il d'autres risques ?
Merci de répondre à mes inquiétudes, même si je semble un peu parano :-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul GABORIT
À (at) Thu, 19 Feb 2004 10:55:16 +0100, David LE BOURGEOIS écrivait (wrote):
Une interrogation me trotte dans la tête depuis un petit moment. Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV; open(FIC, "tail -10 "$fichier" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm -rf ~root' est passer en parametre, ça peut faire beaucoup de dégâts. Mon idée est donc d'ajouter avant l'instruction open, un test d'existence du fichier :
Vous avez raison de vous inquiétez... même si l'exemple que vous donnez n'est pas fonctionnel. En attendant de bien maitriser la chose, je vous conseille fortement de NE PAS écrire de script ayant les droits 'root' et accessible par sudo.
Il y a beaucoup d'autres risques (exemple: êtes-vous sûr que la commande 'tail' est bien '/usr/bin/tail' ?). En fait pour sécuriser ce genre d'appel, il ne faut pas passer par 'open'. Lisez 'perlipc'. Vous y trouverez plusieurs solutions.
En français : <http://www.enstimac.fr/Perl/DocFr/perlipc.html>
De manière plus générale, pour appréhender les risques et leur maîtrise en Perl, un bon début consiste à lire 'perlsec' :
<http://www.enstimac.fr/Perl/DocFr/perlsec.html>
PS: d'autre part, perl peut faire aussi bien que 'tail' mais j'imagine que cet appel n'était qu'un simple exemple.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 19 Feb 2004 10:55:16 +0100,
David LE BOURGEOIS <this.address@is.invalid> écrivait (wrote):
Une interrogation me trotte dans la tête depuis un petit moment.
Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV;
open(FIC, "tail -10 "$fichier" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm
-rf ~root' est passer en parametre, ça peut faire beaucoup de dégâts.
Mon idée est donc d'ajouter avant l'instruction open, un test
d'existence du fichier :
Vous avez raison de vous inquiétez... même si l'exemple que vous donnez n'est
pas fonctionnel. En attendant de bien maitriser la chose, je vous conseille
fortement de NE PAS écrire de script ayant les droits 'root' et accessible par
sudo.
Il y a beaucoup d'autres risques (exemple: êtes-vous sûr que la commande
'tail' est bien '/usr/bin/tail' ?). En fait pour sécuriser ce genre
d'appel, il ne faut pas passer par 'open'. Lisez 'perlipc'. Vous y trouverez
plusieurs solutions.
En français :
<http://www.enstimac.fr/Perl/DocFr/perlipc.html>
De manière plus générale, pour appréhender les risques et leur maîtrise en
Perl, un bon début consiste à lire 'perlsec' :
<http://www.enstimac.fr/Perl/DocFr/perlsec.html>
PS: d'autre part, perl peut faire aussi bien que 'tail' mais j'imagine que cet
appel n'était qu'un simple exemple.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 19 Feb 2004 10:55:16 +0100, David LE BOURGEOIS écrivait (wrote):
Une interrogation me trotte dans la tête depuis un petit moment. Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV; open(FIC, "tail -10 "$fichier" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm -rf ~root' est passer en parametre, ça peut faire beaucoup de dégâts. Mon idée est donc d'ajouter avant l'instruction open, un test d'existence du fichier :
Vous avez raison de vous inquiétez... même si l'exemple que vous donnez n'est pas fonctionnel. En attendant de bien maitriser la chose, je vous conseille fortement de NE PAS écrire de script ayant les droits 'root' et accessible par sudo.
Il y a beaucoup d'autres risques (exemple: êtes-vous sûr que la commande 'tail' est bien '/usr/bin/tail' ?). En fait pour sécuriser ce genre d'appel, il ne faut pas passer par 'open'. Lisez 'perlipc'. Vous y trouverez plusieurs solutions.
En français : <http://www.enstimac.fr/Perl/DocFr/perlipc.html>
De manière plus générale, pour appréhender les risques et leur maîtrise en Perl, un bon début consiste à lire 'perlsec' :
<http://www.enstimac.fr/Perl/DocFr/perlsec.html>
PS: d'autre part, perl peut faire aussi bien que 'tail' mais j'imagine que cet appel n'était qu'un simple exemple.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
David LE BOURGEOIS
À (at) Thu, 19 Feb 2004 10:55:16 +0100, David LE BOURGEOIS écrivait (wrote):
Une interrogation me trotte dans la tête depuis un petit moment. Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV; open(FIC, "tail -10 "$fichier" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm -rf ~root' est passer en parametre, ça peut faire beaucoup de dégâts. Mon idée est donc d'ajouter avant l'instruction open, un test d'existence du fichier :
Vous avez raison de vous inquiétez... même si l'exemple que vous donnez n'est pas fonctionnel. En attendant de bien maitriser la chose, je vous conseille fortement de NE PAS écrire de script ayant les droits 'root' et accessible par sudo.
Il y a beaucoup d'autres risques (exemple: êtes-vous sûr que la commande 'tail' est bien '/usr/bin/tail' ?).
Oui, effectivement, cela présente un risque.
En fait pour sécuriser ce genre
d'appel, il ne faut pas passer par 'open'. Lisez 'perlipc'. Vous y trouverez plusieurs solutions.
En français : <http://www.enstimac.fr/Perl/DocFr/perlipc.html>
De manière plus générale, pour appréhender les risques et leur maîtrise en Perl, un bon début consiste à lire 'perlsec' :
<http://www.enstimac.fr/Perl/DocFr/perlsec.html>
Très bien. J'avais commencer à lire perlipc, mais juste pour la gestion des signaux. Je vais donc appronfondir la notion de sécurité.
PS: d'autre part, perl peut faire aussi bien que 'tail' mais j'imagine que cet appel n'était qu'un simple exemple.
Merci pour ces informations, et à bientôt.
-- David LE BOURGEOIS
À (at) Thu, 19 Feb 2004 10:55:16 +0100,
David LE BOURGEOIS <this.address@is.invalid> écrivait (wrote):
Une interrogation me trotte dans la tête depuis un petit moment.
Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV;
open(FIC, "tail -10 "$fichier" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm
-rf ~root' est passer en parametre, ça peut faire beaucoup de dégâts.
Mon idée est donc d'ajouter avant l'instruction open, un test
d'existence du fichier :
Vous avez raison de vous inquiétez... même si l'exemple que vous donnez n'est
pas fonctionnel. En attendant de bien maitriser la chose, je vous conseille
fortement de NE PAS écrire de script ayant les droits 'root' et accessible par
sudo.
Il y a beaucoup d'autres risques (exemple: êtes-vous sûr que la commande
'tail' est bien '/usr/bin/tail' ?).
Oui, effectivement, cela présente un risque.
En fait pour sécuriser ce genre
d'appel, il ne faut pas passer par 'open'. Lisez 'perlipc'. Vous y trouverez
plusieurs solutions.
En français :
<http://www.enstimac.fr/Perl/DocFr/perlipc.html>
De manière plus générale, pour appréhender les risques et leur maîtrise en
Perl, un bon début consiste à lire 'perlsec' :
<http://www.enstimac.fr/Perl/DocFr/perlsec.html>
Très bien.
J'avais commencer à lire perlipc, mais juste pour la gestion des signaux.
Je vais donc appronfondir la notion de sécurité.
PS: d'autre part, perl peut faire aussi bien que 'tail' mais j'imagine que cet
appel n'était qu'un simple exemple.
À (at) Thu, 19 Feb 2004 10:55:16 +0100, David LE BOURGEOIS écrivait (wrote):
Une interrogation me trotte dans la tête depuis un petit moment. Prenons l'exemple suivant, extrait d'un programme perl :
my ($fichier) = @ARGV; open(FIC, "tail -10 "$fichier" |") or die("blabla");
Ce programme etant autorisé par sudo, si quelque chose du genre 'rm -rf ~root' est passer en parametre, ça peut faire beaucoup de dégâts. Mon idée est donc d'ajouter avant l'instruction open, un test d'existence du fichier :
Vous avez raison de vous inquiétez... même si l'exemple que vous donnez n'est pas fonctionnel. En attendant de bien maitriser la chose, je vous conseille fortement de NE PAS écrire de script ayant les droits 'root' et accessible par sudo.
Il y a beaucoup d'autres risques (exemple: êtes-vous sûr que la commande 'tail' est bien '/usr/bin/tail' ?).
Oui, effectivement, cela présente un risque.
En fait pour sécuriser ce genre
d'appel, il ne faut pas passer par 'open'. Lisez 'perlipc'. Vous y trouverez plusieurs solutions.
En français : <http://www.enstimac.fr/Perl/DocFr/perlipc.html>
De manière plus générale, pour appréhender les risques et leur maîtrise en Perl, un bon début consiste à lire 'perlsec' :
<http://www.enstimac.fr/Perl/DocFr/perlsec.html>
Très bien. J'avais commencer à lire perlipc, mais juste pour la gestion des signaux. Je vais donc appronfondir la notion de sécurité.
PS: d'autre part, perl peut faire aussi bien que 'tail' mais j'imagine que cet appel n'était qu'un simple exemple.