Schwachstelle in der AF_PACKET Socket-Implementierung des Linux-Kernels

Drei Jahre nach der Welle von Schwachstellen (1, 2, 3, 4, 5) im AF_PACKET-Subsystem des Linux-Kernels entdeckt gibt es ein weiteres Problem (CVE-2020-14386), das es einem lokalen unprivilegierten Benutzer ermöglicht, Code mit Root-Rechten auszuführen oder aus isolierten Containern auszubrechen, wenn Root-Zugriff vorhanden ist.

Für die Erstellung eines AF_PACKET-Sockets und die Ausnutzung der Schwachstelle sind die Berechtigungen CAP_NET_RAW erforderlich. Dieses Recht kann jedoch von unprivilegierten Benutzern in Containern erworben werden, die in Systemen mit aktivierter Unterstützung für Benutzer-Namensräume (user namespaces) erstellt werden. Zum Beispiel sind Benutzer-Namensräume standardmäßig in Ubuntu und Fedora aktiviert, aber nicht in Debian und RHEL. In Android hat der Prozess mediaserver das Recht, AF_PACKET-Sockets zu erstellen, über das die Schwachstelle ausgenutzt werden kann.

Die Schwachstelle liegt in der Funktion tpacket_rcv und wird durch einen Fehler bei der Berechnung der Variablen netoff verursacht. Ein Angreifer kann Bedingungen schaffen, unter denen in die Variable netoff ein Wert kleiner als die Variable maclen geschrieben wird, was zu einer Überlaufberechnung bei „macoff = netoff - maclen“ und zu einer fehlerhaften anschließenden Einstellung des Zeigers auf den Pufferspeicher für eingehende Daten führen kann. Infolgedessen kann ein Angreifer eine Schreiboperation von 1 bis 10 Bytes in den Bereich außerhalb des zugewiesenen Puffers initiieren. Es wird darauf hingewiesen, dass ein Exploit in Entwicklung ist, der es ermöglicht, Root-Rechte im System zu erlangen.

Das Problem besteht im Kernel seit Juli 2008, d.h. es tritt in allen aktuellen Kernels auf. Ein Patch ist derzeit verfügbar als Patches. Die Verfolgung von Paketaktualisierungen in den Distributionen kann auf den folgenden Seiten erfolgen: Ubuntu, Fedora, SUSE, Debian, RHEL, Arch.

Quelle: opennet.ru

60GB SSD 8Gb DDR4