Benvenuti alla lezione tre.
La memoria non è solo archiviazione, è lo spazio che il tuo sistema usa per eseguire
app, elaborare dati e caricare programmi.
Quando la gestione della memoria va male, gli attaccanti possono sfruttarla (exploit),
a volte prendendo il pieno controllo di un dispositivo.
In questa lezione, copriremo cos'è la memory corruption,
come viene sfruttata, e le difese che i sistemi moderni
usano per fermare questi attacchi.
La memory corruption accade quando un programma scrive fuori dalla sua area di memoria
assegnata, sovrascrivendo accidentalmente altri dati o istruzioni.
Un esempio classico è il buffer overflow.
Immagina un contenitore costruito per contenere dieci oggetti.
Se forzi 20 oggetti dentro di esso, l'extra trabocca fuori,
possibilmente sovrascrivendo informazioni importanti vicine.
Nell'informatica, quella fuoriuscita può essere sfruttata dagli attaccanti per mandare in crash
un programma, dirottare (hijack) il suo comportamento, o iniettare (inject) malicious code.
Gli attaccanti amano
i difetti di memoria perché possono fare molto con un piccolo errore.
Ecco il flusso tipico.
Mandare in crash il programma causando un buffer overflow o un errore simile.
Reindirizzare l'esecuzione sovrascrivendo return addresses o pointers.
Iniettare malicious code nello spazio di memoria compromesso
creando attentamente il loro overflow.
Gli attaccanti possono prendere il pieno controllo dell'operating system
o installare malware invisibilmente.
I moderni operating systems usano Data Execution
Prevention, o DEP per bloccare molti attacchi di memoria.
Normalmente, la memoria contiene o dati
o executable code, ma non entrambi.
DEP assicura che le aree contrassegnate come dati non possano essere eseguite,
anche se un attaccante inietta malicious code nella memoria.
DEP gli impedisce di girare.
È come mettere serrature di sicurezza su porte che non dovrebbero mai aprirsi.
Un'altra potente difesa è Address
Space Layout Randomization, o ASLR
senza ASLR.
Parti della memoria sono situate in posti prevedibili.
Con ASLR, gli indirizzi di memoria sono randomizzati ogni volta che un programma viene eseguito.
Questo rende
incredibilmente difficile per un attaccante indovinare dove deve andare il loro payload.
Anche se trovano un difetto di memoria, non possono colpire in modo affidabile il bersaglio giusto.
I sistemi moderni usano tecniche aggiuntive per fermare gli attacchi di memoria.
Stack canaries valori speciali piazzati sullo stack
se vengono alterati, il programma sa di essere sotto attacco e si chiude
protezioni di compiler e runtime.
Molti compilers aggiungono bounds checking per prevenire gli overflow.
Linguaggi di programmazione memory safe.
Linguaggi come Rust e Go rendono i bug di memory corruption molto più difficili da creare.
Insieme, queste difese formano un forte scudo contro gli attacchi basati sulla memoria.
Pronto per un piccolo quiz di riepilogo?
Domanda uno.
Cos'è un buffer overflow?
A scaricare troppi file in una volta.
B inviare email di spam rapidamente.
C eseguire troppe app contemporaneamente.
D sovrascrivere la memoria scrivendo oltre un limite del buffer (buffer boundary).
Pausa e decidi.
La risposta corretta è D.
Il Buffer overflow si verifica quando un programma scrive oltre lo spazio
allocato per i dati.
Domanda due qual è lo scopo di Data Execution
Prevention. DEP
A cripta tutti i file.
B impedisce alle regioni dati della memoria di eseguire codice.
C aumenta la velocità di download.
D randomizza le password.
Pensaci attentamente.
La risposta corretta è B.
DEP impedisce che il malicious code iniettato venga eseguito.
Domanda finale qual è l'obiettivo principale di Address Space Layout Randomization?
ASLR
A velocizzare la CPU.
B rendere la memoria più difficile da prevedere.
C nascondere file di sistema.
D risparmiare durata della batteria.
Pausa per riflettere.
La risposta corretta è
B ASLR randomizza il layout della memoria,
rendendo difficile per gli attaccanti prevedere gli indirizzi di memoria.
Ben fatto.
Ora capisci cos'è la memory corruption, come viene sfruttata,
e come difese come DEP e ASLR proteggono i sistemi moderni.
Questi livelli di sicurezza fanno una massiccia differenza nella difesa del mondo reale.
Dopo, passeremo a un hands-on lab dove farai pratica
nell'applicare policy di sicurezza e nell'hardening della tua virtual machine.
Mettiamoci al lavoro.