CVE-2023-2163: Entdeckung und Behebung einer eBPF-Linux-Kernel-Schwachstelle
Hintergrund
- eBPF ist eine Technologie, mit der sich die Funktionen des Linux-Kernels zur Laufzeit erweitern lassen, ohne komplexe Kernel-Module schreiben zu müssen.
- eBPF-Programme werden beim Eintreten bestimmter Ereignisse ausgeführt und müssen vor dem Laden auf Sicherheit geprüft werden.
- Der Verifier besteht aus komplexem Code, in dem viele Schwachstellen gefunden wurden.
- Google hat Buzzer entwickelt, einen Fuzzer zur automatisierten Prüfung des eBPF-Verifiers.
Buzzer-Strategie für Pointer-Arithmetik
- Buzzer ist ein neuer Fuzzer für eBPF, der eine Strategie verwendet, um logische Fehler auszulösen.
- Die Strategie für Pointer-Arithmetik besteht aus den folgenden Schritten:
- Erzeugen eines Headers, der Register mit beliebigen Werten initialisiert
- Erzeugen beliebiger Arithmetik- und Sprungbefehle
- Auswählen eines beliebigen Registers und Ausführen einer Additionsoperation mit einem Pointer auf ein eBPF-Map-Element
- Schreiben eines Magic Values in dieses Element
eBPF-Pfadbeschneidung
- Der eBPF-Verifier prüft, ob ein Programm sicher ausgeführt werden kann.
- Bei bedingten Anweisungen simuliert er alle möglichen Zustände.
- Bei vielen bedingten Sprüngen wird zur Leistungsverbesserung eine Strategie zur Pfadbeschneidung eingesetzt.
Der Bug
- CVE-2023-2163 machte die Pfadbeschneidung effizienter, indem das Konzept des „präzisen Trackings“ eingeführt wurde.
- Der Fehler entstand dadurch, dass übersehen wurde, dass das Register
r9 zur Präzision von r6 beiträgt.
Exploit
- Durch Ausnutzung von CVE-2023-2163 lassen sich beliebige Lese-/Schreibzugriffe erreichen sowie LPE und Container-Escape durchführen.
- Wichtige Schritte:
- Erreichen beliebiger Lese-/Schreibzugriffe
- Finden der Prozess-Credentials und Eskalation der Berechtigungen
Behebung
- Zur Behebung von CVE-2023-2163 wurden unpräzise Register bei Operationen, die präzise Register beeinflussen, ebenfalls als präzise markiert.
- Die Auswirkungen auf die Performance sind unklar, weitere Probleme wurden jedoch nicht gefunden.
Zukünftige Ideen
- Die Sicherheit von eBPF-Programmen zu gewährleisten ist wegen der Komplexität des Verifizierungsprozesses schwierig.
- Google geht dieses Problem mit Buzzer an und begrüßt Beiträge aus der Open-Source-Community.
Zusammenfassung von GN⁺
- Dieser Artikel beschreibt den Prozess der Entdeckung und Behebung einer Schwachstelle im eBPF-Verifier.
- eBPF ist eine wichtige Technologie in der Kernel-Sicherheitsforschung, deren Sicherheit schwer zu gewährleisten ist.
- Google hat mit Buzzer einen Fuzzer entwickelt, der Schwachstellen im eBPF-Verifier automatisiert prüft.
- Der Artikel ist nützlich für Sicherheitsforscher und Entwickler und hilft dabei, die Sicherheit komplexer Systeme wie eBPF zu gewährleisten.
- Ähnliche Projekte sind andere Fuzzer-Werkzeuge rund um eBPF mit vergleichbarer Funktionalität.
Noch keine Kommentare.