Question

Lors de la lecture sur les scripts shell et la gestion des fichiers temporaires, je suis tombé sur Exploits symboliques sur. http://www.linuxsecurity.com/content/view/115462/151/ est l'idée de base. Je me suis demandé si les contrôles ouverts () Python le fichier est sur le point d'ouvrir pour voir si elle est un lien symbolique et a essayé d'ouvrir un fichier de lien symbolique dans « w » le mode. À ma grande surprise, il a ouvert le lien et par conséquent le fichier écrasait auquel le lien pointait. Maintenant, si mon programme python fait beaucoup de manipulation de fichiers et que trop d'une manière prévisible, n'est pas possible qu'un attaquant crée un lien par le nom du fichier mon programme est censé créer des liens vers un fichier système critique. Cela écraserait le fichier système et bloquer le système? Je Python 2.4. Faire des versions de python suivantes traitent ce problème?

Ou est-ce un problème du tout?

Était-ce utile?

La solution

Le problème ne se produit que si vous créez des fichiers temporaires (bien, en général - écriture aux fichiers) qui ont des noms prévisibles et sont situés dans un répertoire autres utilisateurs peut écrire. Donc, si votre script écrire uniquement à votre répertoire, vous êtes bien. Si vous avez besoin pour créer des fichiers temporaires dans un répertoire partagé d'écriture, par exemple / Tmp, vous devez utiliser quelque chose comme http://docs.python.org/library/tempfile.html

Autres conseils

Si votre programme est en cours d'exécution avec des privilèges élevés (tels que root), alors vous pouvez éviter ce type d'attaque par ne pas écrire des fichiers dans un répertoire où les utilisateurs de privilège inférieur ont la possibilité de créer des liens symboliques.

Ce problème ne peut être résolu par la bibliothèque de langue ou de l'exécution, mais doit être traitée dans l'environnement dans lequel les pistes du programme.

(Notez que si votre programme est pas en cours d'exécution avec des privilèges élevés, l'utilisateur de créer un lien symbolique ne les laissera pas tout ce qu'ils ne pouvaient pas se faire sans que votre programme.)

Tout d'abord, l'utilisateur qui exécute le script ne devrait pas avoir l'autorisation d'écrire des fichiers système critiques. En second lieu, il n'est pas pythons tâche d'aborder cette question. Il est la tâche du développeur du script. Python offre tempfile depuis au moins 2.3.

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