Exec() in PHP chroot-Umgebung

Manchmal ist die Verwendung einer chroot-Umgebung für PHP mehr Fluch als Segen. Auf der einen Seite ist es ein wirklicher Sicherheitsgewinn. Aber auf der anderen Seite findet man immer wieder Kleinigkeiten, die einen eine ganze Weile aufhalten, bevor man bestimmte Funktionen nutzen kann.

Ein Beispiel hierfür ist die exec() Funktion, die es ermöglicht, Systembefehle auszuführen und deren Ergebnis auszulesen. Es ist nirgendwo richtig dokumentiert, aber damit sie funktioniert, muss die Binärdatei "/bin/sh" in der chroot-Umgebung zur Verfügung stehen.

Anschließend kann man per

1
ldd /bin/sh

prüfen, welche Bibliotheken mit welchen Pfaden zusätzlich noch bereitgestellt werden müssen.
Gechrootete Grüße, Kenny

5 Kommentare » Schreibe einen Kommentar

  1. Im Zweifelsfall würde ich eine statisch gelinkte Busybox in minimalstkonfiguration in den chroot-Container werfen, das dürfte im Vergleich zu einer ausgewachsenen bash mit den ganzen dazu gehörenden Libraries einiges an RAM sparen.

    • Nunja, /bin/sh benötigt unter Ubuntu AFAIR 3 weitere Libs. Das ist also noch zu verkraften - wobei dessen Bereitstellung eh nur Mittel zum Zweck (Ausführen irgendeiner anderen Anwendung) ist. Diese benötigen meist die gleichen Bibliotheken. Bei der Busybox hätte ich dann schon wieder das Problem, dass ich diese passend zurecht kompilieren muss, damit wirklich nur die Anwendungen zur Verfügung stehen, die ich bereitstellen möchte.

    • Ja, es gibt wirklich Leute, die das wagen. Es gibt die alteingesessenen, die sich auf den Safe-Mode verlassen (beliebt bei Sharehostern) und es gibt andere, die sich sagen, dass ihre Rechtevergabe im System schon sicher sein wird und keine weitere Schutzname a la chroot ergreifen. Je nach verwendeter Software wird dann höchstens noch auf das Apache Modul mod_suphp zurückgegriffen.

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.