Python Sandboxing
Verfasst: Montag 21. Dezember 2009, 11:01
Ja, ich weiß: Python Sandboxing (Sicheres Ausführen von Python Code aus unsicheren Quellen) ist mit CPython nicht wirklich möglich. Selbst, wenn man __buildins__ beschneidet und __include__ kontrolliert, kommt man mit diversen inspect-Tricks trotzdem an schädliche Module ran.
Aber, wenn ich
1) das Script in einer chroot Umgebung
2) als ein nicht-privilierter User
3) hinter einer Firewall
ausführe, sollte das Ganze doch einigermaßen sicher sein, oder? Was könnte ein böses Skript denn tun?
- Dateien auslesen oder überschreiben ist mit (1) geregelt. Es könnte sich höchstens selbst zerstören.
- Ausnutzen gefährliche System-Funktionen und das Binden von Netzwerk-Ports < 1024 ist dank (2) nicht mehr möglich.
- Alle anderen Netzwerk-Aktivitäten können durch (3) begrenzt werden.
Hab ich was übersehen?
PS: Es geht eigentlich darum: Ich bin am überlegen, einen Bottle-Hosting-Service auf zu bauen. Proof of concept und kostenloser Service, nichts kommerzielles. Dafür brauche ich aber eine sichere Möglichkeit, nicht vertrauenswürdige Scripte aus zu führen, ohne als Spam-Bot zu enden.
Aber, wenn ich
1) das Script in einer chroot Umgebung
2) als ein nicht-privilierter User
3) hinter einer Firewall
ausführe, sollte das Ganze doch einigermaßen sicher sein, oder? Was könnte ein böses Skript denn tun?
- Dateien auslesen oder überschreiben ist mit (1) geregelt. Es könnte sich höchstens selbst zerstören.
- Ausnutzen gefährliche System-Funktionen und das Binden von Netzwerk-Ports < 1024 ist dank (2) nicht mehr möglich.
- Alle anderen Netzwerk-Aktivitäten können durch (3) begrenzt werden.
Hab ich was übersehen?
PS: Es geht eigentlich darum: Ich bin am überlegen, einen Bottle-Hosting-Service auf zu bauen. Proof of concept und kostenloser Service, nichts kommerzielles. Dafür brauche ich aber eine sichere Möglichkeit, nicht vertrauenswürdige Scripte aus zu führen, ohne als Spam-Bot zu enden.