
Forschungsimplementierung, die die Interaktion mit dem Linux-eBPF-Subsystem im Zusammenhang mit CVE-2021-3490 demonstriert. Umfasst die Erstellung von BPF-Maps, Syscall-Wrapper, Namespace-Einrichtung und Verifier-Analyse. Nur für Bildungs- und Sicherheitsforschungszwecke.
Forschungsumsetzung, die die Interaktion mit dem Linux-eBPF-Subsystem im Zusammenhang mit CVE-2021-3490 demonstriert. Enthält BPF-Map-Erstellung, Syscall-Wrapper, Namespace-Einrichtung und Verifier-Analyse. Nur für Bildungs- und Sicherheitsforschungszwecke.
CVE-2021-3490 – Analyse der Grenzverfolgung des eBPF-Verifiers Überblick
Dieses Repository enthält eine C-Implementierung, die das eBPF-Subsystem des Linux-Kernels im Zusammenhang mit CVE-2021-3490 untersucht, einer Sicherheitslücke, die eine fehlerhafte 32-Bit-Grenzverfolgung im eBPF-Verifier betrifft.
Das Ziel dieses Projekts ist es zu verstehen, wie der bpf()-Systemaufruf intern funktioniert, wie BPF-Maps aus dem Benutzerraum erstellt und verwaltet werden und wie der Verifier Registerbeschränkungen behandelt. Dies ist ein Forschungs- und Lernprojekt, das sich auf Kernel-Interna und Sicherheitsanalyse konzentriert.
Dieser Code ist nicht für den Produktionseinsatz gedacht.
Hintergrund
eBPF ermöglicht es Programmen im Benutzerraum, verifizierten Bytecode in den Linux-Kernel zu laden. Vor der Ausführung prüft der Kernel-Verifier, dass das Programm:
Bei anfälligen Kernel-Versionen verfolgte der Verifier die 32-Bit-Grenzen bei bestimmten ALU-Operationen fehlerhaft. Dieser Fehler könnte es manipulierten Programmen ermöglichen, die Validierungslogik zu umgehen.
Für offizielle Details:
NVD: https://nvd.nist.gov/vuln/detail/CVE-2021-3490
Ubuntu Security Notice: https://ubuntu.com/security/CVE-2021-3490
Red Hat Advisory: https://access.redhat.com/security/cve/CVE-2021-3490
Was dieses Projekt zeigt
Diese Implementierung konzentriert sich auf:
Es soll helfen zu verstehen, wie der Benutzerraum mit der BPF-Infrastruktur des Kernels interagiert.
Dieses Repository enthält keine automatisierte Exploit-Payload-Logik.
Getestete Umgebung
Ubuntu 20.10 (Groovy)
Linux-Kernel 5.8.0-48-generic
Sie können Ihre Kernel-Version überprüfen mit:
uname -r
Das Verhalten kann auf gepatchten oder neueren Kerneln abweichen.
Kompilierung
Mit GCC kompilieren:
gcc -o exploit exploit.c -lpthread
Über die Standard-Linux-Header hinaus sind keine externen Bibliotheken erforderlich.
Verwendung
Führen Sie das Programm aus:
./exploit
Das Programm wird:
Sicherheitshinweis
Dieses Projekt dient:
Führen Sie diesen Code nicht auf Systemen ohne entsprechende Autorisierung aus.
Lernziele
Durch dieses Projekt können Sie verstehen: