Schwachstellen im eBPF-Subsystem des Linux-Kernels

Im eBPF-Subsystem wurde eine Schwachstelle (CVE-2021-29154) entdeckt, die es einem lokalen Benutzer ermöglicht, Code im Kernel-Modus auszuführen. Diese Schwachstelle tritt bis einschließlich Version 5.11.12 auf und ist in den Distributionen (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch) noch nicht behoben. Ein Patch ist verfügbar.

Laut den Forschern, die die Schwachstelle entdeckt haben, ist es ihnen gelungen, einen funktionierenden Prototyp eines Exploits für 32- und 64-Bit-x86-Systeme zu entwickeln, der von nicht privilegierten Benutzern verwendet werden kann. Red Hat weist jedoch darauf hin, dass das Risiko der Schwachstelle von der Verfügbarkeit des eBPF-Systemaufrufs für den Benutzer abhängt. Zum Beispiel kann in RHEL und den meisten anderen Standard-Linux-Distributionen die Schwachstelle ausgenutzt werden, wenn BPF JIT aktiviert ist und der Benutzer über die Berechtigung CAP_SYS_ADMIN verfügt. Als Abhilfemaßnahme wird empfohlen, BPF JIT mit dem folgenden Befehl zu deaktivieren: echo 0 > /proc/sys/net/core/bpf_jit_enable

Das Problem wird durch einen Fehler bei der Berechnung der Offset-Werte für Sprunganweisungen im JIT-Compiler verursacht. Insbesondere wird bei der Generierung von Sprunganweisungen nicht berücksichtigt, dass sich der Offset nach der Optimierungsphase ändern kann. Diese Unzulänglichkeit kann verwendet werden, um anomalen Maschinencode zu erzeugen und ihn im Kernel-Modus auszuführen.

Es ist bemerkenswert, dass dies nicht die einzige Schwachstelle im eBPF-Subsystem in letzter Zeit ist. Ende März wurden im Kernel zwei weitere Schwachstellen (CVE-2020-27170, CVE-2020-27171) entdeckt, die es ermöglichen, eBPF zur Umgehung von Spectre-Schutzmaßnahmen zu verwenden, die das Ermitteln des Inhalts des Kernel-Speichers durch das Schaffen von Bedingungen für spekulative Ausführung bestimmter Operationen ermöglichen. Für einen Spectre-Angriff muss im privilegierten Code eine bestimmte Folge von Befehlen vorhanden sein, die zur spekulativen Ausführung von Instruktionen führt. Im eBPF wurden mehrere Möglichkeiten gefunden, solche Befehle durch Manipulation von für die Ausführung übergebenen BPF-Programmen zu erzeugen.

Die Schwachstelle CVE-2020-27170 wird durch die Manipulation von Zeigern im BPF-Überprüfer verursacht, die spekulative Zugriffe auf Bereiche außerhalb der Puffergrenzen auslösen. Die Schwachstelle CVE-2020-27171 hängt mit einem Fehler in der ganzzahligen Arithmetik (Integer Underflow) beim Umgang mit Zeigern zusammen, der zu spekulativen Zugriffen auf Daten außerhalb des Puffers führt. Die genannten Probleme wurden bereits in den Kernel-Versionen 5.11.8, 5.10.25, 5.4.107, 4.19.182 und 4.14.227 behoben und sind in den Kernel-Updates der meisten Linux-Distributionen enthalten. Forscher haben einen Prototyp-Exploit erstellt, der es unprivilegierten Benutzern ermöglicht, Daten aus dem Kernel-Speicher zu extrahieren.

Quelle: opennet.ru

60GB SSD 8Gb DDR4