Ist das ganze Message System nicht ein riesen Security Loch?



  • volkard schrieb:

    nwp3 schrieb:

    In dem Fall würde ich Windows sagen wollen, dass das Spiel Adminrechte bekommt, aber den Bot nicht sehen darf. Kann man Windows auch nicht sagen, oder ich weiß nur nicht wie es geht.

    Denk doch mal nach, wenn Du den Bot wirksam mit ein paar Klicks vorm Admin unsichtbar machen kannst, dann kann sich auch die Malware verstecken.

    Kann nicht passieren, das würde die Zustimmung des Nutzers/Admins erfordern, mit einer echten Maus/Tastatur, bei dem das System verifiziert hat, dass die Nachricht nicht gefälscht wurde. Als OS könnte man das. Man muss dieses "Programmrechte = Nutzerrechte"-Denken ablegen. Das sind sehr verschiedene Dinge, die aber aus mir völlig unklaren Gründen gleich gesetzt werden (ok, macht es einfacher, ist aber falsch). Dieser historische Fehler wird irgendwann korrigiert werden, auch wenn es sehr viel länger dauert, als ich erwartet hätte.

    hustbaer schrieb:

    @nwp3
    Dass du das möchtest, ist mir schon klar. Dass es praktisch wäre auch.
    Aber du hast behauptet (bzw. zumindest stark impliziert), dass es gaaaaanz einfach umzusetzen gewesen wäre.

    Und da behaupte ich mal einfach das krasse Gegenteil: das ist überhaupt nicht einfach umzusetzen.
    Zumindest nicht so lange man den User nicht nerven will, und nicht so-gut-wie alles was ein OS ausmacht neu erfinden will.

    Ja, man muss dafür einiges umgestalten. Wenn man es im Nachhinein einfügen will baut man einen Syscall-filter, der Syscalls entsprechend von Regeln modifiziert. Es ist nicht einfach das alles ausreichend mächtig, sicher und einfach zu benutzen hinzukriegen, aber auch nicht viel schwieriger als virtueller Speicher, Dateisysteme oder Firewalls.



  • @nwp3
    Du misverstehst mich. Und/oder stellst dir das ganze wieder zu einfach vor.
    Ein paar Syscalls auf bestimmte Regeln zu checken ist wirklich nichts was ein OS Entwicklerteam vor unüberwindliche Probleme stellen würde. Die Implementierung würde zwar vermutlich etliche Mannjahre benötigen, aber nichts was eine Firma wie MS sich nicht leisten könnte.

    Aber es bringt nicht viel. Weil sich damit alleine ein System das ohne Rücksicht auf diese Dinge entworfen wurde nicht vernünftig absichern lässt. Und mit "nicht vernünftig" meine ich man kann es damit durchaus sicher machen, aber nicht ohne ganz massive Einbussen in der Usability.

    Denk nur mal an so einfache Dinge wie das Anhängen eines Attachments, oder das Starten eines Programms durch einen Doppelklick auf ein Dokument.
    Soll jedes Email-Programm, Schreibprogramm, Zeichenprogramm etc. alle Dateien lesen dürfen? Sicher nicht. Und da haben wir schon das erste Problem.

    Natürlich ist das nicht unlösbar, aber es ist mMn. schwer bis unmöglich das zu lösen ohne viele bestehenden Programme unverwendbar zu machen.

    Klar, man kann für jedes Programm Regeln definieren. Programm X darf jedes File lesen auf das der User geklickt hat um es zu starten. Programm Y darf es in dem Fall auch schreiben. Und Programm Z darf es lesen und schreiben, und zusätzlich noch Programm A starten das dann automatisch diese Berechtigung erbt. Aber wer soll diese Regeln alle definieren? => Technisch umsetzbar, aber nicht praktikabel.

    Wenn es funktionieren soll, dann muss man hier einiges überdenken. Und alle bestehenden Anwendungen auf dieses neue System anpassen.



  • ...
    Und natürlich ist auch nicht klar wer oder was "ein Programm" überhaupt ist, bzw. welches "Programm" wann was können soll.

    z.B. will ich, wenn ein beliebiges Programm mir einen "Open-File" Dialog aufmacht, diesen auch zu sehen bekommen, und erwarte mir dass er wie gewohnt funktioniert. Also dass ich da ein beliebiges File auswählen kann, egal wo es liegt. Ich sehe den Dialog ja, und wenn ich auf OK klicke sollte es eben auch OK sein. Und das Programm soll das ausgewählte File dann auch lesen können. Aber nicht notwendigerweise schreiben.

    Und da ergeben sich gleich neue Fragen.
    Was wenn das Programm ein Editor ist, ich das File ändere, und es dann mit einem Klick auf "Save" wieder speichern will?
    Ohne Modifikation in dem Programm wird das nichts werden, denn woher soll das System jetzt wissen dass das Programm auch speichern darf? Es war ja der "Open-File" Dialog, und nicht "Save-File".

    Und, was viel schwerwiegender ist: ich erwarte wie gesagt dass da der hübsche Open-File Dialog aufgeht, wo ich alle meine Files sehen kann. Dummerweise ist das in z.B. Windows aber so gelöst, dass dieser Dialog als Teil des Programms das ihn aufmacht ausgeführt wird. Und noch schlimmer: das Programm das ihn aufmacht kann ihn auch noch modifizieren (Subclassing), was es erforderlich macht dass er weiterhin im selben Prozess läuft.

    Das ist es was ich oben mit "was ist ein Programm überhaupt" gemeint habe: ist der Open-File Dialog ein eigenes Programm, das alle Verzeichnisse auflisten darf?,Und sogar alle Files zum Zwecke des Anzeigens von Thumbnails lesen darf? Oder ist der Dialogs des aufrufenden Programms, und damit dessen Beschränkungen unterworfen?
    Und wenn der Open-File Dialog alles auflisten darf, aber im selben Prozess laufen soll, wie soll das System das dann überprüfen?

    Oder, anderes Beispiel: was ist mit java.exe? Darf java.exe jetzt alles? Nein? Woher soll das OS wissen was java.exe darf und was nicht?

    Und wann werden Berechtigungen an Kindprozesse vererbt und wann nicht? Wenn ein Programm vollen Zugriff auf ein bestimmtes Verzeichnis haben soll, dann sollte es auch ein Batch-File mit dem Inhalt "del Verzeichnis\*" erfolgreich ausführen können. In dem Fall sollte die Berechtigung also vererbt werden. In vielen anderen Fällen ist das aber vermutlich nicht erwünscht.

    ----

    Ich will nicht behaupten dass diese und andere Probleme die sich da ergeben alle unmöglich lösbar sind. Aber ich gehe davon aus dass es in Summe verflixt viel Arbeit wäre und das Endergebnis allerbestenfalls "erträglich" wäre. Aber sich nicht angenehm zu verwenden.

    Wenn man alles über den Haufen wirft, und akzeptiert dass sämtliche Programme, die unter dem neuen OS vernünftig laufen sollen, angepasst werden müssen, sieht es schon viel besser aus. Wobei es nichtmal dann einfach ist. mMn. immer noch um Grössenordnungen komplexer als eine Firewall oder ein File-System zu implementieren.



  • Ich denk, eine sehr interessante und gute Lösung wäre capability-based security. Gibt nur leider kein Mainstream-OS, das darauf basiert...



  • Capability-based Security ist da sicher eine gute Sache.
    Ist auch genau das worauf ich hinaus wollte - ich hatte nur den Namen vergessen 😉

    Und es ist alleine noch nicht die Lösung. Die Herausforderung ist dann mit Capability-based Security ein System zu entwerfen das wirklich gut verwendbar und gleichzeitig sicher ist.



  • hustbaer schrieb:

    z.B. will ich, wenn ein beliebiges Programm mir einen "Open-File" Dialog aufmacht, diesen auch zu sehen bekommen, und erwarte mir dass er wie gewohnt funktioniert. Also dass ich da ein beliebiges File auswählen kann, egal wo es liegt. Ich sehe den Dialog ja, und wenn ich auf OK klicke sollte es eben auch OK sein. Und das Programm soll das ausgewählte File dann auch lesen können. Aber nicht notwendigerweise schreiben.

    Völlig richtig. Glücklicherweise wird der Dialog vom OS kontrolliert. Und es gibt dort standardmäßig eine Read-only-Häkchen, dass nur per Flag ausgeschaltet wird. Also kriegt man es sehr leicht hin, dass der Datei-Öffnen-Dialog alle Dateien anzeigt und man auswählen kann, ob der öffnende Prozess lesen und/oder schreiben können soll. Ähnlich geht das auf der Konsole. Wenn ich "Programm Datei" eintippe, dann will ich offensichtlich, dass Programm auf Datei zugreifen darf. Das mit dem Lesen und Schreiben auswählen ist dann natürlich etwas schwerer zu spezifizieren, aber dafür finden sich sicher Lösungen, zumal Windows jetzt nicht für die super Shell bekannt ist.

    hustbaer schrieb:

    Und da ergeben sich gleich neue Fragen.
    Was wenn das Programm ein Editor ist, ich das File ändere, und es dann mit einem Klick auf "Save" wieder speichern will?
    Ohne Modifikation in dem Programm wird das nichts werden, denn woher soll das System jetzt wissen dass das Programm auch speichern darf? Es war ja der "Open-File" Dialog, und nicht "Save-File".

    Habe ich ja angegeben. Und wenn das Programm was versucht, was weder erlaubt, noch verboten ist, dann muss das System halt nachfragen. Zumal man sowas wie Rechtsklick->Titelleiste->Berechtigungen hinzufügen/entfernen einbauen könnte.

    hustbaer schrieb:

    Und, was viel schwerwiegender ist: ich erwarte wie gesagt dass da der hübsche Open-File Dialog aufgeht, wo ich alle meine Files sehen kann. Dummerweise ist das in z.B. Windows aber so gelöst, dass dieser Dialog als Teil des Programms das ihn aufmacht ausgeführt wird. Und noch schlimmer: das Programm das ihn aufmacht kann ihn auch noch modifizieren (Subclassing), was es erforderlich macht dass er weiterhin im selben Prozess läuft.

    Sehe ich nicht als zwingend an. Dann läuft der Open-File-Dialog halt nicht mehr im selben Prozess und kann nicht mehr per Subclassing modifiziert werden. Ist sicher kein unüberwindbares Hindernis. Außerdem kann man Styles anbieten, damit die Anwendungen den Stil des Dialogs ihrer Anwendung nach anpassen kann.

    hustbaer schrieb:

    Das ist es was ich oben mit "was ist ein Programm überhaupt" gemeint habe: ist der Open-File Dialog ein eigenes Programm, das alle Verzeichnisse auflisten darf?,Und sogar alle Files zum Zwecke des Anzeigens von Thumbnails lesen darf? Oder ist der Dialogs des aufrufenden Programms, und damit dessen Beschränkungen unterworfen?
    Und wenn der Open-File Dialog alles auflisten darf, aber im selben Prozess laufen soll, wie soll das System das dann überprüfen?

    Open-File ist eigener Prozess / Systemprozess mit Sonderrechten.

    Ich habe mir Vorlagen vorgestellt. Standard ist, dass ein Programm nur in seinem eigenen Ordner lesen und schreiben darf sowie Systemdateien lesen darf.
    Es gibt die Vorlage Browser: Darf ins Internet aber nicht Server spielen.
    Vorlage Editor: Keine Sonderrechte
    Vorlage Viewer: Keine Sonderrechte
    Vorlage Installer: Darf Software installieren und die von ihm installierte Software ändern und löschen sowie ins Internet.
    Vorlage Static: Modifier, der dafür sorgt, dass Programme zwar alles ändern dürfen, aber nach dem Beenden wird alles Rückgängig gemacht. Sinnvoll für Browser, Spiele und Emailanhänge.
    Vorlage Interpreter/Generator (Beispiel Java, Python, Bash, gcc, Flash, Eclipse, ...): Hat selbst keine Rechte, sondern erbt Rechte von der geöffneten Datei. Also werden Rechte nicht python.exe sondern script.py zugewiesen.

    hustbaer schrieb:

    Oder, anderes Beispiel: was ist mit java.exe? Darf java.exe jetzt alles? Nein? Woher soll das OS wissen was java.exe darf und was nicht?

    Das System kennt Java bereits, ist ein Interpreter. Welche Sonderrechte die bla.class/bla.java haben wird der Nutzer festlegen, wenn sie benötigt werden.

    hustbaer schrieb:

    Und wann werden Berechtigungen an Kindprozesse vererbt und wann nicht? Wenn ein Programm vollen Zugriff auf ein bestimmtes Verzeichnis haben soll, dann sollte es auch ein Batch-File mit dem Inhalt "del Verzeichnis\*" erfolgreich ausführen können. In dem Fall sollte die Berechtigung also vererbt werden. In vielen anderen Fällen ist das aber vermutlich nicht erwünscht.

    Die Rechtevergabe steht den Programmen bei der Erschaffung von Kindprozessen zur Verfügung. Ein Browser würde sagen "Nutzer will dass ich dieses komische Plugin namens Flash mit irgendwelchem Kram aus dem Internet füttere und ausführe. Ich will nichts damit zu tun haben". Und dann schützt das OS den Browser vor Flash (was auch dringend nötig ist). Bei del hat das OS bereits Sonderregeln vorkonfiguriert. Wenn man MinGW oder so installiert, dann muss man das von Hand machen. Aber dafür gibt es dann ein XML-Rechtevergabedokument, wo drin steht, welche Rechte an welche Programme gehen sollen, was vom System gelesen werden kann, was der Nutzer nur abnicken oder ändern muss. Das Rechtevergabedokument kann vom Softwarehersteller geschrieben und mitgeliefert werden, für bessere Usability. Man muss auch nicht alles spezifizieren, die allermeisten Programme kommen ohne Sonderrechte aus und man wird nur gefragt, wenn ein Programm mehr haben will.

    hustbaer schrieb:

    Ich will nicht behaupten dass diese und andere Probleme die sich da ergeben alle unmöglich lösbar sind. Aber ich gehe davon aus dass es in Summe verflixt viel Arbeit wäre und das Endergebnis allerbestenfalls "erträglich" wäre. Aber sich nicht angenehm zu verwenden.

    Es ist zweifellos viel Arbeit. Aber es ist dringend nötig. Willst du lieber ein paar Rechte vergeben oder weiter hoffen, dass die ganzen Trojaner auf deinem Rechner friedlich bleiben? Ich behaupte wir können es uns nicht leisten auf dieses Mindestmaß an Sicherheit zu verzichten.

    hustbaer schrieb:

    Wenn man alles über den Haufen wirft, und akzeptiert dass sämtliche Programme, die unter dem neuen OS vernünftig laufen sollen, angepasst werden müssen, sieht es schon viel besser aus. Wobei es nichtmal dann einfach ist. mMn. immer noch um Grössenordnungen komplexer als eine Firewall oder ein File-System zu implementieren.

    Ich wollte nicht sagen, dass es einfach ist. Ich wollte sagen, dass es dringend nötig ist und es reichlich Ressourcen gibt, es zu verwirklichen.

    Wundert sich noch jemand warum es das nicht schon ewig gibt oder sehe nur ich das so?



  • Völlig richtig. Glücklicherweise wird der Dialog vom OS kontrolliert. Und es gibt dort standardmäßig eine Read-only-Häkchen, dass nur per Flag ausgeschaltet wird. Also kriegt man es sehr leicht hin, dass der Datei-Öffnen-Dialog alle Dateien anzeigt und man auswählen kann, ob der öffnende Prozess lesen und/oder schreiben können soll. Ähnlich geht das auf der Konsole. Wenn ich "Programm Datei" eintippe, dann will ich offensichtlich, dass Programm auf Datei zugreifen darf.

    Und wenn ich einem Programm per Drag and Drop Daten gebe ? Oder per Script, muss ich jeder Batchdatei die ich mache/nutze erst aufwändig Rechte vergeben ? Oder wenn ich ein Programm im Kontextmenü habe ? Alles Extrarechte ?

    Vorlage Installer: Darf Software installieren und die von ihm installierte Software ändern und löschen sowie ins Internet.

    Aber da müsstest du auch wieder aufpassen dass der dir nichts bösartiges installiert..

    Vorlage Static: Modifier, der dafür sorgt, dass Programme zwar alles ändern dürfen, aber nach dem Beenden wird alles Rückgängig gemacht. Sinnvoll für Browser, Spiele und Emailanhänge.

    Und wenn ich aber einen Teil der Browerdaten(Spieldaten/Emailanhangdaten behalten will ? Muss ich dann jede einzelne Datei von Hand absegnen ?

    Es ist zweifellos viel Arbeit. Aber es ist dringend nötig. Willst du lieber ein paar Rechte vergeben oder weiter hoffen, dass die ganzen Trojaner auf deinem Rechner friedlich bleiben? Ich behaupte wir können es uns nicht leisten auf dieses Mindestmaß an Sicherheit zu verzichten.

    Doch das geht, siehst du ja 🤡
    Ein paar Rechte ist gut, ich denke du unterschätzt das Ganze. Das wären ne ziemliche Masse an Rechten, und ich will echt nicht für jeden kleinen Vorgang ne extra Berechtigung abgeben. Soll dann jeder Softwarehersteller ein Rechtefile mitliefern dass man (so wie die ABG *husthust*) durchlesen muss ? Das endet dann für 99% der User so dass man einfach alles weiterklickt. Da zu unterscheiden was gefährlich und was gebraucht wird ist gar nicht so einfach. Es bringt dir ja auch nichts wenn die User aus Angst alles verweigern und am Ende läuft nichts mehr...

    Wundert sich noch jemand warum es das nicht schon ewig gibt oder sehe nur ich das so?

    Wie gesagt, für den 0815 User wäre das zuviel Aufwand, die meisten werden das nicht wirklich einschätzen können. Und für die die es können wäre es auch nicht weniger Aufwand als aufzupassen was man sich auf den PC lädt.



  • nwp3 schrieb:

    hustbaer schrieb:

    Und, was viel schwerwiegender ist: ich erwarte wie gesagt dass da der hübsche Open-File Dialog aufgeht, wo ich alle meine Files sehen kann. Dummerweise ist das in z.B. Windows aber so gelöst, dass dieser Dialog als Teil des Programms das ihn aufmacht ausgeführt wird. Und noch schlimmer: das Programm das ihn aufmacht kann ihn auch noch modifizieren (Subclassing), was es erforderlich macht dass er weiterhin im selben Prozess läuft.

    Sehe ich nicht als zwingend an. Dann läuft der Open-File-Dialog halt nicht mehr im selben Prozess und kann nicht mehr per Subclassing modifiziert werden. Ist sicher kein unüberwindbares Hindernis. Außerdem kann man Styles anbieten, damit die Anwendungen den Stil des Dialogs ihrer Anwendung nach anpassen kann.

    Vielleicht reden wir aneinander vorbei.
    Ich versuche dir klarzumachen dass sich sowas nicht über Windows, Linux etc. drüberstülpen lässt.
    Dass sowas nur umsetzbar ist, wenn man auch in Kauf nimmt, dass es dann ein neues OS ist, unter dem keine alten Programme mehr laufen.

    Also angenommen MS macht das mit Windows 10, dann läuft unter Windows 10 kein einziges Windows 8 Programm mehr.

    Und das ist der Grund, warum ich mich überhaupt nicht wundere, dass es das nicht schon längst gibt.

    Und nochmal: ich glaube du stellst dir das alles viel zu einfach vor.

    Vorlage Interpreter/Generator (Beispiel Java, Python, Bash, gcc, Flash, Eclipse, ...): Hat selbst keine Rechte, sondern erbt Rechte von der geöffneten Datei. Also werden Rechte nicht python.exe sondern script.py zugewiesen.

    Wie soll das gehen?
    java.exe macht blubb.class auf, blubb.class macht dings.class auf, dings.class liest ein File namens Sachen.lua und fängt dieses zu interpretieren. Mit welchen Rechten läuft java.exe in diesem Moment?

    Damit das funktionieren kann muss die Gesamte Softwarelandschaft mitspielen. Und da Java-Programme das leider nicht tun, werden sie auf so einem System nur sehr beschränkt einsetzbar sein.



  • nwp3 schrieb:

    volkard schrieb:

    nwp3 schrieb:

    In dem Fall würde ich Windows sagen wollen, dass das Spiel Adminrechte bekommt, aber den Bot nicht sehen darf. Kann man Windows auch nicht sagen, oder ich weiß nur nicht wie es geht.

    Denk doch mal nach, wenn Du den Bot wirksam mit ein paar Klicks vorm Admin unsichtbar machen kannst, dann kann sich auch die Malware verstecken.

    Kann nicht passieren, das würde die Zustimmung des Nutzers/Admins erfordern, mit einer echten Maus/Tastatur, bei dem das System verifiziert hat, dass die Nachricht nicht gefälscht wurde. Als OS könnte man das. Man muss dieses "Programmrechte = Nutzerrechte"-Denken ablegen. Das sind sehr verschiedene Dinge, die aber aus mir völlig unklaren Gründen gleich gesetzt werden (ok, macht es einfacher, ist aber falsch). Dieser historische Fehler wird irgendwann korrigiert werden, auch wenn es sehr viel länger dauert, als ich erwartet hätte.

    Ich wehre mich dagegen, daß Du das als so einfach darstellst. (Und die anderen beipflichen per "Klar geht das, ist aber aufwändig" statt "Nee".)
    Ok, ProgrammX darf keine *.exe-Dateien schreiben. Aber darf es sie in die Zwischenablage kopieren? Darf es sie als ROT13-Verschlüsselt in die Zischenablage kopieren? Darf es eine hochladen und den Downloadlink in die Zwischenablage kopieren? Wollen wir überhaupt diese Beschneidung, wo ein Mail-Programm (Outlook natürlich!) keine *.exe-Dateien mehr empfangen kann, was für einen Programmierer einer Katastrophe gleichkommt?



  • Wo steht da was von "ProgrammX darf keine *.exe-Dateien schreiben"?
    Falsch zitiert?
    Muss ich jetzt erst 10 seitenlange Beiträge neu schreiben bevor ich finde worauf du dich beziehst?



  • Und wenn ich einem Programm per Drag and Drop Daten gebe ? Oder per Script, muss ich jeder Batchdatei die ich mache/nutze erst aufwändig Rechte vergeben ? Oder wenn ich ein Programm im Kontextmenü habe ? Alles Extrarechte ?

    Gab es da nicht mal eine Phase, in der viele Windows Benutzer sich nur als Admin einloggten?

    Soll heißen: Wenn die Rechte zu strikt eingestellt sind, so werden viele Nutzer sich nur noch als Admin einloggen, was die Rechteverwaltung ein wenig unterwandert.

    Sieht man auch ein wenig an den Android Apps. So manche Anwendung verlangt alle Rechte, obwohl sie diese nicht benötigen, und trotzdem wird diese massenhaft installiert. 😞

    Rechteverwaltung ist gut und schön. Aber viele (alle?) Angriffe erschleichen sich auch Rechte. Und nicht immer ist eine Debug-Hook Funktion dran schuld...


Anmelden zum Antworten