Gast
#4811107
Hallo, bei der Entwicklung einer Web-Anwendung mit integrierter Skriptsprache können wir nicht ausschließen, dass der Benutzer beliebigen, auch bösartigen, Code ausführt. Daher lassen wir die Anwendung in einer virtuellen Maschine (z.Zt. LXC) laufen. Doch auch dies ist nicht sicher, wenn es dem Benutzer gelingt, root-Rechte zu erlangen, da er dann die virtuelle Maschine verlassen und den Hostrechner "übernehmen" kann. Nun ist unser Gedanke, alle Systemaufrufe (setuid, setgid, ...) abzufangen, die es ermöglichen, root-Rechte zu erlangen und die virtuelle Maschine abzuschalten, falls der setuid-Aufruf von einem nicht vorher authorisierten Prozess stammt. Gibt es Ansätze in dieser Richtung? Es ist ja nicht ganz trivial. Erstens ist die Frage, welche Systemaufrufe genau abgefangen werden müssen? Gibt es außer setuid, setgid weitere Möglichkeiten, evtl. auch unter Umgehung der dokumentieren Systembibliotheken, root-Rechte zu erlangen? Zweitens benötigen bestimmte Prozesse weiterhin die Möglichkeit, als root zu laufen, um ihre Aufgaben erfüllen zu können. Wie kann man diese sinnvoll von unerlaubten Prozessen unterscheiden? Dann interessiert uns noch die Frage, wie große Cloudanbieter (Azure, AWS usw.) sicherstellen, dass ihre Systeme sicher sein sollen, da offenbar keine Virtualisierung gegen einen Ausbruch von Gastsystem ins Hostsystem geschützt ist. Natürlich nicht im Detail, aber was ist dort der grundsätzliche Ansatz? Danke Hagen