Python: Nicht vertrauenswürdige Skripte / Unterprozesse mit chroot und chjail sichern?

Ich schreibe einen Webserver auf Python-Basis, der "Plugins" ausführen kann, damit die Funktionalität problemlos erweitert werden kann.

Aus diesem Grund habe ich die Vorgehensweise in Betracht gezogen, eine Reihe von Ordnern (einen für jedes Plugin) und eine Reihe von Shell- / Python-Skripten zu verwenden, die nach vordefinierten Namen für verschiedene Ereignisse benannt sind, die auftreten können.

Ein Beispiel ist einon_pdf_uploaded.py Datei, die ausgeführt wird, wenn ein PDF auf den Server hochgeladen wird. Dazu würde ich Pythons verwendenUnterprozess Werkzeuge.

Aus Gründen der Bequemlichkeit und Sicherheit kann ich Unix-Umgebungsvariablen verwenden, um weitere Informationen bereitzustellen und das Arbeitsverzeichnis (cwd) des Prozesses so festzulegen, dass auf die richtigen Dateien zugegriffen werden kann, ohne dass der Speicherort gefunden werden muss.

Da der Plugin-Code von einer nicht vertrauenswürdigen Quelle stammt, möchte ich ihn so sicher wie möglich machen. Meine Idee war, den Code in einem Unterprozess auszuführen, ihn jedoch in einem Chroot-Gefängnis mit einem anderen Benutzer abzulegen, damit er nicht auf andere Ressourcen auf dem Server zugreifen kann.

Leider konnte ich nichts dazu finden und wollte mich nicht auf das nicht vertrauenswürdige Skript verlassen, um sich selbst in ein Gefängnis zu stecken.

Außerdem kann ich den Haupt- / Aufruf-Prozess auch nicht in ein Chroot-Gefängnis stecken, da der Plugin-Code möglicherweise in mehreren Prozessen gleichzeitig ausgeführt wird, während der Server andere Anfragen beantwortet.

Hier ist die Frage: Wie kann ich Unterprozesse / Skripte in einem Chroot-Gefängnis mit minimalen Berechtigungen ausführen, um den Rest des Servers vor Beschädigung durch fehlerhaften, nicht vertrauenswürdigen Code zu schützen?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage