Frage Was ist Stack Clash und was kann ich dagegen tun?


Ich habe von einer neuen Sicherheitslücke mit dem Namen Stack Clash gehört, die offenbar mehrere Unix-ähnliche Systeme betrifft (nicht nur Linux, sondern auch die BSDs, Solaris).

  • Was ist es? Wie ist es zu einem Multi-OS-Bug gekommen?
  • Wie schütze ich meine Systeme?

27
2018-06-20 01:39


Ursprung




Antworten:


Stack Clash ist ein Exploit, der auf einer ziemlich alten Technik basiert. Der von einem Prozess verwendete Speicher ist in zwei Bereiche unterteilt - der Stapel und der Haufen. Man stellt sich allgemein vor, dass der Stapel nach unten wächst und der Haufen nach oben wächst. Was passiert, wenn das eine oder andere genug wird? Zusammenstoß mit dem anderen? Allgemeiner gesagt, was passiert, wenn der Stack genug wächst, um in nicht verwandte Speicherbereiche einzudringen? Die ursprüngliche Schwachstelle ist 12 Jahre alt, und die Linux - Kernel - Entwickler haben es vorübergehend mit Hilfe eines Wacheseite. Den Forschern von Qualys ist es trotz der Schutzseite jedoch gelungen, dies zu nutzen.

Ars Technica berichtet:

Stack Clash-Schwachstellen haben sich langsam durchgesetzt,   zuerst 2005 mit der Ergebnisse des Sicherheitsforschers Gaël   Delalleau und fünf Jahre später mit der Veröffentlichung eines Linux   Verletzlichkeit von Forscher Rafal Wojtczuk. Linux-Entwickler    führte einen Schutz ein das sollte Stack verhindern   Konflikte, aber die heutige Forschung zeigt, dass es relativ einfach ist   damit Angreifer diese Maßnahme umgehen können.

Die von Qualys entwickelte primäre Proof-of-Concept-Attacke nutzt a   Schwachstelle als CVE-2017-1000364 indiziert. Qualys Forscher auch   Entwickelte Angriffe, die Stack Clash verwenden, um separate auszunutzen   Sicherheitslücken, einschließlich CVE-2017-1000365 und CVE-2017-1000367. Zum   Beispiel, in Kombination mit CVE-2017-1000367, ein kürzlich behobener Fehler in   Sudo auch von Qualys entdeckt, können lokale Benutzer Sudo zu nutzen   vollständige Root-Rechte für eine viel größere Anzahl von Betriebssystemen. Qualys hat es bisher geschafft   war nicht in der Lage, die Exploits aus der Ferne Code ausführen zu lassen. Der einzige   Remote-Anwendung, die sie untersuchten, war der Exim-Mail-Server, der   Es stellte sich heraus, dass es zufällig unauslotbar war. Qualys sagte, es könne nicht   schließen Sie die Möglichkeit aus, dass solche Remote-Code-Ausführung ausnutzt   existieren. Qualys sagte, es werde die Proof-of-Concept-Exploits bei einem   späterer Zeitpunkt, nachdem die Menschen Zeit hatten, sich gegen die   Sicherheitslücken.

[...] Viel mehr Informationen gibt es in das detaillierte technische   Beratung von Qualys und diese technische Analyse von   Sicherheit.

Zitieren der LWN-Artikel über das ursprüngliche Update von 2010:

Da Linux Prozessstapel und Heap-Seiten nicht trennt,   Das Überlaufen einer Stapelseite in eine benachbarte Heap-Seite ist möglich. Das   bedeutet, dass ein ausreichend tiefer Stapel (von einem rekursiven Aufruf für   Beispiel) könnte am Ende Speicher im Heap verwenden. Ein Programm, das kann   Schreiben auf diese Heap-Seite (z. B. ein X-Client) könnte dann die   Absenderadresse eines der Aufrufe, um zu einem Ort seiner Wahl zu springen.   Das bedeutet, dass der Client veranlassen kann, dass der Server den Code ausführt   Wählen - willkürliche Codeausführung - die zur Erzielung von root genutzt werden kann   Privilegien.

Die obige Beschreibung gilt für verschiedene Unix-ähnliche Kernel.

Während Ars Technica eine temporäre Problemumgehung bemerkt, die im Qualys - Bericht erwähnt wird ("set theHard RLIMIT STACK und RLIMIT_ASvonlokale BenutzerundRemote-Dienstezu einem niedrigen Wert "), sollte darauf hingewiesen werden, dass Dies schützt nicht unbedingt vor diesem Exploit. Der einzige sichere Ausweg ist derzeit ein Upgrade. Laut der Sicherheitsanalyse:

Es sollte klar sein, dass Kernel-Only versucht, dieses Problem zu lösen   wird zwangsläufig immer unvollständig sein, da das eigentliche Problem in der   Mangel an Stack-Sondierung. Da hängt die alternative reale Lösung davon ab   Wiederaufbau aller Benutzerland, das ist wahrscheinlich die einzig mögliche Lösung für   die absehbare Zukunft.

Das Beste, was wir jetzt tun können, ist, den Kernel auf eine gepatchte Version zu aktualisieren.

Der 2010-Exploit nutzte den X-Server, dieser verwendete Sudo, der nächste könnte eines von vielen Userland-Programmen sein, die irgendwann unter erhöhten Privilegien laufen.

Qualys hat noch keinen Proof-of-Concept-Code für Exploits veröffentlicht (sie planen dies zu einem späteren Zeitpunkt).


Mit CVE-2017-1000364 sind mehrere Ubuntu Security Notices verknüpft:

Beachten Sie auch das der CVE-Tracker Listen mehrere Release / Kernel-Kombinationen als ausstehende Fixes.

Im Allgemeinen besteht die einfachste Lösung darin, Ihre Systeme so schnell wie möglich auf das neueste Kernel-Paket zu aktualisieren.

Die relevanten Kernelversionen aus den USNs (unter Verwendung von for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'):

Ubuntu 17.04:
linux-image-4.10.0-24-lowlatency 4.10.0-24.28
linux-image-generic-lpae 4.10.0.24.26
linux-image-generisch 4.10.0.24.26
linux-image-4.10.0-24-generische-lpae 4.10.0-24.28
linux-image-4.10.0-24-generisch 4.10.0-24.28
linux-image-lowlatenz 4.10.0.24.26
Ubuntu 17.04:
linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
linux-image-raspi2 4.10.0.1008.10
Ubuntu 16.10:
linux-image-powerpc-smp 4.8.0.56.69
linux-image-powerpc-e500mc 4.8.0.56.69
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
linux-image-4.8.0-56-lowlatency 4.8.0-56.61
linux-image-generisch 4.8.0.56.69
linux-image-4.8.0-56-generisch 4.8.0-56.61
linux-image-powerpc64-emb 4.8.0.56.69
linux-image-virtuell 4.8.0.56.69
linux-image-powerpc64-smp 4.8.0.56.69
linux-image-4.8.0-56-generische-lpae 4.8.0-56.61
linux-image-generic-lpae 4.8.0.56.69
linux-image-lowlatenz 4.8.0.56.69
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
Ubuntu 16.10:
linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
linux-image-raspi2 4.8.0.1040.44
Ubuntu 16.04 LTS:
linux-image-powerpc64-smp-lts-utopisch 4.4.0.81.87
linux-image-generic-lts-wily 4.4.0.81.87
linux-image-generic-lts-utopisch 4.4.0.81.87
linux-image-4.4.0-81-generische-lpae 4.4.0-81.104
linux-image-powerpc64-emb-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc 4.4.0.81.87
linux-image-generic-lpae-lts-xenial 4.4.0.81.87
linux-image-generic-lpae-lts-utopisch 4.4.0.81.87
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
linux-image-powerpc-e500mc-lts-wily 4.4.0.81.87
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
linux-image-generische-lpae-lts-wily 4.4.0.81.87
linux-image-virtuell-lts-vivid 4.4.0.81.87
linux-image-virtuell-lts-utopisch 4.4.0.81.87
linux-image-virtuell 4.4.0.81.87
linux-image-powerpc64-emb-lts-wily 4.4.0.81.87
linux-image-lowlatenz-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-lebendig 4.4.0.81.87
linux-image-powerpc64-emb 4.4.0.81.87
linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-generisch 4.4.0-81.104
linux-image-powerpc64-smp-lts-lebendig 4.4.0.81.87
linux-image-lowlatency-lts-wily 4.4.0.81.87
linux-image-4.4.0-81-lowlatency 4.4.0-81.104
linux-image-generisch 4.4.0.81.87
linux-image-lowlatency-lts-xenial 4.4.0.81.87
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
linux-image-powerpc64-emb-lts-utopisch 4.4.0.81.87
linux-image-generic-lts-xenial 4.4.0.81.87
linux-image-generic-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-utopisch 4.4.0.81.87
linux-image-powerpc-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
linux-image-generische-lpae-lts-vivid 4.4.0.81.87
linux-image-generic-lpae 4.4.0.81.87
linux-image-powerpc64-smp-lts-wily 4.4.0.81.87
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
linux-image-powerpc-smp-lts-wily 4.4.0.81.87
linux-image-virtuell-lts-wily 4.4.0.81.87
linux-image-powerpc64-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
linux-image-powerpc-smp-lts-utopisch 4.4.0.81.87
linux-image-powerpc-smp-lts-lebendig 4.4.0.81.87
linux-image-lowlatenz 4.4.0.81.87
linux-image-virtuell-lts-xenial 4.4.0.81.87
linux-image-lowlatency-lts-utopisch 4.4.0.81.87
Ubuntu 16.04 LTS:
linux-image-4.4.0-1016-gke 4.4.0-1016.16
Ubuntu 16.04 LTS:
Linux-Bild-Löwenmaul 4.4.0.1061.54
linux-image-4.4.0-1061-Löwenmaul 4.4.0-1061.66
Ubuntu 16.04 LTS:
linux-image-4.4.0-1020-aws 4.4.0-1020.29
Ubuntu 16.04 LTS:
linux-image-raspi2 4.4.0.1059.60
linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
Ubuntu 16.04 LTS:
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-lowlatency 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-generisch 4.8.0-56.61 ~ 16.04.1
linux-image-generic-hwe-16.04 4.8.0.56.27
linux-image-lowlatency-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-generische-lpae 4.8.0-56.61 ~ 16.04.1
linux-image-virtual-hwe-16.04 4.8.0.56.27
linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61 ~ 16.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
linux-image-lowlatency-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-lowlatency 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-generische-lpae 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lpae-lts-xenial 4.4.0.81.66
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-generisch 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lts-xenial 4.4.0.81.66
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
linux-image-virtuell-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104 ~ 14.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-e500mc 3.13.0.121.131
linux-image-lowlatency-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
linux-image-generic-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
linux-image-3.13.0-121-generische-lpae 3.13.0-121.170
linux-image-generic-lts-quant 3.13.0.121.131
linux-image-virtuell 3.13.0.121.131
linux-image-powerPC-e500 3.13.0.121.131
linux-image-generic-lts-trusty 3.13.0.121.131
linux-image-3.13.0-121-generisch 3.13.0-121.170
linux-image-omap 3.13.0.121.131
linux-image-powerpc64-emb 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
linux-image-generisch 3.13.0.121.131
linux-image-highbank 3.13.0.121.131
linux-image-generic-lts-frech 3.13.0.121.131
linux-image-powerpc-smp 3.13.0.121.131
linux-image-3.13.0-121-lowlatency 3.13.0-121.170
linux-image-generic-lpae-lts-frech 3.13.0.121.131
linux-image-generic-lts-raring 3.13.0.121.131
linux-image-powerpc64-smp 3.13.0.121.131
linux-image-generic-lpae-lts-trusty 3.13.0.121.131
linux-image-generic-lpae 3.13.0.121.131
linux-image-lowlatenz 3.13.0.121.131
Ubuntu 12.04 ESM:
linux-image-powerpc-smp 3.2.0.128.142
linux-image-3.2.0-128-virtuell 3.2.0-128.173
linux-image-3.2.0-128-generische-pae 3.2.0-128.173
linux-image-generisch 3.2.0.128.142
linux-image-generic-pae 3.2.0.128.142
linux-image-highbank 3.2.0.128.142
linux-image-3.2.0-128-highbank 3.2.0-128.173
linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
linux-image-virtuell 3.2.0.128.142
linux-image-powerpc64-smp 3.2.0.128.142
linux-image-3.2.0-128-omap 3.2.0-128.173
linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
linux-image-omap 3.2.0.128.142
linux-image-3.2.0-128-generisch 3.2.0-128.173
Ubuntu 12.04 LTS:
linux-image-3.13.0-121-generisch 3.13.0-121.170 ~ präzise1
linux-image-generic-lpae-lts-trusty 3.13.0.121.112
linux-image-generic-lts-trusty 3.13.0.121.112
linux-image-3.13.0-121-generische-lpae 3.13.0-121.170 ~ präzise1

Sudo

Der oben erwähnte sudo-Fehler wird von abgedeckt USN-3304-1, ab dem 30. Mai 2017:

Ubuntu 17.04:
sudo-ldap 1.8.19p1-1ubuntu1.1
Sudo 1.8.19p1-1ubuntu1.1
Ubuntu 16.10:
sudo-ldap 1.8.16-0ubuntu3.2
Sudo 1.8.16-0ubuntu3.2
Ubuntu 16.04 LTS:
sudo-ldap 1.8.16-0ubuntu1.4
Sudo 1.8.16-0ubuntu1.4
Ubuntu 14.04 LTS:
sudo-ldap 1.8.9p5-1ubuntu1.4
Sudo 1.8.9p5-1ubuntu1.4

29
2018-06-20 01:45



Zusammenfassend sollte es in den meisten Ubuntu-Versionen, die noch unterstützt werden, bereits behoben sein, man muss es nur noch aktualisieren? - The Badger
@TheBadger Nein, wie vom CVE-Tracker angegeben, werden einige Kombinationen immer noch als ausstehende Veröffentlichung aufgelistet. Ich nehme an, dass mehr USNs veröffentlicht werden, sobald Fixes veröffentlicht werden. - muru
Aber, ja, sollte die Aktualisierung genug sein, zusätzliche Konfiguration ist nicht erforderlich. - muru
Wenn es Auswirkungen hat, wie wird es überprüft? - d a i s y
@immibis laut folgendem Artikel sind sie, aber bestehende Implementierung funktioniert nicht richtig: Stackguard Bug Erklärung von Qualys Research Labs - Igor B


Wie ist es zu einem Multi-OS-Bug gekommen?

Um diesen Teil Ihrer Frage gezielt anzusprechen:

Dieses Problem tritt aufgrund der Verwendung eines freigegebenen Adressraums für Heap (der nach oben wächst) und Stack (der nach unten wächst) auf.

Dieser Entwurf ist in vielen Systemen üblich, weshalb viele Systeme für die gleiche Sicherheitsanfälligkeit anfällig sind.


1
2018-06-21 12:21