Mehrere lokale Schwachstellen zur Eskalation von Privilegien im Linux-Kernel behoben
Kürzlich wurden im Linux-Kernel mehrere Use-after-free-Schwachstellen gefunden, die zur lokalen Privilegienerweiterung ausgenutzt werden können. Das bedeutet, dass ein Angreifer oder ein Benutzer mit eingeschränktem Zugriff (d. h. ein lokaler Benutzer) diese Schwachstellen ausnutzen kann, um erhöhte Privilegien oder Berechtigungen zu erhalten, über die er nicht verfügen sollte.
Mit erweitertem Zugriff kann der Angreifer Befehle mit höheren Rechten ausführen und so möglicherweise das gesamte System gefährden. Diese Schwachstellen wurden von der National Vulnerability Database mit ihren spezifischen CVEs versehen und als besonders schwerwiegend eingestuft.
In diesem Blog-Beitrag werden wir einige dieser neuen, hochgradig gefährlichen Schwachstellen diskutieren, die im Linux-Kernel entdeckt wurden.
Lokale Sicherheitslücken mit hohem Schweregrad zur Eskalation von Privilegien
CVE-2023-4921
In der Komponente 'net/sched: sch_qfq' des Linux-Kernels wurde eine 'use-after-free'-Schwachstelle entdeckt. Diese Schwachstelle tritt auf, wenn die 'plug qdisc' als Klasse der 'qfq qdisc' verwendet wird. In diesem Szenario kann das Senden von Netzwerkpaketen eine Use-after-free-Situation innerhalb der 'qfq_dequeue()'-Funktion auslösen, hauptsächlich aufgrund einer inkorrekten '.peek handler'-Implementierung in 'sch_plug' und dem Fehlen einer Fehlerprüfung in 'agg_dequeue()'.
CVE-2023-4207
Dies ist auch eine Use-after-free-Schwachstelle, die in der 'net/sched: cls_fw'-Komponente des Linux-Kernels vorhanden ist. Die Verwundbarkeit wird offensichtlich, wenn 'fw_change()' für einen bestehenden Filter aufgerufen wird, was dazu führt, dass die gesamte 'tcf_result struct' konsequent in die neue Instanz des Filters kopiert wird. Dies stellt eine Herausforderung dar, wenn ein mit einer Klasse verbundener Filter aktualisiert wird, da die Funktion 'tcf_unbind_filter()' immer auf der alten Instanz innerhalb des Erfolgspfads ausgelöst wird. Diese Aktion reduziert den "filter_cnt" der noch referenzierten Klasse und macht sie löschbar, was letztendlich zu einer use-after-free Situation führt.
CVE-2023-4208
Die Ausnutzung einer Use-after-free-Schwachstelle in der 'net/sched: cls_u32'-Komponente des Linux-Kernels kann eine lokale Privilegienerweiterung ermöglichen. Die Schwachstelle wird bei der Ausführung von 'u32_change()' auf einem bestehenden Filter offensichtlich. Bei diesem Vorgang wird die gesamte 'tcf_result struct' unweigerlich in die neue Filterinstanz kopiert. Dies führt zu einem Problem bei der Aktualisierung eines mit einer Klasse verbundenen Filters, da die Funktion 'tcf_unbind_filter()' stets auf der alten Instanz innerhalb des Erfolgspfads aufgerufen wird. Infolgedessen wird durch diese Aktion der "filter_cnt" der noch referenzierten Klasse verringert und ihre Löschung ermöglicht, was letztlich zu einem Use-after-free-Szenario führt.
CVE-2023-4244
In der Komponente 'netfilter: nf_tables' des Linux-Kernels wurde eine 'Use-after-free'-Schwachstelle gefunden. Diese Schwachstelle entsteht durch eine Race Condition, die zwischen der Netlink Control Plane Transaktion von nf_tables und der Garbage Collection von nft_set Elementen auftritt. Diese Race Condition kann einen Unterlauf im Referenzzähler auslösen, was zu einer Use-after-free-Schwachstelle führt.
CVE-2023-4622
Lokale Privilegienerweiterung kann durch die Ausnutzung einer Use-after-free-Schwachstelle in der 'af_unix'-Komponente des Linux-Kernels erreicht werden. Diese Schwachstelle rührt von der Funktion 'unix_stream_sendpage()' her, die versucht, Daten an den letzten skb (Socket-Puffer) in der Empfangswarteschlange des Empfängers anzuhängen, ohne die notwendigen Sperren zu erlangen. Folglich entsteht eine Wettlaufsituation, in der 'unix_stream_sendpage()' möglicherweise auf einen skb zugreifen kann, der gerade von der Garbage Collection freigegeben wird, was zu einem Use-after-free-Szenario führt.
Wie lassen sich diese Schwachstellen entschärfen?
Schwachstellen, die zu einer Ausweitung lokaler Rechte führen, sind sehr besorgniserregend, da sie dazu verwendet werden können, Einschränkungen auf Benutzerebene zu umgehen und die Kontrolle über ein System zu erlangen. Daher ist es von entscheidender Bedeutung, auf dem neuesten Stand zu bleiben und regelmäßig Patches einzuspielen, um solche Schwachstellen und ihre potenziellen Risiken zu minimieren. Das Fehlen oder die Verzögerung von Patches kann sich negativ auf die Sicherheit und den Betrieb des Servers auswirken.
Der beste Weg, um die Verzögerung von Patches zu vermeiden, ist die Verwendung einer automatischen Patching-Lösung wie KernelCare Enterprise. KernelCare wendet automatisch Sicherheits-Patches auf den Linux-Kernel an, während dieser ausgeführt wird. Das bedeutet, dass der Kernel neu gestartet werden muss, was für Systemadministratoren ein Problem darstellt.
Ein solches Patching ist als Live-Patching bekannt, bei dem Patches ohne Neustart angewendet werden. Dadurch entfallen patchingbedingte Ausfallzeiten oder Wartungsfenster, so dass die 100%ige Betriebszeit der Server ohne Unterbrechung der Dienste erhalten bleibt.
Sprechen Sie mit unseren Experten, um mehr über Live-Linux-Patching und dessen Funktionsweise zu erfahren.
Quelle: NIST