Forum: PC-Programmierung Python Online-IDE gegen Exploits sichern


von Hagen (Gast)


Lesenswert?

Tach zusammen,
wir haben uns mit ein paar Freunden überlegt, uns eine online-IDE zur 
Pythonentwicklung einzurichten, da wir häufig an verschiedenen 
Standorten und auf wechselnden Computern unsere Projekte bearbeiten. 
Vorhandene Anbieter lehnen wir ab, da keiner ausreichend auf die 
Sicherheitsaspekte eingeht, die ich unten anspreche. Auch wir werden 
bald Freunde von Freunden, deren Freunde, usw. usf. zum Mitmachen 
einladen, so dass wir auch damit rechnen müssen, dass nicht jeder Nutzer 
nur gute Absichten hat.

Trotz aller Versuche, die Pythonfunktionalität einzuschränken 
("restricted python"), damit ein Benutzer nicht beliebigen Code 
ausführen kann, existiert bis heute keine brauchbare Lösung, die 
produktiv einsetzbar ist und trotzdem Exploits wirksam verhindert. Wir 
gehen also davon aus, dass ein Nutzer der Python-IDE beliebigen 
Maschinencode einschleusen kann und damit auch Root-Rechte auf dem 
Server erlangen kann.

Das wäre zwar an sich der GAU, doch wir werden jede Instanz der IDE in 
einer Virtuellen Maschine laufen lassen, womit wir den Sicherheitsaspekt 
auf die Unmöglichkeit des Ausbruchs aus einer VM verschoben hätten. 
Welche Lösungen gelten als ausbruchssicher? VMWare? Virtualbox? Docker? 
LXC? Solange Nutzer sich nur innerhalb der VM austoben können, haben wir 
kein Problem. Es darf jedoch nicht passieren, dass sie auf das 
Filesystem des Hosts zugreifen können oder unkontrollierten 
Netzwerkverkehr starten.

Wie lösen vorhandene Anbieter (cloud9, pythonfiddle, repl.it, ...) 
dieses Problem?
Ist es möglich, sofort zu erkennen, wenn der Python-Interpreter über 
irgendwelche Umwege Root-Rechte erlangt? Dann könnten wir dessen VM 
sofort abschalten und den Benutzer blockieren.
Sollte sich keine Lösung finden, können wir die Online-IDE immer noch im 
kleinen (vertrauenswürdigen) Entwicklerkreis einrichten. Doch hätte dies 
den gravierenden Nachteil, dass wir nicht mal eben weitere Entwickler 
involvieren könnten, ohne die Sicherheit zu gefährden.

Danke, dass Du bis hierher durchgehalten hast. Wir hoffen auf eine 
lebendige und zielführende Diskussion.

Hagen

von Bernd K. (prof7bit)


Lesenswert?

Hagen schrieb:
> eine online-IDE zur
> Pythonentwicklung einzurichten, da wir häufig an verschiedenen
> Standorten und auf wechselnden Computern unsere Projekte bearbeiten.

Wie wärs mit Versionskontrolle stattdessen und lokal installierter IDE? 
Bis ihr ne online IDE aus dem Boden gestampft habt die an ein lokal 
installiertes PyDev auch nur ansatzweise herankommt vergehen doch Jahre. 
Und dann ist es immer noch nur eine Online IDE, wo soll der geschriebene 
Code denn letztendlich laufen? Das ist doch umständlich hoch drei!

von Hagen (Gast)


Lesenswert?

Es geht wirklich nur ums Absichern der IDE. Technisch ist alles fertig, 
so dass wir zwar noch ohne großartige grafische Spielereien, aber doch 
schon sehr effizient mit unserem "Proof of concept" arbeiten. Die 
Bedienungsfreundlichkeit können wir natürlich noch perfektionieren, aber 
darum geht es hier nicht.

Bernd K. schrieb:
> Und dann ist es immer noch nur eine Online IDE, wo soll der geschriebene
> Code denn letztendlich laufen? Das ist doch umständlich hoch drei!

Das ist das kleinste Problem. Selbstverständlich versionieren wir auch 
und können den Code dann auf jedem anderen Rechner installieren. Doch 
unsere Projekte erfordern oft eine langwierige Installationsorgie von 
Abhängigkeiten, die wir nicht "mal eben" zu Testzwecken beim Kunden 
einrichten können, dass passiert erst bei der Übergabe.

Besten Dank für deine Einschätzung, doch unsere Frage zielt leider in 
eine vollkommen andere Richtung.

Hagen

von Kaj (Gast)


Lesenswert?

Hagen schrieb:
> Welche Lösungen gelten als ausbruchssicher?
So etwas gibt es nicht. Das was Du willst ist absolute Sicherheit -> 
Kein System ist sicher! Verabschiede dich also von dem Gedanken des 
"unmoeglichen ausbruchs", und zwar ganz schnell.
Alles was du tun kannst ist es maximal schwer zu machen, sodass ein 
Angreifer die Lust verliert bevor er ausgebrochen ist. Alles andere ist 
dumme Illusion.

Hagen schrieb:
> VMWare? Virtualbox? Docker? LXC?
Neben den gennanten gibt es noch Firejail, chroot, bsdjail...
Firejail soll wohl inverbindung mit Grsecurity ziemlich gut sein.
Firejail: https://wiki.archlinux.org/index.php/Firejail

Aber wie gesagt: Absolute Sicherheit gibt es nicht.

von Hagen (Gast)


Lesenswert?

Kaj schrieb:
> Hagen schrieb:
>> Welche Lösungen gelten als ausbruchssicher?
> So etwas gibt es nicht.

Du sagst also, bei cloud9 & Co könnte man mit den bekannten 
Sicherheitslücken die anderen Benutzerkonten übernehmen? Ich habe es 
nicht ausprobiert, doch ich gehe zumindest davon aus, dass es nicht ganz 
so trivial ist. Was machen sie deiner Meinung nach anders?

> Hagen schrieb:
>> VMWare? Virtualbox? Docker? LXC?
> Neben den gennanten gibt es noch Firejail, chroot, bsdjail...

chroot und BSD jails sind als vollkommen unbrauchbar bekannt. Danke für 
den Hinweis zu Firejail. Davon hatte ich noch nicht gehört, und wenn es 
mit dem Konzept von BSD jails nichts zu tun hat, werde ich mich mal 
schlau machen.

Danke
Hagen

von Kaj (Gast)


Angehängte Dateien:

Lesenswert?

Hagen schrieb:
> Du sagst also, bei cloud9 & Co könnte man mit den bekannten
> Sicherheitslücken die anderen Benutzerkonten übernehmen? Ich habe es
> nicht ausprobiert, doch ich gehe zumindest davon aus, dass es nicht ganz
> so trivial ist.

Lies doch bitte weiter:
> Alles was du tun kannst ist es maximal schwer zu machen,

Du kannst jeden x beliebigen ITler, der sich mal ernsthaft mit 
IT-Sicherheit beschaeftigt hat, fragen, und jeder wird dir genau das 
selbe sagen:
1. Absolute Sicherheit gibt es nicht.
2. Alles was du tun kannst, ist es so schwer wie moeglich zu machen.

Das werden dir auch Leute wie Bruce Schneier, Edward Snowden, Fefe, FX, 
und andere sagen.

Selbst Firmen wie die NSA oder Google, Facebook, Microsoft, etc. haben 
Probleme damit ihre Systeme "sicher" zu machen. Cloudflare wirbt damit 
Webseiten vor DDoS-Attacken schuetzen zu koennen... und trotzdem gehen 
immer wieder Seiten die von Cloudflare gehostet werden wegen DDoS down.

Die genannten Loesungen (Virtuelle Maschine, Jails, was auch immer) sind 
eben genau dieses "maximal schwer", aber ausbruchssicher sind sie nicht.
Schau dir doch nur mal die Hackerwettbewerbe an, wie schnell die z.B. 
aus einer Sandbox im Browser ausbrechen.
Em Ende besteht das "maximal schwer" darin, die Rechte der Anwendung 
soweit wie moeglich einzuschraenken (VM/Sandbox, Jails, 
Rechteverwaltung/ACLs, Firewall,...)

Ich haeng da mal ein Bild (auszug aus einem Buch ueber Embedded 
Security) an. Soviel zum Thema "Sicherheit". Trotz super duper 
Sicherheitszertifikat nach 3 Tagen kaputt. Das ist auch heute nicht 
anders.

Sicherheit ist nichts was man auf Knopfdruck bekommt. Sicherheit ist 
kein Produkt. Sicherheit ist ein Prozess.

Es ist immerhin loeblich, dass Ihr euch ueber sowas gedanken macht. :)

Hier noch was zu virtual machine escape:
https://en.wikipedia.org/wiki/Virtual_machine_escape

Und hier was zu Jail escape:
https://github.com/netblue30/firejail/issues/240

Und hier noch was zu Docker:
https://news.ycombinator.com/item?id=7909622

von Hagen (Gast)


Lesenswert?

Kaj schrieb:
> 2. Alles was du tun kannst, ist es so schwer wie moeglich zu machen.

Sorry, aber ich sehe keinen wesentlichen Unterschied zwischen "fast 
nicht schwanger" und schwanger.

> Hier noch was zu virtual machine escape:
> https://en.wikipedia.org/wiki/Virtual_machine_escape
>
> Und hier was zu Jail escape:
> https://github.com/netblue30/firejail/issues/240
>
> Und hier noch was zu Docker:
> https://news.ycombinator.com/item?id=7909622

Ok. Darf ich fragen, warum du also 3 unbrauchbare Methoden vorgeschlagen 
hast?

Du scheinst dich ja mit der Materie beschäftigt zu haben. Wenn es also 
keine Möglichkeit gibt, den Ausbruch zu verhindern, ist es möglich, den 
Ausbruch automatisiert zu erkennen und durch Abschalten Schaden zu 
verhindern?

Danke
Hagen

von Ralf D. (doeblitz)


Lesenswert?

Hagen schrieb:
> Kaj schrieb:
>> 2. Alles was du tun kannst, ist es so schwer wie moeglich zu machen.
>
> Sorry, aber ich sehe keinen wesentlichen Unterschied zwischen "fast
> nicht schwanger" und schwanger.

Der Unterschied ist die Wahrscheinlichkeit, mit der das Ereignis 
eintritt. Und das ist so ziemlich das einzige, was bei Sicherheits- bzw. 
Risikobetrachtungen wichtig ist: Schaden x mit Wahrscheinlichkeit y.

[...]
> Du scheinst dich ja mit der Materie beschäftigt zu haben. Wenn es also
> keine Möglichkeit gibt, den Ausbruch zu verhindern, ist es möglich, den
> Ausbruch automatisiert zu erkennen und durch Abschalten Schaden zu
> verhindern?

Dafür gilt das gleiche: du kannst nicht alle Fälle erkennen und es kann 
eine gewisse Zeit dauern, in der das system mißbraucht werden kann -> 
Schaden.

Du kannst, wie Kaj schon schrieb, nur versuchen, den Mißbrauch so teuer 
zu machen, daß es sich für den Angreifer nicht lohnt. Aber auch das ist 
schwammig und von der subjektiven Bewertung aus Sicht des konkreten 
Angreifers abhängig (der ja irrationale Maßstäbe anlegen kann, z.B. wenn 
er sich rächen will).

Wenn ein Einbruch weder finanziellen Gewinn bringt (z.B. Botnetze), noch 
einen Imagegewinn (Trophäe) und du dir keine Feinde schaffst, die aus 
der Beschädigung eine emotionale Befriedigung ziehen können, dann hats 
du recht gute Chancen, in Ruhe gelassen zu werden. Auf mehr kann man 
nicht hoffen.

von Kaj (Gast)


Lesenswert?

Hagen schrieb:
> Kaj schrieb:
>> 2. Alles was du tun kannst, ist es so schwer wie moeglich zu machen.
>
> Sorry, aber ich sehe keinen wesentlichen Unterschied zwischen "fast
> nicht schwanger" und schwanger.
Doch, es gibt einen ganz wesentlichen unterschied!
Der Unterschied ist: Brauch ich 10 Minuten, 1 Tag, 1 Woche oder 1 Monat 
zum ein-/ausbrechen?
Je laenger es dauert ("maximal schwer"), desto groeser ist die 
Wahrscheinlichkeit, dass der Angreifer aufgibt bevor er sein Ziel 
erreicht hat.

Angreifer suchen sich hauptsaechlich Ziele die leicht zu knacken sind.
Das ist eine ganz einfache Rechnung: Habe ich ein System nach Zeit X 
noch immer nicht geknackt, so gehe ich weiter und suche neue (leichtere) 
Ziele. Denn in der selben Zeit die ich hier gerade verbraten habe, 
haette ich schon wieder 3 andere Systeme knacken koennen.
Damit da ein Angreifer 1 Monat Zeit verbrennt muesste das System schon 
ziemlich Wertvoll sein (exorbitante rechenleistung, strategisch gut 
platziert, was auch immer).

Je nach dem was ich fuer Absicheten verfolge ist jede Minuten, die ich 
mit deinem System verbringe, verlorenes Geld. Wenn es darum geht z.B. 
ein Botnetz wie Mirai aufzubauen brauche ich Ziele die leicht zu knacken 
sind. Denn je schneller ich Bots ak­qui­rie­ren kann, desto schneller 
kann ich damit Kohle verdienen. Ich waere ja schoen dumm, wen ich da 1 
Tag an Zeit verschwende und nichts bekomme, wenn ich in der selben Zeit 
schon 200 neue Bots haette haben koennen.

Das "maximal schwer" schuetzt schon mal vor grob 90% der Angreifer. Bei 
den restlichen 10% kannst du nur hoffen, dass sie dein System nicht 
interessant genug finden um sich die Muehe zu machen.

Hagen schrieb:
> Darf ich fragen, warum du also 3 unbrauchbare Methoden vorgeschlagen
> hast?
Virtuelle Maschinen und Docker hast Du vorgeschlagen ;)
Ich hab einfach mal 3 Beispiele dafuer rausgesucht, dass das alles nicht 
absolut sicher ist. Unbrauchbar sind diese Methoden deswegen aber noch 
lange nicht.

Hagen schrieb:
> ist es möglich, den
> Ausbruch automatisiert zu erkennen
Ehrlich gesagt: Keine Ahnung ob ein IDS (Intrusion Detection System) 
diese Art von Angreifer erkennen kann.
https://de.wikipedia.org/wiki/Intrusion_Detection_System

Hier nochmal ein aktuelles Beispiel:
Alle RHEL-Server in Microsofts Azure-Cloud waren angreifbar
https://www.heise.de/newsticker/meldung/Alle-RHEL-Server-in-Microsofts-Azure-Cloud-waren-angreifbar-3506326.html

von Hagen (Gast)


Lesenswert?

Ralf D. schrieb:
> Der Unterschied ist die Wahrscheinlichkeit, mit der das Ereignis
> eintritt. Und das ist so ziemlich das einzige, was bei Sicherheits- bzw.
> Risikobetrachtungen wichtig ist: Schaden x mit Wahrscheinlichkeit y.

Wie ich es hier lese, geht es aber um Schaden x mit Wahrscheinlichkeit 
100% und Aufwand y. Die Exploits stehen doch offen im Netz, es gibt 
Werkzeuge die einen nach dem anderen durchprobieren, die die Frage ist 
nur, ob es 10 oder 20 Sekunden dauert, bis einer zum Erfolg führt. 
Einzig mit einem Captcha bei der Anmeldung kann man verhindern, dass der 
Einbruch vollkommen automatisch erfolgt. Ein System ist entweder 
(bisher) sicher oder geknackt, 90% sicher gibt es nicht.

> Du kannst, wie Kaj schon schrieb, nur versuchen, den Mißbrauch so teuer
> zu machen, daß es sich für den Angreifer nicht lohnt.

Wie ich oben schrieb, ist der zu erwartende Schaden bei Datenklau der 
Grund, warum wir Anbieter wie cloud9 ausschließen. Softwareprojekte 
können leicht in die Hunderttausende gehen. Und da lohnt sich eine ganze 
Menge Aufwand.

> Wenn ein Einbruch weder finanziellen Gewinn bringt (z.B. Botnetze), noch
> einen Imagegewinn (Trophäe) und du dir keine Feinde schaffst, die aus
> der Beschädigung eine emotionale Befriedigung ziehen können, dann hats
> du recht gute Chancen, in Ruhe gelassen zu werden. Auf mehr kann man
> nicht hoffen.

Bestimmten Konkurrenten WIRD ein Einbruch beträchtlichen finanziellen 
Gewinn bringen. Und DAS möchten wir verhindern.

Danke
Hagen

von Hagen (Gast)


Lesenswert?

Kaj schrieb:
> Das "maximal schwer" schuetzt schon mal vor grob 90% der Angreifer. Bei
> den restlichen 10% kannst du nur hoffen, dass sie dein System nicht
> interessant genug finden um sich die Muehe zu machen.

1% oder 0.1% oder 0.001%der Benutzer WIRD das System interessant genug 
finden, auch einen Monat lang 100 professionelle Hacker darauf 
anzusetzen.

Kann es sein, dass du Wirtschaftsinformatiker bist? Und jedes Problem 
mit der 80-20-Regel erschlägst? Und dann die tatsächlichen Fachkräfte 
zur Schnecke machst, weil du ihnen nur 20% Resource bewilligt hast, um 
ein Problem zu 80% zu lösen, was vielleicht in deiner 
Wirstschaftstheorie das Optimum ist, aber jeden realen Betrieb killt?

> Hagen schrieb:
>> Darf ich fragen, warum du also 3 unbrauchbare Methoden vorgeschlagen
>> hast?
> Virtuelle Maschinen und Docker hast Du vorgeschlagen ;)

Kaj schrieb:
> Neben den gennanten gibt es noch Firejail, chroot, bsdjail...

Die kamen von dir! Dass chroot und bsdjail Schrott sind, ist allseits 
bekannt. Dass Firejail Schrott ist, hast du nun im Nachhinein bestätigt.

> Hagen schrieb:
>> ist es möglich, den
>> Ausbruch automatisiert zu erkennen
> Ehrlich gesagt: Keine Ahnung ob ein IDS (Intrusion Detection System)
> diese Art von Angreifer erkennen kann.
> https://de.wikipedia.org/wiki/Intrusion_Detection_System

Dann würde ich meine Frage gerne dahingehend umdefinieren, ob der 
Übergang eines nichtprivilegierten Prozesses zum Start eines Prozesses 
mit Rootrechten zuverlässig detektiert werden kann.

Danke
Hagen

von Kaj (Gast)


Lesenswert?

Hagen schrieb:
> Kann es sein, dass du Wirtschaftsinformatiker bist?
Noe, ich war 4 Jahre Softwareentwickler bei einer Firma fuer 
Geldspielgeraete, unteranderem mit Manipulationsanalyse betraut, und 
jetzt studiere ich IT-Sicherheit an der Uni Bochum.

Zu dem Rest von deinem Geschreibsel sag ich schon nichts mehr.

Mach doch einfach wie du willst, mir ist das herzlich egal.

von Hagen (Gast)


Lesenswert?

Kaj schrieb:
> jetzt studiere ich IT-Sicherheit an der Uni Bochum.

Erstsemester? Jedenfalls wünsche ich dir dabei mehr Erfolg als bisher!
Danke für deine Bemühungen zu meiner Frage.

von Sheeva P. (sheevaplug)


Lesenswert?

Hagen schrieb:
> Erstsemester? Jedenfalls wünsche ich dir dabei mehr Erfolg als bisher!
> Danke für deine Bemühungen zu meiner Frage.

Für jemanden, der andere um Hilfe gebeten hat, aber schon mit der 
schlichten Wahrheit, daß es absolute Sicherheit nicht gibt, offenbar 
völlig überfordert bist, kanzelst Du Menschen, die Dir helfen wollten, 
sehr herablassend ab.

Vielen Dank. Gut zu wissen, daß man sich die Mühe sparen kann.

von Kaj (Gast)


Lesenswert?

Hagen schrieb:
> Jedenfalls wünsche ich dir dabei mehr Erfolg als bisher!
Wie kommst du darauf das ich Erfolg brauche? Und wie kommst du darauf 
das ich bisher keinen Erfolg gehabt haette?

von S. R. (svenska)


Lesenswert?

Da Du alle bereits vorhandenen Lösungen als "vollkommen unbrauchbar" und 
"Schrott" betrachtest, gibt es keine Dir angemessenen Lösungen.

Baue eine!

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Kaj schrieb:
> Ich haeng da mal ein Bild (auszug aus einem Buch ueber Embedded
> Security) an. Soviel zum Thema "Sicherheit". Trotz super duper
> Sicherheitszertifikat nach 3 Tagen kaputt. Das ist auch heute nicht
> anders.

EAL 4 ist bei weitem kein "super duper Sicherheitszertifikat", sondern 
ein Papiertiger. Durch das Zertifikat wird nur bescheinigt, dass der 
Antragsteller in der Lage ist, alle Papiere formal korrekt 
zusammenzutragen. Der Zertifizierer führt bei EAL 4 aber z.B. keine 
Penetrationstest o.ä. durch, sondern kontrolliert, ob z.B. laut 
Antragsteller Reviews durchgeführt werden.

Bei den höheren Stufen ab EAL 5 wird das ganze dann plötzlich sehr viel 
aufwändiger, da dort mit formalen mathematischen Methoden gearbeitet 
wird.

Eine Schwäche aller EAL-Zertifizierungen besteht aber auch darin, dass 
das Augenmerk eigentlich nur auf der Software liegt und manche 
Seiteneffekte der eingesetzten Hardware nicht hinreichend untersucht 
werden müssen. Weiterhin muss man sich bei jedem EAL-zertifizierten 
Produkt das sog. "Security Target" (ST) anschauen, in dem auch die sog. 
"Security Functional Requirements" (SFR) explizit aufgelistet werden. 
Die Festlegung der SFR erfolgt jedoch durch den Antragsteller, d.h. es 
werden für bestimmte Geräteklassen, z.B. Firewalls, keine konkreten 
SFR-Mindestanforderungen durch den Zertifizierer vorgegeben. Falls man 
also als Antragsteller bei der Prüfung bestimmter SFR durchfällt, kann 
man diese immer noch aus dem ST streichen.

Als Außenstehender, der nicht sehr tief in der Materie steckt, hat man 
also eigentlich kaum eine Chance, die Aussagekraft eines EAL-Zertifikats 
zu beurteilen.

von Fitzebutze (Gast)


Lesenswert?

Tach,

es entsteht der Eindruck, als ob sich da gewaltig verzettelt wird und 
das Interesse böser Mächte an Hobbyprojekten unter Freunden gewaltig 
überschätzt ist.
Richtig ist schon: Viele Sandboxen gelten nur als sicher, bis ein 
Exploit/Chip-Bug auftritt. Es gibt aber durchaus Möglichkeiten, eine 
pure Python-Sandbox beweisbar sicher hinzukriegen und auch entsprechend 
zertifiziert zu bekommen. Geht halt auf Kosten gewisser Funktionalität.
Es ist aber recht simpel:
Solange man keine root-Rechte bekommt, bricht man auch aus einem chroot 
nicht aus. Wenn ihr da glaubt, dass manche Cloud-Anbieter solche 
Probleme weniger im Griff hätten als ihr, seid ihr gehörig auf dem 
Holzweg.

Mal abgesehen davon ist die Idee hirnrissig, online an Code 
rumzufrickeln, welches Projekt das auch immer werden soll. 
Synchronisiert euch lieber per github, und wenn dynamisch Codeobjekte 
durch die Gegend wandern sollen, dann nutzt halt die Features, die 
Python diesbezüglich mitbringt.
Irgendwie widerspricht das 100k€ teure Softwareprojekt nach welchem sich 
die bösen Hacker die Finger ausstrecken auch dem Konzept, dass mal ein 
paar Freunde von Freunden gemeinsam an Code rumpfriemeln...

Mir ehrlich gesagt zuviel Bla und Wichtigtuerei.

von Hagen (Gast)


Lesenswert?

Fitzebutze schrieb:
> Es gibt aber durchaus Möglichkeiten, eine
> pure Python-Sandbox beweisbar sicher hinzukriegen und auch entsprechend
> zertifiziert zu bekommen.

Hast du dazu eine Quelle? Beweisbar sicher halte ich für ausgeschlossen, 
wenn das Python noch etwas mit Python zu tun haben soll, das Nachladen 
von native Libraries nicht ausgeschlossen wird, und nicht 10x langsamer 
als CPython läuft.
Uns würde schon eine Lösung reichen, die keine dokumentierten und seit 
Jahren ungepatchten Einfallstore bietet.

Danke
Hagen

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Fitzebutze schrieb:
> Es gibt aber durchaus Möglichkeiten, eine
> pure Python-Sandbox beweisbar sicher hinzukriegen und auch entsprechend
> zertifiziert zu bekommen. Geht halt auf Kosten gewisser Funktionalität.

Ich bezweifele, dass sich wirklich jemand die Mühe machen würde, einen 
formalen Korrektheitsbeweis (EAL-Sprech: "formal verifizierter Entwurf 
und getestet") durchzuführen, da der hierfür benötigte Aufwand immens 
wäre. Der Mehraufwand gegenüber der ansonsten üblichen Testtiefe liegt 
locker um einen Faktor 1000 oder mehr höher. Bereits für recht einfache 
Systeme, z.B. ein sehr stark eingeschränkter RTOS-Kernel, reden wir über 
einen Zeitbedarf von mehreren Jahren bis Jahrzehnten.

Man sollte durchaus auch beachten, dass es nicht ausreicht, die 
Korrektheit der ausgeführten Software zu beweisen, sondern dies muss 
insbesondere auch für die Hardware erfolgen. Für die allermeisten 
Architekturen ist die formale Beweisbarkeit nicht gegeben, z.B. ARM, 
WIMRE auch x86. Da muss man gar nicht erst mit dem Beweisversuch 
beginnen.

von Fitzebutze (Gast)


Lesenswert?

Hi,

Links kann ich dazu keine anbieten. Es gibt aber einige Sandbox-Ansätze, 
die nicht erlauben, Binärcode zu injizieren, gidf.
Zum Rest kann ich nur soweit aus dem Nähkästchen plaudern: Man muss sich 
die eigentliche Stackmachine vornehmen. Die ist ansich recht atomar und 
lässt sich recht gut sandboxen, zudem ist sie auf dem VM-Level 
beweisbar. Aber es müssen einige builtin-Module kastriert werden, und 
alle libc-functionen sind `guarded`. Externe .so sind natürlich nicht 
zugelassen. Netzwerkkram wird nochmal über tun/tap virtualisiert. Das 
ganze läuft als sicherer LXC, oder unter MicroPython auf Chip mit 
abgetrenntem TCP-HWstack, also garantiert buffer-overflow-resistent.
Zu Andreas: m.W. gibt es einen 386er-Kern mit full coverage. ARM Cortex 
M0 ist für SIL3 zertifizierbar, obwohl ich seit ARM7 keinem ARM-Core 
mehr 100% trauen würde. In unserem Fall ist es eine Stack-Maschine, die 
wegen ihres einfachen instruction sets mit vernünftigen Aufwand 
beweisbar ist.
Jetzt kann man natürlich noch hardware-bugs (gekippte Bits, 
Rowhammer-Methoden) versuchen auszunutzen. Dagegen hält dann ein 
HW-Watchdog.
Fast alles obiger Massnahmen basieren aber auf "hypothetischen 
Annahmen".
Ansich hat Hagen einen pragmatischen Ansatz schon genannt: setuid 
monitoren, falls mal jemand aus der Sandbox ausbricht. Mit allem anderen 
hat man schon 1-2 Jahre zu tun, aber nicht gerade 10. Die Zeiten haben 
sich auch geändert...

von Personaler (Gast)


Lesenswert?

Fitzebutze schrieb:
> Externe .so sind natürlich nicht
> zugelassen.

Also nicht brauchbar für ernsthafte Anwendungen :(

> Das ganze läuft als sicherer LXC, oder unter MicroPython auf Chip mit
> abgetrenntem TCP-HWstack, also garantiert buffer-overflow-resistent.

Wozu der zusätzliche Sicherheitslayer? Traut man der Sandbox nicht?

> Ansich hat Hagen einen pragmatischen Ansatz schon genannt: setuid
> monitoren, falls mal jemand aus der Sandbox ausbricht.

Und dazu gibt es keine Literatur? Es müsste doch möglich sein, den 
Kernel so zu patchen, dass das System herunterfährt, sobald eine 
potentiell bösartige Aktion aufgerufen wird, die nicht auf einer 
Whitelist steht.
Nur, was ist eine vollständige Liste der zu überwachenden Aktionen?
Und wie wird es praktisch umgesetzt? Dazu muss es duch schon Lösungen 
geben?

Danke
Hagen

von S. R. (svenska)


Lesenswert?

Wenn die internen Datenstrukturen des Kernels am Kernel vorbei geändert 
werden, kann der Kernel sich überwachen wie er lustig ist und er wird 
nix merken.

Schizophrenie merken auch immer nur die anderen. Interessant übrigens 
auch der Fakt, dass unser Hagen auch als Personaler unterwegs ist und 
damit die Nutzungsbedingungen verletzt...

von Daniel A. (daniel-a)


Lesenswert?

Ich hatte schon länger die Idee, eine art Webdesk zu machen die 
Anwendungen im Browser ausführen kann. Mittlerweile hat jemand anderes 
das aber schon gemacht, nennt sich browsix: 
https://github.com/plasma-umass/browsix

Wenn man die dinge zur client seite verlagert, werden die Einfallstore 
massiv reduziert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.