Im eBPF-Subsystem, das es ermöglicht, Handler für Tracing, Analyse von Subsystemen und Verkehrsmanagement auszuführen, wurde eine Schwachstelle (CVE-2021-29154) entdeckt, die es einem lokalen Benutzer ermöglicht, Code auf Kernel-Ebene auszuführen. Dieses Problem tritt bis einschließlich Version 5.11.12 auf und ist in Distributionen (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch) noch nicht behoben. Ein Patch steht zur Verfügung.
Laut den Forschern, die die Schwachstelle entdeckt haben, konnte ein funktionierender Exploit-Prototyp für 32- und 64-Bit-Systeme x86 entwickelt werden, der von einem nicht privilegierten Benutzer verwendet werden kann. Red Hat weist darauf hin, dass die Gefährlichkeit des Problems von der Verfügbarkeit des eBPF-Systemaufrufs für den Benutzer abhängt. In RHEL und den meisten anderen Standard-Linux-Distributionen kann die Schwachstelle bei aktivem BPF JIT und dem Vorhandensein der CAP_SYS_ADMIN-Rechte des Benutzers ausgenutzt werden. Als Sicherheitsmaßnahme wird empfohlen, BPF JIT mit dem 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 während der Generierung von Maschinen-Code durch den JIT-Compiler verursacht. Insbesondere wird bei der Generierung der Sprunganweisungen nicht berücksichtigt, dass sich der Offset nach der Optimierungsphase ändern kann. Diese Schwachstelle kann ausgenutzt werden, um anomalen Maschinen-Code zu erzeugen und diesen auf der Kernel-Ebene auszuführen.
Bemerkenswert ist, dass dies nicht die einzige Schwachstelle im eBPF-Subsystem in letzter Zeit ist. Ende März wurden zwei weitere Schwachstellen (CVE-2020-27170, CVE-2020-27171) im Kernel entdeckt, die es ermöglichen, eBPF zu nutzen, um die Schutzmaßnahmen gegen Spectre-Angriffe zu umgehen. Diese Angriffe ermöglichen es, den Inhalt des Kernel-Speichers aufzudecken, indem Bedingungen für die spekulative Ausführung bestimmter Operationen geschaffen werden. Ein Spectre-Angriff erfordert in privilegierten Code eine bestimmte Folge von Anweisungen, die zur spekulativen Ausführung führen. Im eBPF wurden mehrere Möglichkeiten gefunden, solche Anweisungen durch Manipulationen mit den ausgeführten BPF-Programmen zu generieren.
Die Schwachstelle CVE-2020-27170 wird durch Pointer-Manipulationen im BPF-Validator verursacht, die spekulative Zugriffe auf Speicherbereiche außerhalb der Puffergrenzen auslösen. Die Schwachstelle CVE-2020-27171 betrifft einen Fehler bei der ganzzahligen Arithmetik (Integer Underflow) im Umgang mit Zeigern, was zu spekulativen Zugriffen auf Daten außerhalb des Puffers führt. Diese 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 Teil der Kernel-Updates der meisten Linux-Distributionen. Forscher haben einen Prototyp eines Exploits entwickelt, der es einem nicht privilegierten Benutzer ermöglicht, Daten aus dem Kernel-Speicher zu extrahieren.
Quelle: opennet.ru
