Sicherheitslücke im IPv6-Stack des Linux-Kernels, die eine Remote-Codeausführung ermöglicht

Es wurden Informationen über die Schwachstelle (CVE-2023-6200) im Netzwerkstack des Linux-Kernels veröffentlicht, die es einem Angreifer aus einem lokalen Netzwerk unter bestimmten Umständen ermöglicht, die Ausführung seines Codes zu erreichen, indem er ein speziell entwickeltes ICMPv6-Paket mit sendet eine RA-Nachricht (Router Advertisement), die Informationen über den Router bekannt geben soll.

Die Schwachstelle kann nur vom lokalen Netzwerk aus ausgenutzt werden und erscheint auf Systemen mit aktivierter IPv6-Unterstützung und aktivem sysctl-Parameter „net.ipv6.conf.<network_interface_name>.accept_ra“ (kann mit dem Befehl „sysctl net.ipv6.conf überprüft werden“) | grep Accept_ra“), das in RHEL und Ubuntu standardmäßig für externe Netzwerkschnittstellen deaktiviert, aber für die Loopback-Schnittstelle aktiviert ist, die einen Angriff vom selben System aus ermöglicht.

Die Schwachstelle wird durch eine Race-Bedingung verursacht, wenn der Garbage Collector veraltete fib6_info-Datensätze verarbeitet, was zum Zugriff auf einen bereits freigegebenen Speicherbereich führen kann (Use-after-free). Beim Empfang eines ICMPv6-Pakets mit einer Router-Ankündigungsnachricht (RA, Router Advertisement) ruft der Netzwerkstapel die Funktion ndisc_router_discovery() auf, die, wenn die RA-Nachricht Informationen über die Routenlebensdauer enthält, die Funktion fib6_set_expires() aufruft und den gc_link füllt Struktur. Um veraltete Einträge zu bereinigen, verwenden Sie die Funktion fib6_clean_expires(), die den Eintrag in gc_link trennt und den von der fib6_info-Struktur verwendeten Speicher löscht. In diesem Fall gibt es einen bestimmten Moment, in dem der Speicher für die Struktur fib6_info bereits freigegeben wurde, der Link dazu jedoch weiterhin in der Struktur gc_link vorhanden ist.

Die Schwachstelle trat ab Branch 6.6 auf und wurde in den Versionen 6.6.9 und 6.7 behoben. Der Stand der Behebung der Schwachstelle in Distributionen kann auf diesen Seiten beurteilt werden: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Unter den Distributionen, die Pakete mit dem 6.6-Kernel ausliefern, können wir Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva und Manjaro erwähnen; bei anderen Distributionen ist es möglich, dass die fehlerhafte Änderung in Pakete mit älteren Kernel-Zweigen zurückportiert wird (z Beispielsweise wird in Debian erwähnt, dass das Paket mit Kernel 6.5.13 angreifbar ist, während die problematische Änderung im 6.6-Zweig auftrat. Um die Sicherheit zu umgehen, können Sie IPv6 deaktivieren oder die Parameter „net.ipv0.conf.*.accept_ra“ auf 6 setzen.

Source: opennet.ru

Kommentar hinzufügen