2 Stimmen

Sichere Python-Umgebung unter Linux

Ist es möglich, eine Umgebung zu schaffen, in der beliebige Python-Skripte unter Linux sicher ausgeführt werden können? Diese Skripte sollen von nicht vertrauenswürdigen Personen empfangen werden und können zu groß sein, um sie manuell zu überprüfen.

Eine sehr brachiale Lösung besteht darin, eine virtuelle Maschine zu erstellen und ihren Ausgangszustand nach jedem Start eines nicht vertrauenswürdigen Skripts wiederherzustellen. (Zu teuer.)

Ich frage mich, ob es möglich ist, Python den Zugriff auf das Dateisystem und die Interaktion mit anderen Programmen usw. zu verwehren.

0 Stimmen

4voto

SpliFF Punkte 36890

Erwägen Sie die Verwendung eines Chroot-Gefängnisses. Dies ist nicht nur sehr sicher, gut unterstützt und getestet, sondern gilt auch für externe Anwendungen, die Sie mit Python ausführen.

4voto

Edd Barrett Punkte 3035

Es gibt 4 Möglichkeiten, die Sie ausprobieren können:

  • Wie Sie bereits erwähnt haben, sollten Sie eine virtuelle Maschine oder eine andere Form der Virtualisierung verwenden (vielleicht sind Solaris-Zonen leicht genug?). Wenn das Skript das Betriebssystem dort beschädigt, ist es Ihnen egal.
  • Verwendung von chroot, das eine Shell-Sitzung in ein virtuelles Root-Verzeichnis verschiebt, das vom Root-Verzeichnis des Betriebssystems getrennt ist.
  • Verwendung von systrace. Betrachten Sie dies als eine Firewall für Systemaufrufe.
  • Verwendung einer "Jail", die auf Systrace aufbaut und jeder Jail eine eigene Prozesstabelle gibt usw.

Systrace wurde vor kurzem kompromittiert, also seien Sie sich dessen bewusst.

2voto

Guillaume Punkte 17737

Sie könnten Jython ausführen und den Sandboxing-Mechanismus der JVM nutzen. Das Sandboxing in der JVM ist sehr stark, sehr gut verstanden und mehr oder weniger gut dokumentiert. Es wird einige Zeit in Anspruch nehmen, genau zu definieren, was Sie zulassen wollen und was nicht, aber Sie sollten in der Lage sein, eine sehr starke Sicherheit daraus zu ziehen ...

Auf der anderen Seite ist jython nicht 100% kompatibel mit cPython ...

1voto

1voto

theheadofabroom Punkte 18431

Könnten Sie nicht einfach als ein Benutzer laufen, der nur auf die Skripte in diesem Verzeichnis Zugriff hat?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X