Soluzioni per la difesa da attacchi DoS nelle reti SDN
Summary of “The Case for Writing Network Drivers in High-Level Programming Languages"
1. Laurea Triennale in Ingegneria Elettronica
e Informatica
Candidato:
Leonardo IURADA
Relatore:
Prof. Marco TESSAROTTO
Summary of “The Case for Writing Network Drivers
in High-Level Programming Languages”[1]
Anno Accademico 2019/2020
[1] Paul Emmerich, Simon Ellmann, Fabian Bonk, Alex Egger, Esaú García Sánchez- Torija, Thomas Günzel,
Sebastian Di Luzio, Alexandru Obada, Maximilian Stadl- meier, Sebastian Voit, Georg Carle The Case for Writing
Network Drivers in High-Level Programming Languages ANCS’ 19, 13 September 2019
2. DRIVER IN SPAZIO UTENTE
IN LINGUAGGI AD ALTO LIVELLO
• Linux Kernel, 2017: 66% codice nei driver (scritti in C)
• RILEVANZA: 65 bug di sicurezza in Linux Kernel, 2017:
• 8 use-after-free, double-free
• 32 out-of-bounds
• 14 bug logici
• 11 non indagati
39 su 40
nei driver
Risolti da
linguaggi ad
alto livello
3. DOMANDA: Quali linguaggi ad alto livello
sono adatti allo sviluppo di driver in
spazio utente?
• Driver di rete, perché?
• Richiede prestazioni elevate confronto rilevante
• 13 su 39 bug nei driver di rete
• In spazio utente, perché?
• Isolamento dal Kernel
4. DRIVER: Sicurezza
• CONTROLLI DI SICUREZZA:
• bug use-after-free/double-free :
risolti da compilatori/interpreti autonomamente
• bug out-of-bounds :
risolti controllando che le operazioni siano
eseguite solo all’interno di intervalli di indirizzi di
memoria specificati
5. CONFIGURAZIONE DI TEST
• DOMANDA: Quali linguaggi ad alto livello sono adatti allo sviluppo di
driver in spazio utente?
• PRESTAZIONI:
• Test single core su CPU Xeon E3-1230 v2 clock 3.3 GHz
• Applicazione di forwarding su 2 Intel X520 NIC 10Gbit/s
• Traffico generato con MoonGen
• LATENZA:
• Mirroring pacchetti su server con NIC Xeon D + MoonSniff
8. CONCLUSIONE: Rust
• PRESTAZIONI: Rust raggiunge almeno 90% di quelle di C
• LATENZA: Sia Rust che C < 40 a 20 Mpps
• Driver futuri scritti in Rust risolti 13 su 39 bug (33%)
μs