Sicherheitslücke im eBPF-Subsystem, die die Codeausführung auf Linux-Kernel-Ebene ermöglicht

Im eBPF-Subsystem wurde eine Schwachstelle (CVE-2021-4204) identifiziert, die es Ihnen ermöglicht, Handler innerhalb des Linux-Kernels in einer speziellen virtuellen Maschine mit JIT auszuführen, wodurch ein lokaler unprivilegierter Benutzer eine Rechteausweitung erreichen und seinen Code dort ausführen kann Linux-Kernel-Ebene. Das Problem tritt seit Linux-Kernel 5.8 auf und ist bis heute nicht behoben (einschließlich Version 5.16). Der Status der Updates, die zur Behebung des Problems in Distributionen generiert werden, kann auf diesen Seiten verfolgt werden: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Es wurde bekannt gegeben, dass ein funktionierender Exploit erstellt wurde, der am 18. Januar veröffentlicht werden soll (Benutzer und Entwickler haben eine Woche Zeit, um die Schwachstelle zu beheben).

Die Sicherheitslücke wird durch eine fehlerhafte Überprüfung der zur Ausführung übermittelten eBPF-Programme verursacht. Das eBPF-Subsystem stellt Hilfsfunktionen bereit, deren korrekte Verwendung durch einen speziellen Prüfer überprüft wird. Einige Funktionen erfordern die Übergabe eines PTR_TO_MEM-Werts als Argument. Um mögliche Pufferüberläufe zu verhindern, muss der Verifizierer die Größe des mit dem Argument verknüpften Speichers kennen. Für die Funktionen bpf_ringbuf_submit und bpf_ringbuf_discard wurden keine Daten zur Größe des übertragenen Speichers an den Verifizierer gemeldet, die beim Ausführen speziell entwickelten eBPF-Codes zum Überschreiben von Speicherbereichen außerhalb der Puffergrenze verwendet werden könnten.

Um einen Angriff durchzuführen, muss der Benutzer in der Lage sein, sein eigenes BPF-Programm zu laden, und viele neuere Linux-Distributionen blockieren diese Fähigkeit standardmäßig (einschließlich des unprivilegierten Zugriffs auf eBPF, der ab Version 5.16 jetzt im Kernel selbst standardmäßig verboten ist). Beispielsweise kann die Schwachstelle in der Standardkonfiguration in Ubuntu 20.04 LTS ausgenutzt werden, in den Umgebungen Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 und Fedora 33 erscheint sie jedoch nur, wenn der Administrator dies festgelegt hat Setzen Sie den Parameter kernel.unprivileged_bpf_disabled auf 0. Als Workaround zum Blockieren der Schwachstelle können Sie die Ausführung von BPF-Programmen durch unprivilegierte Benutzer mit dem Befehl „sysctl -w kernel.unprivileged_bpf_disabled=1“ verhindern.

Source: opennet.ru

Kommentar hinzufügen