Forum: PC-Programmierung WebP Heap Pufferüberlauf Schwachstelle ohne Rechte


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 Mic (m-m-c)


Lesenswert?

Guten Abend,

in den letzten Wochen und Tagen werden zunehmend Informationen bezüglich 
der WebP-Sicherheitslücke bekannt.
Ich hätte mal eine Frage an alle Programmierer und 
Systemadministratoren:

Kann die Sicherheitslücke, bei nicht gepatchtem Browser/Programm, auch 
Schaden anrichten, wenn der Linux-Nutzer ohne Admin-Rechte in Verwendung 
ist?

Das Prinzip solcher Pufferüberläufe scheint mir verstanden, jedoch 
erschließt sich mir nicht, wie die Schadcodes die Rechteumgebung 
verlassen und den immerzu erwähnten Schaden am System anrichten können.

Über klärende Worte würde ich mich freuen.

Euch einen schönen Abend.

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Wenn er über die WebP-Lücke erstmal im Kontext des Users Code ausführen 
kann, hat der Angreifer schon fast gewonnen. Er kann auf alle Daten des 
Users zugreifen, aus dem Browser gespeicherte Logins/Session-Cookies 
auslesen, kann den Rechner zur Spam-Schleuder oder 
Cryptowährungs-Schürfer machen usw.

Der Sprung vom Useraccount zu Root-Rechten ist dann optional. Aber der 
ist meist auch der einfachere, solche Rechte-Ausweitungs-Fehler sind 
deutlich häufiger, und werden von den Distributionen meist nachrangig 
behandelt, wenn dort in der default-Installation sowieso jeder "sudo" 
nutzen kann.

: Bearbeitet durch User
von Mic (m-m-c)


Lesenswert?

Moin,

danke für die Rückmeldung!

Wahrscheinlich liegt hier mein Verständnisproblem:
Wieso kann der User System-ändernden Code ohne root-Rechte ausführen?

Ein maliziöses Bild trägt den Bauplan für ein Programm (Crypto-Miner, 
etc.), der von WebP verarbeitet wird. Damit müsste, wenn ich nicht ein 
komplettes Verständnisproblem habe, per WebP ein Programm generiert 
werden, das die bösartigen Absichten ausführt.

Um dieses zur Ausführung und Installation zu bringen, hat ein 
Useraccount aber die Rechte nicht.

Wir gehen natürlich davon aus, dass sudo nicht den Standardlogin hat.

Konnte ich klarmachen, wo ich hänge?

Grüße

von Εrnst B. (ernst)


Lesenswert?

Mic schrieb:
> Wieso kann der User System-ändernden Code ohne root-Rechte ausführen?

Weil der Code nichts am System ändern muss, um bösartige Sachen zu tun.

Mic schrieb:
> Ein maliziöses Bild trägt den Bauplan für ein Programm

Eher: Einen Downloader, der den Schadcode nachlädt.

Mic schrieb:
> Um dieses zur Ausführung und Installation zu bringen, hat ein
> Useraccount aber die Rechte nicht.

Zum Ausführen braucht der Useraccount keine gesonderten Rechte.
Probier's aus, lad dir ein Programm nach /tmp oder in dein $HOME 
herunter, starte es von da.
Installieren ist zweitrangig. Notfalls über ein Autostart in deinem 
User-Dir. Dann läuft der Schadcode halt erst, wenn du dich einloggst.

von Mic (m-m-c)


Lesenswert?

Gibt es eine sinnvolle Möglichkeit auf solche Programme zu screenen?
Hintergrundverbindungen per Netstat zu suchen, ist wahrscheinlich 
hoffnungslos, da solche Programme getaktete Verbindungen nutzen würden, 
denke ich.

Ich muss ehrlich gestehen, ich ging in der Annahme, dass Angriffe wie 
Drive-by etc für Linux nicht gelten.

Sind wir nicht langsam in der Zeit angekommen, dass auch für Linux 
Programme notwendig werden, die etwaige Programme suchen?

Rkhunter erscheint mir für die Alltagsnutzung am Desktop unpraktikabel. 
Man müsste ja prinzipiell ständige Suchläufe vornehmen. Das macht man im 
Alltag wohl kaum.

von Oliver (imonbln)


Lesenswert?

Mic schrieb:
> Kann die Sicherheitslücke, bei nicht gepatchtem Browser/Programm, auch
> Schaden anrichten, wenn der Linux-Nutzer ohne Admin-Rechte in Verwendung
> ist?

Der Schadcode kann ein eigenes Programm im Kontext des Benutzers laufen 
lassen. Zum Beispiel eine Remote Shell oder einen Loader der weiteren 
Schadcode im Kontext des Benutzers nachlädt. Über eine weitere Lücke im 
System wie zum Beispiele CVE-2022-0847 "Dirty Pipe" kann der Angreifer 
dann Root werden und das System übernehmen. Viele dieser Angriffe laufen 
automatisch und es wird meisten beobachtet das 2–3 Lücken genutzt 
werden, um ein System zu übernehmen, deshalb sind Post-mortem-Analyse, 
wenn Sie veröffentlicht werden so wichtig.

Mic schrieb:
> Gibt es eine sinnvolle Möglichkeit auf solche Programme zu screenen?
> Hintergrundverbindungen per Netstat zu suchen, ist wahrscheinlich
> hoffnungslos, da solche Programme getaktete Verbindungen nutzen würden,
> denke ich.

Ja es gibt eine ganze Reihe von Maßnahmen die man ergreifen kann um sein 
System sicherer zu gestalten. Die einfachste ist es, das System 
regelmäßig zu updaten und seinen Verstand zu gebrauchen, wenn ein 
Programm erweiterte Rechte anfodert.

Danach kann man noch mit den capabilities, die Systemcall, welche ein 
Programm ausführen darf, minimieren und es in einen privaten Mountspace 
verschieben. Weiter kannst du mit apparmor oder selinux deine Systeme 
Härten. Im allgemein wird defence in depth, als Strategie empfohlen.

Eine restriktive Firewall, die auch unerwartet ausgehende Verbindungen 
unterbindet, ist auch nicht zu verachten. In Kombination mit einem IDS, 
und Deep Package Inspektion, gepaart mit einem gepflegten Monitoring 
System, sorgt das alles schon für einen deutlichen Vorteil der 
Heimmannschaft.

Allerdings gibt es das alles nicht umsonst, man muss ganz schön Arbeit 
investieren und einen Dreibuchstaben Dienst wird es auch nicht 
aufhalten.
Außerdem sollte ich erwähnen, dass Deep Package Inspektion 
verschlüsselte Verbindungen aufbricht (mit einem Man in the Middle) oder 
ignoriert. Beides will man eigentlich nicht.

von Mic (m-m-c)


Lesenswert?

Vielen Dank für Eure Antworten!

Die Anmerkung, den Verstand zu nutzen und sein System up to date zu 
halten, ist natürlich nachvollziehbar.

Meine Frage bezogen auf die "Ungepatchtheit" des Systems ist absichtlich 
gestellt gewesen, da es immer einen Zeitraum zwischen Lücke und Patch 
gibt, in dem man nackt dasteht.

SELinux erscheint mir für den interessierten Heimanwender sehr fordernd 
zu sein.

AppArmor finde ich eine super Idee.

Ich frage aus den Augen eines Heimanwenders, der sich - soweit ihm 
zeitlich möglich - vertieft mit Linux beschäftigt. Leider obliegt mir im 
Alltag nicht die Möglichkeit, mir die Kenntnisse eines langjährigen 
(z.B. Systemadmins) Profis anzulesen, daher suchte ich die Expertise 
dieses geschätzten Forums.

Ich möchte mich als einen restriktiven Internet-Nutzer bezeichnen, der 
prinzipiell jeden anzuklickenden Link hinterfragt und somit 
wahrscheinlich nicht in das klassische Befallsspektrum gehören sollte.

Da ich diese Thematik wichtig finde, wollte ich dieses Thema eröffnen, 
das mich bis jetzt schon sehr bereichert hat.

von Oliver (imonbln)


Lesenswert?

Mic schrieb:
> Leider obliegt mir im
> Alltag nicht die Möglichkeit, mir die Kenntnisse eines langjährigen
> (z.B. Systemadmins) Profis anzulesen, daher suchte ich die Expertise
> dieses geschätzten Forums.

Verlangt ja auch keiner, jede Reise beginnt mit einem ersten Schritt. 
Fang mit den leichten Sachen an. Nimm eine Linux Distribution die Werte 
auf Security legt, mit Debian oder Ubuntu würde ich anfangen.
Gewöhne dir an regelmäßig zu Updaten und Richte eine Firewall ein. Als 
Erstes eine Firewall, die nur einzelne Incomming Ports durchlässt und 
alle ausgehende Verbindungen erlaubt. Wenn du dann etwas sicher bist, 
schreibst du deine Firewall so um, dass sie auch nur noch ausgewählte 
ausgehende Verbindungen zulässt.
Danach suchst du dir das nächste Thema das dich interessiert, vielleicht 
Appamor oder du fängst an Sachen zu automatisiert, spielt keine Rolle, 
der Spaß steht im Vordergrund und schon nach kurzer Zeit bist du der 
Linux/Netzwerk Experte in deinem Umfeld und irgendwie hast du dann auf 
einmal das nötige Wissen um dein Heimnetz überdurchschnittlich sicher zu 
gestalten.

von Joerg W. (joergwolfram)


Lesenswert?

Eine weitere Maßnahme ist meiner Meinung nach Sandboxing mit Firajail. 
Bei mir "sehen" zum Beispiel Browser und Mailclient nur das 
"Downloads"-Verzeichnis und können auch keine anderen Programme starten. 
Wenn ich Dateien als Anhang verschicken will, muss ich sie deswegen erst 
mal (temporär) in den Downloads-Ordner kopieren, aber Sicherheitsgewinn 
geht halt in den meisten Fällen nicht ohne Komfortverlust.

Jörg

von Andreas M. (amesser)


Lesenswert?

Mic schrieb:
> Ich muss ehrlich gestehen, ich ging in der Annahme, dass Angriffe wie
> Drive-by etc für Linux nicht gelten.

Für Linux gelten alle Angriffsszenarien genauso wie für Windows. 
Eigentlich hat ein Angreifer sogar noch mehr Möglichkeiten, da unter 
Linux oftmals umfangreiche Skriptsprachen standardmäßig mitinstalliert 
sind. Da braucht Schadcode nicht mehr viel zu machen und kann auf die 
vorhandenen Bibliotheken zurückgreifen, Scripte lassen sich auch 
schlecht von Scannern erkennen. Allerdings ist general das 
Sicherheitskonzept/-architektur von Linux ausgereifter. Bei Microsoft 
hat es lange gedauert bis man begriffen hat, das der Nutzer keine 
Adminrechte per Default haben sollte. Jetzt muss man das nur noch den 
Nutzern austreiben. Teilweise sind die Admin Tools von Microsoft immer 
noch umständlich von reinen Nutzeraccounts aus zu nutzen, so das sich 
oftmals dann doch mit "Administrator" angemeldet wird....

Oliver schrieb:
> Erstes eine Firewall, die nur einzelne Incomming Ports durchlässt und
> alle ausgehende Verbindungen erlaubt.

Nein. Eine Firewall die auf dem gleichen Rechner läuft ist sinnfrei. 
Wenn ich als Angreifer erstmal root Rechte habe, dann schalte ich die 
Firewall einfach aus. Alternativ nutze ich einfach einen der vorhandenen 
Webbrowser, Anwendungen, etc. um nach draußen zu kommunizieren, 
Irgendwelche Programme die der Anwender üblicherweise benutzt wird es 
schon geben.

Wenn mein Rechner hingegen offene Ports hat, auf die von außen nicht 
zugegriffen werden soll, dann sind die dazugehörigen Serverdienste halt 
entsprechend so zu konfigurieren, dass sie nur auf dem loopback 
lauschen.

Eine Firewall bringt nur was wenn sie als unabhängiges System im 
Netzwerkpfad hängt.

Oliver schrieb:
> Weiter kannst du mit apparmor

Das ist für den Normalbenutzer wohl sinnvollste Weg. apparmor ist bei 
Debian in der Standardinstallation immer aktiv. Ansonsten eben wie 
gesagt Verstand einsetzen und auf GUI Programme zu Administration wenn 
möglich verzichten. Bei mir darf su/sudo keinen Dialog aufpoppen. 
Administration geht immer über Kommandozeile, d.h. dass Passwort muss 
dort eingegeben werden. Die Authentifizierung bleibt dann mit der 
Konsole verknüpft, d.h. ein Schadprogramm müsste dann schon genau dieses 
Sitzung innerhalb des Terminalfenster innerhalb eines bestimmten 
Zeitfensters entern - was weniger trivial ist als man denkt. Es kann 
nicht einfach im Hintergund su/sudo benutzen und hoffen das der Anwender 
den Dialog wegklickt.

von Foobar (asdfasd)


Lesenswert?

Joerg schrieb:
> Eine weitere Maßnahme ist meiner Meinung nach Sandboxing mit Firajail.
> Bei mir "sehen" zum Beispiel Browser und Mailclient nur das
> "Downloads"-Verzeichnis und können auch keine anderen Programme starten.

Bringt in so einem Fall allerdings wenig.  Der Browser läuft bereits, 
lädt den Schadcode in Form eines Bildes brav herunter und führt ihn 
dann, wegen des Bufferoverflows, auch direkt aus.  Der Rest ... siehe 
Beitrag (und Bild!) von Ernst weiter oben.

von Monk (roehrmond)


Lesenswert?

Mic schrieb:
> Sind wir nicht langsam in der Zeit angekommen, dass auch für Linux
> Programme notwendig werden, die etwaige Programme suchen?

Jein.

Virenscanner für Linux gibt es. Das Problem ist, das Virenscanner nur 
nach bereits bekannten Viren / Sicherheitslücken suchen können. Wenn 
eine Lücke bekannt ist, sollte man sie besser zügig beheben.

von Mic (m-m-c)


Lesenswert?

Wenn ich all die Beiträge lese, deucht mich der Gedanke, dass nur ein 
dicht regulierendes SELinux offene Lücken fangen könnte.

Apparmor schlägt doch in puncto "Schadsoftware im Browser abfangen" in 
die selbe Kerbe wie auch andere Sandboxing-Techniken.

Irre ich?

Ps: Wobei Apparmor aufgrund der Prozessanalyse stärker sein sollte als 
reines Sandboxing...

: Bearbeitet durch User
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.