Analyse van de security posture van eBPF
eBPF is een technologie die het mogelijk maakt om gesandboxte programma’s uit te voeren binnen een geprivilegieerde context: de kernel van een operating system. De oorsprong ligt in de Linux kernel en een groot deel van de kernel-componenten kan ermee worden geïnstrumenteerd. eBPF kan worden ingezet om de functionaliteit van de kernel uit te breiden zonder de broncode aan te passen of kernel modules te laden. Daarmee voegt eBPF programmeerbaarheid toe aan de kernel en maakt het een efficiënte manier van applicatie-uitrol binnen de Linux kernel mogelijk.
Securityrisico’s en de rol van de verifier
Security is een belangrijk aandachtspunt, aangezien eBPF applicaties in een geprivilegieerde context kunnen draaien. Om deze risico’s te mitigeren, wordt gebruikgemaakt van een verifier. Voordat eBPF-instructies worden geladen, analyseert de kernel-verifier de code statisch. De verifier controleert onder andere dat het programma geen oneindige loops kan veroorzaken, geen gevaarlijke memory access uitvoert en dat de complexiteit en code omvang binnen vastgestelde limieten blijven. De implementatie hiervan is te vinden in de kernel source code onder kernel/bpf/verifier.c. Na succesvolle validatie door de verifier wordt de code als veilig beschouwd om uit te voeren. Vervolgens kunnen eBPF-programma’s toegang krijgen tot kernel-only functionaliteiten, zoals network traffic filtering, system call hooking en tracing.
Use cases van eBPF
eBPF wordt breed ingezet voor het bouwen van tooling op het gebied van networking, monitoring, tracing en packet filtering. Daarnaast kan eBPF worden gebruikt voor hotpatching, waarbij een bug direct kan worden verholpen zonder andere operationele processen te verstoren tijdens het toepassen van een patch.
Risico’s en attack vectors
Er bestaan ook duidelijke risico’s. Zo hebben eBPF applicaties de mogelijkheid om naar user-space memory te schrijven. Dit kan door malware worden misbruikt om het geheugen van een proces te manipuleren tijdens system calls, wat rootkit-achtige mogelijkheden aan een aanvaller kan bieden. In bredere zin vormt eBPF een interessante attack vector, omdat het kernel programma’s kan uitvoeren zonder dat het laden van een kernel module vereist is. Deze eigenschap kan aantrekkelijk zijn voor aanvallers die kernel-level toegang willen verkrijgen of misbruiken.
Onderzoeksfocus
In dit onderzoek is een diepgaande analyse uitgevoerd naar eBPF met als doel een holistisch begrip te ontwikkelen van de technologie, de bijbehorende risico’s en de relevante attack surfaces.