1 Punkte von GN⁺ 2024-08-10 | Noch keine Kommentare. | Auf WhatsApp teilen

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:
    1. Erzeugen eines Headers, der Register mit beliebigen Werten initialisiert
    2. Erzeugen beliebiger Arithmetik- und Sprungbefehle
    3. Auswählen eines beliebigen Registers und Ausführen einer Additionsoperation mit einem Pointer auf ein eBPF-Map-Element
    4. 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:
    1. Erreichen beliebiger Lese-/Schreibzugriffe
    2. 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.

Noch keine Kommentare.