Gestern ging es hier im Blog um eine dubiose Software von Chip.de, die ohne mein Wissen auf den Computer gelangte. Und auch wenn ich Chip speziell an den Pranger gestellt habe (weil die es verdienen) bleibt festzustellen: Das ist bei Windows ein Grundproblem.
Windows ist ein «klassisches» Betriebssystem, wenn man so sagen kann. Ich meine damit, dass es in der Zeit konzipiert wurde, als Schadsoftware zwar nicht völlig unbekannt, aber noch kein grosses Thema war: Windows 1.0 wurde im 21. November 1985 vorgestellt. Die theoretischen Anfänge des Computervirus gehen weiter zurück – aber zu einer realen Sache wurde diese Schädlingsform in den Jahren 1985 und 1986. (Man muss kein Numerologe sein, um diese Koinzidenz interessant zu finden.)
Das hat zur Folge, dass ein Programm sehr weitgehende Möglichkeiten hat. In den Anfängen von Windows, aber auch beim Mac OS durfte jedes Programm alles. Das war schon damals nicht sinnvoll, da auch ein gutmeinendes, aber unfähiges Programm Probleme verursachen konnte. Mit den Jahren kam das Konzept des Nutzer- und Administratorkontos dazu – auch wenn Windows XP sich unsinnigerweise so installiert hat, dass die allermeisten Anwender mit dem Admin-Konto gearbeitet haben. Typischerweise wäre es ja so, dass das Admin-Konto nur für jene Aufgaben genutzt wird, für die man volle Rechte benötigt.
Bösartigen Programmen die Hände binden
Gearbeitet wird mit dem Nutzerkonto mit eingeschränkten Rechten, sodass eine bösartige Software oder ein amoklaufendes Programm keinen Maximalschaden anrichten kann. Heute ist das so – wobei aus Gründen des Komforts ein Programm auch temporär erhöhte Rechte anfordern kann, damit man sich als Nutzer nicht aus- und im Admin-Modus wieder einloggen muss.
Die abgestuften Benutzerrechte sind eine sinnvolle Sache, lösen das Problem aber nicht vollständig. Das liegt daran, dass selbst mit eingeschränkten Nutzerrechten ein Programm noch viel Schaden anrichten kann: Jedes Programm kann nicht nur die eigenen Daten, sondern auch Daten der anderen Anwendungen lesen und verändern und bei Windows auch an der Registry herumfuhrwerken und weitgehende Hintergrundaktivitäten entfalten. Das ist manchmal komfortabel und nötig – wird aber sehr oft missbraucht. Programme tun Dinge, die für ihre Kernaufgabe nicht notwendig wären, einfach weil es möglich ist – und weil man sich alle Eventualitäten offen halten will.
Die völlig überzogenen Systemeingriffe
Das führt dazu, dass simple Programminstallationen mitunter mit grossen Systemveränderungen einhergehen: Da werden munter Hunderte Registry-Einträge vorgenommen. Es werden Hintergrundprozesse eingerichtet und gestartet. Und vielleicht werden auch Treiber oder andere hardwarenahe Dinge eingerichtet. Es gibt sogar Programme, die Systemkomponenten austauschen. Dass das Probleme verursacht, sollte eigentlich auf der Hand liegen. Aber da es von aussen in aller Regel unmöglich ist, die Ursachen solcher Systemkonflikte aufzudecken, kommen die Hersteller ungeschoren davon.
Ein Problem ist auch, dass Deinstallationen oft unvollständig erfolgen und gerade die übleren «Hacks» am System bei der Entfernung des Programms nicht rückgängig gemacht werden. Man kann sich mit Programmen wie dem Revo Uninstaller behelfen (siehe Softwareschrott entsorgen und Software loswerden, aber sauber!) oder die (demnächst wohl bald abgeschaffte) Systemwiederherstellung bemühen. Aber es ist und bleibt ein Problem, dass nach der Installation der falschen Software Windows nie wieder so sein wird wie vorher – ausser, man lässt sich auf die Neuinstallation ein.
Die mobilen Betriebssysteme machen es vor
Die mobilen Betriebssysteme, insbesondere iOS machten es schlauer: Da darf eine App standardmässig nur ihr eigenes Verzeichnis verhunzen. Die App Sandbox beim Betriebssystem fürs iPhone und iPad beschränkt den Zugriff auf die Systemressourcen. Apple beschreibt sie hier wie folgt:
App Sandbox is not a silver bullet. Apps can still be compromised, and a compromised app can still do damage. But the scope of potential damage is severely limited when an app is restricted to the minimum set of privileges it needs to get its job done.
By limiting access to sensitive resources on a per-app basis, App Sandbox provides a last line of defense against the theft, corruption, or deletion of user data, or the hijacking of system hardware, if an attacker successfully exploits security holes in your app. For example, a sandboxed app must explicitly state its intent to use any of the following resources using entitlements:
Hardware (Camera, Microphone, USB, Printer)
Network Connections (Inbound or Outbound)
App Data (Calendar, Location, Contacts)
User Files (Downloads, Pictures, Music, Movies, User Selected Files)
Kurz zusammengefasst: Eine Sandbox ist keine Wunderwaffe, sondern die letzte Verteidigungslinie gegen Sicherheitslücken in Apps. Die Sandbox will jedoch den Schaden minimieren. Deswegen müssen Apps Zugriffsrechte auf diverse Ressourcen explizit anfordern und erklären, warum sie diese Rechte benötigen. Aufgezählt werden die Hardware wie Kamera und Mikrofon, Netzwerkverindungen, gemeinsame Nutzerdaten wie der Kalender, der geografische Ort, sowie Benutzerdokumente wie Musik, Fotos und Filme.
Das fände ich auch bei Windows wichtig. Apps sollten grundsätzlich in einer Sandbox laufen und von Haus aus «nichts» dürfen. Nichts heisst konkret: Sie dürfen mit dem Nutzer interagieren, während sie im Vordergrund ausgeführt werden. Sie dürfen Dateien aus ihrem Programmverzeichnis schreiben und lesen. Und sie dürfen Nutzerdateien im Dokumentenverzeichnis speichern und von dort aus laden. Das wars aber auch.
Alle weiteren Berechtigungen müssten speziell angefragt und begründet werden – und wären vom Benutzer jederzeit entziehbar. Nebst den Ressourcen Hardware, Netzwerk, Anwendungs- und Nutzerdaten wären auch Hintergrundaktivitäten zu autorisieren, ebenso Veränderungen an den Systemverzeichnissen, an den Systemressourcen wie Schriften und an der Ordnerstruktur ausserhalb des Programmordners.
Sicherheit und Stabilität würde erhöht
Das würde die Sicherheit und Stabilität massiv erhöhen, davon bin ich überzeugt. Und es wäre inbesondere eine wirkungsvolle Massnahme, um den Software rot massiv zu verringern. Das ist das alt bekannte Problem, das Windows auf Dauer immer langsamer wird.
Einige Zwischenbemerkungen dazu:
- Windows verwaltet inzwischen Berechtigungen, nämlich bei Start > Einstellungen > Datenschutz. Diese gelten allerdings nur für die Universal Windows Platform-Apps, die oft auch «moderne Apps» genannt werden. Für die klassischen Desktop-Apps – die die meisten von uns zu fast hundert Prozent nutzen – gilt es eben leider nicht.
- Es gibt die Möglichkeit, Programme in der Sandbox auszuführen, siehe Mit diesen Tipps läuft Windows schnell und stabil und Der Sandkasten fürs Windows-System. Sandboxie ist allerdings nur mässig nutzerfreundlich. Und eben: Es ist eine übergestülpte Lösung, die nur für einzelne Apps gilt, und keine im System verankerte Sicherheitsmassnahme.
- Es gibt in Windows neuerdings die (hier beschriebene) Option namens Überwachter Ordnerzugriff. Die ist ein Schritt in die richtige Richtung, aber noch umständlich in der Benutzung.
Nun kann man der Ansicht sein, dass solche Massnahmen aus Plattformen wie Windows, die sich aller Kritik zum Trotz durch grosse Offenheit auszeichnen, geschützte Werkstätten machen, in der nichts mehr möglich ist. Ähnliche Kritik gibt es auch beim Mac, wo es immer schwieriger wird, Programme nicht aus dem Mac-App-Store zu beziehen, sondern frei zu installieren.
Die Kritik ist zu einem gewissen Grad berechtigt. Doch bei der Sandbox wäre es weiterhin möglich, ein Programm mit maximalen Rechten auszustatten. Doch ein Programm müsste jede einzelne Berechtigung anfordern und begründen. Das alleine hätte eine sehr disziplinierende Wirkung auf die Hersteller. Sie würden nicht mehr auf Vorrat Rechte reservieren, sondern nur anfordern, was auch nötig ist. Sie kämen unter Rechtfertigungsdruck, wenn sie Berechtigungen ohne plausiblen Grund anfordern würden. Und der Nutzer würde dubiose Apps erkennen und könnte auf die Installation auch einmal verzichten.
Es ist schwer verständlich, dass Microsoft nicht längst ein solches System auch für die klassischen Apps eingeführt hat. Wahrscheinlich ist es schwierig, das nachträglich zu tun. Denkbar, dass bei vielen Anwendungen der Benutzerkomfort stark leiden würde. Aber es wäre schon ein Fortschritt, wenn der Nutzer die beanspruchten Rechte einsehen könnte oder bei der Installation über weitgehende Eingriffe informiert werden würde – am besten, bevor das Kind in den Brunnen gefallen ist.
So eingeschränkt wie in iOS möchte ich am PC nicht arbeiten müssen. Kein Zugriff aufs Dateisystem: mal schnell etwas herunterladen und mit einem anderen Programm öffnen geht nicht.
Für mich ist die Trennung zwischen Benutzern logisch und nicht die Trennung zwischen Applikationen. Vielleicht bin ich zu konservativ und ich lade auch nicht mehr fünf Programme pro Woche runter…
Was bei Windows fehlt (bzw. mit Chocolatey im Aufbau ist), ist eine Paketverwaltung. Jede Software muss ihren eigenen Updater mitbringen. Dieser läuft dann häufig als Dienst im Hintergrund. Nur, um einmal täglich zu prüfen, ob es eine neue Version gibt. Auch dem Taskplaner vertrauen viele Entwickler nicht, bzw. er hatte früher zu wenig Möglichkeiten. Also läuft für zeitgesteuerte Software jeweils noch ein Dienst: “Acronis Scheduler”, “Veeam Scheduler” etc.
Ohne Paketverwaltung rückwirkend Beschränkungen einzuführen ist fast unmöglich. Kommt noch dazu, dass die Software nicht dafür ausgelegt ist. Android-Apps (und bei iOS wird es ähnlich sein) müssen Berechtigungen anfordern und können darauf reagieren, wenn ihnen etwas verwehrt wird. Lässt man ein herkömmliches Programm “C:” nicht auflisten, wird es abstürzen.
Aber es gibt ja auch für Windows Lösungen: Sandboxie, wie von Dir genannt, oder auch Virtualisierung. Eine VM zum Ausprobieren von Software ist schnell installiert und bei Bedarf schnell zurückgesetzt.
Was auch hilft: portable Versionen von Anwendungen einsetzen, auch wenn man sie nur am PC braucht. So spart man sich die Updater-Dienste.
Einverstanden: Die Paketverwaltung wäre ein Segen, und es ist völlig unverständlich, warum es Microsoft noch immer zulässt, dass jedes Programm mit seinem eigenen Installationsprogramm und Updater operiert.
Mit dem Hinweis auf iOS meinte ich nicht, dass das Dateisystem verschwinden sollte. Apple weicht jene Regel selbst auf; mit der Dateien-App ist bei iOS 11 so etwas wie ein sehr, sehr limitierter Finder/Explorer vorhanden.
Und eben: Wenn ein Programm unter Windows aus gutem Grund den Vollzugriff anfordert, ist alles wie bis anhin möglich. Nur müsste es eben einen guten Grund geben, damit man als Anwender den Vollzugriff gewährt.