Question

Quand je Invoke "sudo / sbin / iptables ..." dans mes scripts CGI Perl, je reçois l'erreur:

Insecure dependency in system while running with -T switch at usr/lib/perl5/vendor_perl/5.8.8/IPC/Run3.pm line 403

J'ai essayé d'ajouter "/sbin:/etc/sysconf:/etc/init.d" dans $ ENV { 'PATH'} mais toujours sans succès. Tout le monde a toute idée?

Était-ce utile?

La solution

Vous êtes censé limiter le chemin, ce qui signifie: la mise à un petit nombre de valeurs connues qui remplissent certaines conditions (comme $ENV{PATH} = '/sbin:/usr/sbin:/usr/bin';), et non pas en y ajoutant. Voir Nettoyage de votre chemin perlsec pour les détails .

Dans votre cas simple, il est préférable de le vider complètement et se fonder uniquement sur les appels système avec des noms de fichiers qualifiés.

delete @ENV{qw(PATH ENV)};
system qw(/usr/bin/sudo /sbin/iptables -h);

Autres conseils

Oui, vous avez une dépendance insécurité dans le système lors de l'exécution avec le commutateur -T. : P

Vous êtes en cours d'exécution de votre script en mode taintperl et appeler un programme externe (avec sudo, pas moins) avec des données basées sur les informations transmises depuis l'utilisateur (qui pourrait être viciée). Si vous êtes vraiment vous que la sortie est valide et ne comporte pas de risque, vous devez untaint il: consultez la documentation officielle sur blanchiment données souillées .

Vous devez être vraiment attention lors de l'exécution des programmes externes ou d'effectuer des opérations de système à partir d'un CGI - par exemple, pensez à ce qui pourrait arriver si vous entrez `rm -rf /` comme entrée utilisateur. Il y a beaucoup d'informations à perldoc perlsec pour vous aider à démarrer, mais plusieurs livres ont été écrits sur l'écriture sécurisée code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top