Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Betriebssysteme# Kryptographie und Sicherheit

Systemaufruf-Sicherheit mit eBPF verbessern

Lerne, wie eBPF die Systemsicherheitsaufrufe in Linux verbessert.

― 5 min Lesedauer


eBPF: Die Zukunft dereBPF: Die Zukunft derSicherheitSicherheitsbedürfnisse.Systemaufrufen für moderneeBPF verwandelt die Filterung von
Inhaltsverzeichnis

In modernen Betriebssystemen sind Systemaufrufe super wichtig. Sie ermöglichen es Anwendungen, mit dem OS zu interagieren und Aufgaben wie Dateizugriff, Prozessverwaltung und Netzwerkkommunikation auszuführen. Aber untrusted Anwendungen können diese Aufrufe missbrauchen, was dem System schaden könnte. Hier kommt die Sicherheit von Systemaufrufen ins Spiel, die hilft, zu beschränken und zu kontrollieren, welche Systemaufrufe Anwendungen nutzen können.

Die Bedeutung des Filterns

Das Filtern von Systemaufrufen ist eine der Hauptmethoden, die verwendet werden, um den OS-Kernel abzusichern. Es schränkt die Systemaufrufe ein, die ein Programm ausführen kann, basierend auf vordefinierten Regeln oder Richtlinien. Das hilft nicht nur, den Kernel zu schützen, sondern begrenzt auch den potenziellen Schaden, den bösartige Anwendungen anrichten können. Das Ziel ist es, Schwachstellen zu reduzieren, indem der Zugriff auf Systemfunktionen sorgfältig kontrolliert wird.

Seccomp: Ein Überblick

Seccomp, kurz für Secure Computing Mode, ist ein Linux-Feature, das für das Filtern von Systemaufrufen entwickelt wurde. Ursprünglich unterstützte es nur einen grundlegenden Modus, der alle bis auf ein paar kritische Systemaufrufe blockierte. Im Laufe der Zeit hat es sich jedoch weiterentwickelt, um benutzerdefinierte Filterrichtlinien zu ermöglichen. Leider sind diese Richtlinien oft in ihrer Komplexität begrenzt, aufgrund der zugrunde liegenden Sprache, die zur Definition verwendet wird.

Das Filtern von Seccomp funktioniert, ohne dass ein Benutzerraum-Agent benötigt wird, wodurch der Leistungsaufwand durch Kontextwechsel zwischen Benutzer- und Kernelraum entfällt. Es reduziert effektiv die Angriffsfläche und erlaubt nur vertrauenswürdige Aufrufe.

Die Einschränkungen von cBPF

Das klassische BPF (cBPF) ist die Sprache, die verwendet wird, um Seccomp-Richtlinien zu definieren. Während es grundlegendes Filtern ermöglicht hat, gibt es erhebliche Einschränkungen:

  • Es ist grösstenteils zustandslos, was bedeutet, dass es keine Informationen zwischen verschiedenen Aufrufen verfolgen kann.
  • Es unterstützt hauptsächlich Erlauben-Listen, was es schwierig macht, komplexe Sicherheitsrichtlinien auszudrücken.
  • Es hat eine Grössenbeschränkung, die die Anzahl der Anweisungen einschränkt, die ein Filter haben kann.

Aufgrund dieser Einschränkungen erfordern fortgeschrittene Sicherheitsmassnahmen oft Änderungen am Kernel selbst, was die Annahme neuer Funktionen erschwert.

Der Bedarf an fortgeschrittenem Filtern

Da sich Cyber-Bedrohungen weiterentwickeln, besteht ein wachsender Bedarf an ausgefeilteren Filtermechanismen. Die aktuellen Einschränkungen von cBPF verhindern die Implementierung fortgeschrittener Sicherheitsmassnahmen, die sich an verschiedene Situationen anpassen können. Funktionen wie die Verfolgung von Aufrufhäufigkeiten, das Durchsetzen von Aufrufsequenzen oder der sichere Zugriff auf Benutzerspeicher sind mit cBPF schwer umzusetzen.

Um diese Einschränkungen zu beheben, sollte ein programmierbares System in der Lage sein, komplexere Richtlinien auszudrücken, während es Leistung und Sicherheit beibehält.

EBPF: Eine neue Hoffnung

Extended BPF (eBPF) nimmt das Konzept von cBPF und verbessert es. Indem es komplexere Anweisungen und Zustandsverwaltung erlaubt, kann eBPF dabei helfen, fortgeschrittene Sicherheitsfunktionen zu implementieren, die cBPF nicht unterstützen kann.

eBPF-Programme laufen im Kontext des Kernels und bieten viele Funktionen:

  1. Zustandsbehaftete Filter: eBPF kann den Zustand zwischen Aufrufen beibehalten, was nuancierteres Filtern basierend auf vorherigen Systemaufrufen ermöglicht.
  2. Zugriff auf Kernel-Dienste: eBPF kann Kernel-Funktionen aufrufen und auf verschiedene Ressourcen zugreifen, was eine grössere Programmierbarkeit bietet.
  3. Leistung: eBPF ist darauf ausgelegt, schneller zu sein als cBPF, was für leistungsempfindliche Anwendungen entscheidend ist.

Seccomp-eBPF einrichten

Die Implementierung von Seccomp mit eBPF beinhaltet die Erstellung eines neuen Programms, das die Fähigkeiten von eBPF nutzt. Dieser Programmtyp ermöglicht es unprivilegierten Benutzern, Filter zu installieren, ohne die Sicherheit zu gefährden.

Wichtige Funktionen von Seccomp-eBPF

  1. Fortgeschrittene Zustandsverwaltung: eBPF-Programme können verfolgen, wie oft Systemaufrufe ausgeführt werden oder in welcher Reihenfolge sie aufgerufen werden.
  2. Synchronisation: Diese Funktion hilft sicherzustellen, dass der Systemzustand nicht durch gleichzeitigen Zugriff verschiedener Prozesse gefährdet wird.
  3. Sicherer Zugriff auf Benutzerspeicher: eBPF kann tief in den Benutzerspeicher eintauchen und Werte überprüfen, bevor ein Systemaufruf abgeschlossen wird, um Rennbedingungen zu verhindern.

Anwendungsbeispiele

Seccomp-eBPF kann verschiedene Sicherheitsfunktionen implementieren, die reale Schwachstellen angehen. Einige Anwendungsfälle sind:

Zähl- und Ratenbegrenzung

Indem die Anzahl der Ausführungen eines bestimmten Systemaufrufs verfolgt wird, können Filter Missbrauch verhindern. Wenn eine Anwendung beispielsweise nur einen bestimmten Aufruf eine begrenzte Anzahl von Malen ausführen darf, kann der Filter weitere Versuche ablehnen.

Schutz der Flussintegrität

Diese Funktion überprüft die Reihenfolge der Systemaufrufe. Wenn eine Anwendung versucht, eine Reihe von Aufrufen auszuführen, die nicht in der erlaubten Sequenz sind, wird der Filter sie blockieren. Das kann bestimmte Arten von Angriffen verhindern, die sich auf spezifische Abläufe stützen.

Temporale Spezialisierung

Anwendungen durchlaufen oft unterschiedliche Phasen, in denen verschiedene Sicherheitsrichtlinien anwendbar sind. eBPF kann die Richtlinien je nach aktueller Phase der Anwendung umschalten, um die Sicherheit zu erhöhen, ohne die Leistung zu beeinträchtigen.

Leistungsinsights

Leistung ist entscheidend beim Filtern von Systemaufrufen. eBPF bietet nicht nur fortgeschrittene Funktionen, sondern kann auch bestehende cBPF-Filter übertreffen. Bewertungen haben gezeigt, dass eBPF-Filter schneller ausgeführt werden können, während komplexe Sicherheitsrichtlinien implementiert werden.

Leistungsbewertung von Anwendungen

In verschiedenen Umgebungen wurde Seccomp-eBPF gegen Anwendungen getestet, um die Auswirkungen auf die Leistung zu messen. Die Ergebnisse zeigten, dass der Aufwand minimiert wurde, während signifikante Verbesserungen bei den Reaktionszeiten und Durchsätzen im Vergleich zu älteren Filtertechnologien festgestellt wurden.

Herausforderungen und zukünftige Richtungen

Obwohl eBPF viele Vorteile bietet, gibt es Herausforderungen zu bewältigen:

  • Komplexität bei der Implementierung: Die Implementierung von eBPF-Filter erfordert möglicherweise mehr Know-how als cBPF.
  • Sicherheitsrisiken: Unprivilegierter Einsatz von eBPF-Filtern wirft Sicherheitsbedenken auf, insbesondere wenn es Schwachstellen im eBPF-Überprüfer oder JIT-Compiler gibt.
  • Hardwareüberlegungen: Zukünftige Innovationen könnten darauf abzielen, Hardwarefähigkeiten zu nutzen, um den Filteraufwand weiter zu reduzieren.

Fazit

Die fortlaufende Weiterentwicklung des Filterns von Systemaufrufen ist entscheidend für die Verbesserung der Sicherheit des Linux-Kernels. Mit eBPF sehen wir einen signifikanten Wandel hin zu einem programmierbareren und effektiveren Filtersystem. Durch die Ermöglichung fortgeschrittener Richtlinien, ohne Leistung oder Sicherheit zu opfern, steht Seccomp-eBPF bereit, moderne Sicherheitsherausforderungen zu adressieren. Zukünftige Arbeiten werden sich wahrscheinlich darauf konzentrieren, diese Fähigkeiten zu verfeinern und ihre sichere Einführung in verschiedenen Bereitstellungsumgebungen sicherzustellen.

Originalquelle

Titel: Programmable System Call Security with eBPF

Zusammenfassung: System call filtering is a widely used security mechanism for protecting a shared OS kernel against untrusted user applications. However, existing system call filtering techniques either are too expensive due to the context switch overhead imposed by userspace agents, or lack sufficient programmability to express advanced policies. Seccomp, Linux's system call filtering module, is widely used by modern container technologies, mobile apps, and system management services. Despite the adoption of the classic BPF language (cBPF), security policies in Seccomp are mostly limited to static allow lists, primarily because cBPF does not support stateful policies. Consequently, many essential security features cannot be expressed precisely and/or require kernel modifications. In this paper, we present a programmable system call filtering mechanism, which enables more advanced security policies to be expressed by leveraging the extended BPF language (eBPF). More specifically, we create a new Seccomp eBPF program type, exposing, modifying or creating new eBPF helper functions to safely manage filter state, access kernel and user state, and utilize synchronization primitives. Importantly, our system integrates with existing kernel privilege and capability mechanisms, enabling unprivileged users to install advanced filters safely. Our evaluation shows that our eBPF-based filtering can enhance existing policies (e.g., reducing the attack surface of early execution phase by up to 55.4% for temporal specialization), mitigate real-world vulnerabilities, and accelerate filters.

Autoren: Jinghao Jia, YiFei Zhu, Dan Williams, Andrea Arcangeli, Claudio Canella, Hubertus Franke, Tobin Feldman-Fitzthum, Dimitrios Skarlatos, Daniel Gruss, Tianyin Xu

Letzte Aktualisierung: 2023-02-20 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2302.10366

Quell-PDF: https://arxiv.org/pdf/2302.10366

Lizenz: https://creativecommons.org/licenses/by/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Referenz Links

Mehr von den Autoren

Ähnliche Artikel