|
| 1 | +--- |
| 2 | +title: eBPF |
| 3 | +status: Completed |
| 4 | +category: architettura |
| 5 | +--- |
| 6 | + |
| 7 | +## Cos'è |
| 8 | + |
| 9 | +eBPF, per esteso "Berkeley Packet Filter", è una tecnologia che consente di eseguire piccoli programmi o script in sandbox nello spazio kernel di un sistema Linux, |
| 10 | +senza dover modificare il codice sorgente del kernel o caricare moduli del kernel Linux specifici. |
| 11 | +Un sistema Linux ha due spazi di esecuzione dei processi: il kernel e lo spazio utente. |
| 12 | +Il kernel rappresenta il nucleo del sistema operativo ed è l'unica parte con accesso illimitato all'hardware. |
| 13 | +Le applicazioni risiedono nello spazio utente e, quando necessitano di autorizzazioni più elevate, inviano una richiesta al kernel. |
| 14 | +Per le applicazioni che richiedono piu previlegi, come l'accesso diretto all'hardware, |
| 15 | +il kernel può essere esteso tramite l'approccio noto come "moduli kernel Linux". |
| 16 | +Questo approccio estende la funzionalità predefinita del kernel, consentendo alle applicazioni un accesso più profondo ai componenti sottostanti. |
| 17 | +Tuttavia, questo approccio introduce anche rischi di sicurezza, rendendo eBPF un'alternativa interessante. |
| 18 | + |
| 19 | +## Quali problematiche affronta |
| 20 | +In genere, le applicazioni vengono eseguite nello spazio utente e, se l'applicazione richiede alcuni privilegi dal kernel (ad esempio per accedere a una parte hardware), |
| 21 | +lo richiede al kernel tramite una "chiamata di sistema". |
| 22 | +Nella maggior parte dei casi, questo approccio funziona bene. Ci sono però dei casi, come ad esempio nell'utilizzo di funzionalità di osservabilità, sicurezza e networking, |
| 23 | +in cui gli sviluppatori richiedono una maggiore flessibilità per l'accesso al sistema a basso livello. |
| 24 | +A questo scopo, possiamo utilizzare i moduli del kernel Linux, che estendono la base del kernel senza richiederne la modifica del codice sorgente. |
| 25 | +Sebbene ci siano vantaggi nell'utilizzo dei moduli del kernel Linux, questo approccio introduce anche rischi per la sicurezza: |
| 26 | +operando nello spazio kernel, in caso di problemi i moduli del kernel Linux possono causare il crash del kernel stesso e, quando il kernel si blocca, si blocca anche l'intera macchina. |
| 27 | +Inoltre, i moduli del kernel hanno privilegi elevati e accesso diretto alle risorse di sistema. Se non sono adeguatamente protetti, gli aggressori possono sfruttarli. |
| 28 | + |
| 29 | +## In che modo aiuta |
| 30 | +eBPF offre un ambiente controllato e delimitato per l'esecuzione di programmi definiti dall'utente rispetto ai moduli del kernel Linux. |
| 31 | +Viene eseguito in un ambiente sandbox all'interno del kernel, fornendo isolamento e mitigazione dei rischi. |
| 32 | +Se una vulnerabilità o un difetto vengono sfruttate in un programma eBPF, l'impatto è generalmente limitato all'ambiente sandbox. |
| 33 | +Inoltre, prima che un programma eBPF possa iniziare a essere eseguito nel kernel, deve superare alcune verifiche. |
| 34 | +All'interno del kernel, un componente chiamato "eBPF verifier", controlla il programma eBPF per potenziali violazioni di sicurezza, |
| 35 | +come l'accesso alla memoria fuori dai limiti, i loop infiniti e le funzioni del kernel non autorizzate. |
| 36 | +In questo modo, si assicura che il programma non entri in un loop infinito e causi un crash del kernel. |
| 37 | +Questi controlli di sicurezza rendono eBPF un'opzione più sicura per eseguire applicazioni nel kernel Linux rispetto ai moduli del kernel Linux. |
0 commit comments