Stack Clash ist ein Exploit, der auf einer ziemlich alten Technik basiert. Der von einem Prozess verwendete Speicher ist in zwei Bereiche unterteilt - den Stapel und den Heap . Man stellt sich im Allgemeinen vor, dass der Stapel nach unten und der Haufen nach oben wächst. Was passiert , wenn die entweder genug wächst , um Zusammenstoß mit dem anderen? Was passiert im Allgemeinen, wenn der Stack so groß wird, dass er in nicht zusammenhängende Speicherbereiche eindringt? Die ursprüngliche Sicherheitsanfälligkeit ist 12 Jahre alt, und die Linux-Kernel-Entwickler haben sie mithilfe einer Schutzseite vorübergehend behoben . Den Forschern von Qualys ist es jedoch gelungen, dies trotz der Schutzseite auszunutzen.
Ars Technica berichtet :
Stack-Clash-Sicherheitslücken sind langsam allgemein bekannt geworden , zuerst 2005 mit den Erkenntnissen des Sicherheitsforschers Gaël Delalleau und fünf Jahre später mit der Veröffentlichung einer Linux-Sicherheitslücke durch den Forscher Rafal Wojtczuk. Linux-Entwickler haben
einen Schutz eingeführt , der Stapelkonflikte verhindern soll. Die heutigen Untersuchungen zeigen jedoch, dass es für Angreifer relativ einfach ist, diese Maßnahme zu umgehen.
Der von Qualys entwickelte primäre Proof-of-Concept-Angriff nutzt eine mit CVE-2017-1000364 indizierte Sicherheitsanfälligkeit aus. Die Forscher von Qualys entwickelten auch Angriffe, die Stack Clash verwenden, um verschiedene Sicherheitsanfälligkeiten auszunutzen, darunter CVE-2017-1000365 und CVE-2017-1000367. In Kombination mit CVE-2017-1000367, einem kürzlich von Qualys entdeckten Fehler in Sudo, können lokale Benutzer beispielsweise Sudo ausnutzen, um vollständige Root-Berechtigungen für eine viel größere Bandbreite von Betriebssystemen zu erhalten. Qualys war bisher nicht in der Lage, die Exploits dazu zu bringen, Code aus der Ferne auszuführen. Die einzige Remoteanwendung, die sie untersuchten, war der Exim-Mailserver, der sich zufällig als nicht ausnutzbar herausstellte. Qualys sagte, es könne nicht ausgeschlossen werden, dass solche Remotecodeausführungs-Exploits existieren. Qualys gab bekannt, dass die Proof-of-Concept-Exploits zu einem späteren Zeitpunkt veröffentlicht werden.
[...] Weitere Informationen finden Sie in diesem ausführlichen technischen Ratgeber von Qualys und in dieser technischen Analyse von grsecurity .
Zitiert den LWN-Artikel über das ursprüngliche Update von 2010:
Da Linux Prozess-Stack- und Heap-Seiten nicht trennt, ist es möglich, eine Stack-Seite in eine benachbarte Heap-Seite zu überlagern. Das bedeutet, dass ein ausreichend tiefer Stapel (zum Beispiel von einem rekursiven Aufruf) möglicherweise Speicher im Heap belegt. Ein Programm, das auf diese Heap-Seite schreiben kann (z. B. ein X-Client), könnte dann die Rücksprungadresse eines der Aufrufe manipulieren, um zu einem Ort seiner Wahl zu springen. Dies bedeutet, dass der Client den Server veranlassen kann, Code seiner Wahl auszuführen - beliebige Codeausführung -, die genutzt werden kann, um Root-Berechtigungen zu erlangen.
Die obige Beschreibung gilt für verschiedene Unix-ähnliche Kernel.
Während Ars Technica eine vorübergehende Lösung im Qualys Bericht erwähnt nicht beachten ( „die eingestellte Fest rlimit Stach und RLIMIT_AS von lokalen Benutzern und Remote - Services auf einen niedrigen Wert“), sei darauf hingewiesen, dass diese Sicherung nicht unbedingt gegen diese auszunutzen . Der einzig sichere Ausweg ist derzeit ein Upgrade. Laut der Sicherheitsanalyse:
Es sollte klar sein, dass Kernel-Versuche, dieses Problem zu lösen, notwendigerweise immer unvollständig sind, da das eigentliche Problem in dem Fehlen einer Stapelprüfung liegt. Da die echte Alternativlösung von der Wiederherstellung des gesamten Benutzerlandes abhängt, ist dies auf absehbare Zeit wahrscheinlich die einzig mögliche Lösung.
Das Beste, was wir jetzt tun können, ist, den Kernel auf eine gepatchte Version zu aktualisieren.
Der 2010-Exploit verwendete den X-Server, dieser verwendete sudo, der nächste könnte eines von vielen Userland-Programmen sein, die irgendwann mit erhöhten Rechten ausgeführt werden.
Qualys hat noch keinen Proof-of-Concept-Code für Exploits veröffentlicht (dies ist zu einem späteren Zeitpunkt geplant).
Mit CVE-2017-1000364 sind mehrere Ubuntu-Sicherheitshinweise verknüpft:
Beachten Sie auch, dass der CVE-Tracker mehrere Release / Kernel-Kombinationen als ausstehende Fixes auflistet .
Im Allgemeinen besteht die einfachste Lösung darin, Ihre Systeme so schnell wie möglich auf das neueste Kernelpaket zu aktualisieren.
Die relevanten Kernelversionen aus den USNs (gekeult mit 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-Generic
4.10.0.24.26
-
linux-image-4.10.0-24-generic-lpae
4.10.0-24.28
-
linux-image-4.10.0-24-generic
4.10.0-24.28
-
linux-image-lowlatency
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-Generic
4.8.0.56.69
-
linux-image-4.8.0-56-generic
4.8.0-56.61
-
linux-image-powerpc64-emb
4.8.0.56.69
-
Linux-Image-Virtual
4.8.0.56.69
-
Linux-Image-PowerPC64-SMP
4.8.0.56.69
-
linux-image-4.8.0-56-generic-lpae
4.8.0-56.61
-
Linux-Image-Generic-Lpae
4.8.0.56.69
-
linux-image-lowlatency
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-utopic
4.4.0.81.87
-
linux-image-generic-lts-wily
4.4.0.81.87
-
linux-image-generic-lts-utopic
4.4.0.81.87
-
linux-image-4.4.0-81-generic-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-utopic
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-Generika-lpae-lts-wily
4.4.0.81.87
-
linux-image-virtual-lts-vivid
4.4.0.81.87
-
linux-image-virtual-lts-utopic
4.4.0.81.87
-
linux-image-virtual
4.4.0.81.87
-
linux-image-powerpc64-emb-lts-wily
4.4.0.81.87
-
linux-image-lowlatency-lts-vivid
4.4.0.81.87
-
linux-image-powerpc-e500mc-lts-vivid
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-generic
4.4.0-81.104
-
linux-image-powerpc64-smp-lts-vivid
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-Generic
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-utopic
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-utopic
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-Generika-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-Virtual-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-utopic
4.4.0.81.87
-
linux-image-powerpc-smp-lts-vivid
4.4.0.81.87
-
linux-image-lowlatency
4.4.0.81.87
-
linux-image-virtual-lts-xenial
4.4.0.81.87
-
linux-image-lowlatency-lts-utopic
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-image-
snapdragon 4.4.0.1061.54
-
linux-image-4.4.0-1061-
snapdragon 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-generic
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-generic-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-generic-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-generic
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-virtual-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-generic-lpae
3.13.0-121.170
-
Linux-Image-Generic-LTS-Quantal
3.13.0.121.131
-
linux-image-virtual
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-generic
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-Generic
3.13.0.121.131
-
Linux-Image-Highbank
3.13.0.121.131
-
linux-image-generic-lts-
saucy 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-Saucy
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-lowlatency
3.13.0.121.131
-
Ubuntu 12.04 ESM:
-
Linux-Image-PowerPC-SMP
3.2.0.128.142
-
linux-image-3.2.0-128-virtual
3.2.0-128.173
-
linux-image-3.2.0-128-generic-pae
3.2.0-128.173
-
Linux-Image-Generic
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-virtual
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-generic
3.2.0-128.173
-
Ubuntu 12.04 LTS:
-
linux-image-3.13.0-121-generic
3.13.0-121.170 ~ exact1
-
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-generic-lpae
3.13.0-121.170 ~ exact1
Sudo
Der oben genannte Sudo-Fehler ist in USN-3304-1 vom 30. Mai 2017 enthalten:
-
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
Um diesen Teil Ihrer Frage speziell zu beantworten:
Dieses Problem tritt aufgrund der Verwendung eines gemeinsam genutzten Adressraums für Heap (der nach oben wächst) und Stack (der nach unten wächst) auf.
Dieses Design ist auf vielen Systemen üblich, weshalb viele Systeme für dieselbe Schwachstellenklasse anfällig sind.
quelle