Der spezifische Angriff, über den Sie Bedenken geäußert haben, ist:
Häufig täuscht ein Angreifer einen leichtgläubigen Benutzer lediglich durch Herunterladen und Klicken zum Ausführen einer ausführbaren Datei.
Zumindest in dem üblichen Fall, in dem die Datei in einem Webbrowser heruntergeladen wird, sollte dies in Ubuntu bereits verhindert werden, indem der Browser die Richtlinie Execute-Permission Bit Required einhält. Die direktesten relevanten Teile dieser Richtlinie sind:
Anwendungen, einschließlich Desktops und Shells, dürfen keinen ausführbaren Code aus Dateien ausführen, wenn es sich um beides handelt:
- Es fehlt das ausführbare Bit
- befindet sich im Home-Verzeichnis eines Benutzers oder im temporären Verzeichnis.
- Dateien, die von einem Webbrowser, einem E-Mail-Client usw. heruntergeladen wurden, dürfen niemals als ausführbar gespeichert werden.
Wenn ein Benutzer also aufgefordert wird, ein Programm in einem Webbrowser herunterzuladen, und versucht, die Datei durch Doppelklicken auszuführen, wird sie nicht ausgeführt. Dies gilt auch dann, wenn die heruntergeladene Datei ein Shell-Skript oder sogar eine .desktop-Datei ist. (Wenn Sie sich jemals gefragt haben, warum .desktop-Dateien in Ihrem Home-Verzeichnis als ausführbar markiert werden müssen, obwohl es sich nicht wirklich um Programme handelt, ist dies der Grund.)
Benutzer können dieses Verhalten durch Konfigurationsänderungen ändern. Die meisten werden es nicht, und diejenigen, die es tun, sollten es wahrscheinlich auch nicht, aber darum müssen Sie sich nicht wirklich sorgen. Das größere Problem ist der komplexere Angriff, über den Sie sich Ihrer Meinung nach bereits Sorgen machen, bei dem eine böswillige Person (oder ein Bot) den Benutzer anweist, eine bestimmte Datei herunterzuladen, sie selbst als ausführbar zu markieren (über ihren Dateibrowser oder mit chmod
) und dann starte es.
Leider würde die Einschränkung der Fähigkeit eines Benutzers, das Ausführungsbit für eine Datei zu setzen oder andere Dateien als die auf einer Whitelist auszuführen, das Problem nicht merklich mindern. Einige Angriffe werden bereits funktionieren, und diejenigen, die nicht einfach geändert werden können, tun dies. Das grundlegende Problem besteht darin, dass der Effekt des Ausführens einer Datei auch dann erzielt werden kann , wenn die Datei keine ausführbaren Berechtigungen besitzt .
Dies lässt sich am besten anhand eines Beispiels veranschaulichen. Angenommen, es evil
handelt sich um eine Datei im aktuellen Verzeichnis, die bei Angabe der ausführbaren Berechtigungen ( chmod +x evil
) und von run ( ./evil
) etwas Böses bewirken würde. Je nachdem, um welche Art von Programm es sich handelt, kann der gleiche Effekt durch eine der folgenden Methoden erzielt werden:
Keiner von denen, auch nicht die letzten, verlangt , dass die ausführbare Datei Berechtigungen oder sogar , dass der Benutzer sein kann der ausführbare Datei Berechtigungen geben.
Aber die böswilligen Anweisungen müssen nicht einmal so kompliziert sein. Betrachten Sie diesen nicht böswilligen Befehl, der eine der offiziell empfohlenen Methoden zum Installieren oder Aktualisieren von NVM ist :
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Der Grund, der nicht böswillig ist, ist, dass NVM keine Malware ist. Wenn die URL jedoch zu einem Skript führt, das bei der Ausführung böse ist, wird das Skript mit diesem Befehl heruntergeladen und ausgeführt. Zu keinem Zeitpunkt müsste eine Datei ausführbare Berechtigungen erhalten. Das Herunterladen und Ausführen des in einer schädlichen Datei enthaltenen Codes mit einem einzigen Befehl wie diesem ist meines Erachtens eine ziemlich häufige Aktion, bei der Angreifer die Benutzer dazu verleiten.
Sie könnten versuchen, die verfügbaren Interpreter für die Benutzer einzuschränken. Es gibt jedoch keine Möglichkeit, dies zu tun, die sich nicht wesentlich auf die normalen Aufgaben auswirkt, zu denen Benutzer voraussichtlich in der Lage sein sollen. Wenn Sie eine extrem eingeschränkte Umgebung einrichten, in der fast alles, was ein Benutzer auf einem Computer tun möchte, unzulässig ist, z. B. ein Kiosk, auf dem nur einige Programme ausgeführt werden, bietet dies möglicherweise ein gewisses Maß an sinnvollem Schutz. Aber es hört sich nicht so an, als wäre es Ihr Anwendungsfall.
Die ungefähre Antwort auf Ihre Frage lautet "Nein". Die umfassendere Antwort lautet, dass Sie möglicherweise verhindern können, dass Benutzer Dateien ausführen, die nicht auf einer Whitelist aufgeführt sind. Dies ist jedoch im strengen technischen Sinne von "Ausführen" zu verstehen, der nicht erforderlich ist, um den vollen Effekt der Ausführung der meisten Programme oder Skripte zu erzielen. Um zu verhindern , dass , könnten Sie versuchen , die Whitelist sehr klein zu machen, so hat es keine Dolmetscher mit Ausnahme derjenigen , auflisten , die stark eingeschränkt werden könnte. Aber selbst wenn Sie das geschafft haben, konnten Benutzer nicht viel tun, und wenn Sie es so klein gemacht haben, dass sie sich nicht selbst verletzen konnten, konnten sie wahrscheinlich nichts tun. (Siehe Thomas Wards Kommentar .)
Wenn Ihre Benutzer sich selbst verletzen können, können sie dazu verleitet werden, sich selbst zu verletzen.
Möglicherweise können Sie verhindern, dass bestimmte Programme verwendet werden oder sich auf andere Weise schädlich verhalten. Wenn Sie sich bestimmte Muster ansehen, denen Ransomware tendenziell folgt, können Sie möglicherweise bestimmte häufige Fälle verhindern. (Siehe AppArmor .) Dies könnte einen gewissen Wert liefern. Aber es gibt Ihnen nichts, was der von Ihnen erhofften umfassenden Lösung nahe kommt.
Unabhängig von den technischen Maßnahmen (falls vorhanden), die Sie am Ende ergreifen, ist es am besten, die Benutzer zu schulen. Dazu gehört, dass sie keine Befehle ausführen, die sie nicht verstehen, und keine heruntergeladenen Dateien in Situationen verwenden, in denen sie nicht erklären können, warum dies einigermaßen sicher ist. Aber es beinhaltet auch Dinge wie das Erstellen von Backups, sodass der Schaden so gering wie möglich ist, wenn etwas schief geht (aufgrund von Malware oder auf andere Weise).