Forum: PC-Programmierung reagieren, wenn ein Prozess root-Rechte erlangt (Linux)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hagen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Wie kann er denn aus dem LXC "ausbrechen"? Kannst Du das Szenario 
beschreiben?

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ich denke dafür sind Ansätze wie SELinux oder AppArmor besser geeignet. 
Da darf auch root nicht mehr alles.

von Hagen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Wie kann er denn aus dem LXC "ausbrechen"? Kannst Du das Szenario
> beschreiben?

Ich habe noch nicht versucht, es im Detail zu verstehen geschweige denn 
auszuprobieren. Doch wenn du nach "lxc ausbrechen" oder "lxc exploit" 
googlest, findest du etliche Möglichkeiten, z.B.:
http://experiment4.de/container-exploit-shocker-kann-aus-lxcdocker-ausbrechen/ 
(Dieser ist zwar inzwischen gefixt, doch es wird neue Lücken geben.)

Danke
Hagen

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Ok, das bezieht sich auf ein altes LXC, aktuell ist 2.0.6

LXC ist eine Kombination von kernel namespaces und Apparmor und SELinux.

Viele Hoster machen das, oder OpenVZ oder VServer oder ...

Wem das Prinzip mit einem(!) Kernel noch zu unsicher ist, der muss dann 
statt Paravirtualisierung eine volle Virtualisierung via VirtualBox, 
qemu, o.ä. herstellen.

: Bearbeitet durch User
von S. R. (svenska)


Bewertung
1 lesenswert
nicht lesenswert
Hagen schrieb:
> Natürlich nicht im Detail, aber was ist dort
> der grundsätzliche Ansatz?

Good / Best Practises.

von Noch einer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> aber was ist dort der grundsätzliche Ansatz?

Die bezahlen in ihren Bug Bounty Programmen für neu gefundene Bugs. 
Fixen ihre VM, bevor jemand anderes einen Exploit schreiben kann. 
Behaupten die zumindest.

von foobar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Linux Capabilities

von Lukey S. (lukey3332)


Bewertung
0 lesenswert
nicht lesenswert
firejail für Einzelne Programme

von (prx) A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Wem das Prinzip mit einem(!) Kernel noch zu unsicher ist, der muss dann
> statt Paravirtualisierung eine volle Virtualisierung via VirtualBox,
> qemu, o.ä. herstellen.

Auch volle Virtualisierung wie VMware kann nicht als absolut sicher 
angesehen werden. Da gab es auch schon Bugs. Aber um vor elektronischem 
Einbruch vollständig sicher zu sein, muss man die Daten in Karteikarten 
aus Pappe speichern und per Briefpapier kommunizieren.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Wilhelm M. schrieb:
>> Wem das Prinzip mit einem(!) Kernel noch zu unsicher ist, der muss dann
>> statt Paravirtualisierung eine volle Virtualisierung via VirtualBox,
>> qemu, o.ä. herstellen.
>
> Auch volle Virtualisierung wie VMware kann nicht als absolut sicher
> angesehen werden. Da gab es auch schon Bugs. Aber um vor elektronischem
> Einbruch vollständig sicher zu sein, muss man die Daten in Karteikarten
> aus Pappe speichern und per Briefpapier kommunizieren.

Ja klar, wo SW ist, sind auch Fehler. Allerdings sind die Möglichkeiten 
für das Ausnutzen von Schwachstellen bei voller Virtualisierung (mit HW 
Unterstützung durch Privilegien-Ringe) geringer als bei 
Para-Virtualisierung.

von S. R. (svenska)


Bewertung
1 lesenswert
nicht lesenswert
Ja, aber Hagen-Personaler ist nicht an geringerer Wahrscheinlichkeit 
interessiert, sondern nur an vollkommener Sicherheit.

von Johann L. (radiostar)


Bewertung
-1 lesenswert
nicht lesenswert
S. R. schrieb:
> Ja, aber Hagen-Personaler ist nicht an geringerer
> Wahrscheinlichkeit
> interessiert, sondern nur an vollkommener Sicherheit.

vollkommen sicher ist nur Eines - und selbst da sind einige Religionen 
anderer Meinung.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.