Microsoft al lavoro per implementare eBPF su Windows, ma sarà bene guardarsi dai bug!

0

eBPF, acronimo di Extended Berkeley Packet Filter, è una tecnologia (basata appunto su BPF) che permette di eseguire software all’interno di una sandbox, senza bisogno di modificare il Kernel o caricare moduli aggiuntivi, tramite una compilazione just-in-time.

BPF è già ampiamente utilizzato da Netflix e Facebook principalmente per analisi del traffico, packet filtering e load balancing ma la versione extended risulta utile anche per debug, analisi di sistema e file system e syscall, tutte informazioni che possono essere usate per difendersi da attacchi DoS.

Le potenzialità di eBPF non sono passate inosservate e Microsoft ha lanciato negli scorsi giorni un progetto open source per portare questa tecnologia su Windows.

Gli sviluppatori di Windows saranno in grado di utilizzare strumenti come clang per generare bytecode eBPF dal codice sorgente che potrà essere collegato a qualsiasi applicazione o utilizzato con la riga di comando netsh di Windows, tramite una libreria condivisa che utilizza le API Libbpf.

La libreria passa il bytecode attraverso PREVAIL (static verifier per eBPF) all’interno di una sandbox Windows che consente ad un componente del Kernel di considerare attendibile uno user-mode daemon, firmato da una trusted key. Se il bytecode viene approvato può essere eseguito.

Architettura del progetto (fonte: Microsoft Blog)

Microsoft ci tiene a sottolineare che il progetto non è un fork:

The ebpf-for-windows project aims to allow developers to use familiar eBPF toolchains and application programming interfaces (APIs) on top of existing versions of Windows. Building on the work of others, this project takes several existing eBPF open source projects and adds the ‘glue’ to make them run on Windows.

Il progetto ebpf-for-windows mira a consentire agli sviluppatori di utilizzare toolchain e API familiari di eBPF su Windows. Basandosi sul lavoro di altri, questo progetto ne include diversi altri già esistenti e fa da collante per far funzionare tutto su Windows.

L’obiettivo, secondo Microsoft, sarebbe quello di rendere Windows sempre più compatibile con altre piattaforme, senza la necessità di riscrivere codice.

È vero infine che non si può giudicare un film dal trailer, ma dopo aver letto questa security advisory, vien da pensare a come il lavoro, per Microsoft, sia solo all’inizio:

Ryota Shiga discovered that the eBPF implementation in the Linux kernel did not properly verify that a BPF program only reserved as much memory for a ring buffer as was allocated. A local attacker could use this to cause a denial of service (system crash) or execute arbitrary code.

Ryota Shiga ha scoperto che l’implementazione eBPF nel kernel Linux non verificava correttamente che un programma BPF riservasse solo tanta memoria per un ring buffer quanta ne era stata allocata. Un attaccante locale potrebbe usare questo per causare un
denial of service (crash di sistema) o eseguire codice arbitrario.

Considerato lo scopo per cui eBPF nasce sarebbe tutto quantomeno… Ironico!

Affascinata sin da piccola dai computer (anche se al massimo avevo un cluster di Mio Caro Diario), sono un’opensourcer per caso, da quando sono incappata in Mandrake. Legacy dentro. Se state leggendo un articolo amarcord, probabilmente l’ho scritto io.