L'overflow del buffer è una vulnerabilità molto comune, spesso mirata agli exploit zero-day. Gli attacchi riusciti portano spesso all'esecuzione di codice arbitrario, mentre i tentativi falliti tendono a mandare in crash il programma di destinazione. ASLR rende questo scenario ancora più comune: in questo esempio di attacco Il server Web Apache si blocca ripetutamente fino a quando l'utente malintenzionato non rileva l'indirizzo della funzione system()
prima di essere sfruttato. L'attacco richiede una media di 32000 tentativi.
Questo mi ha fatto pensare: perché Apache consente di essere attaccato in modo così ovvio? Sarei sorpreso se i server Web configurati correttamente si bloccassero più di un paio di volte al giorno in produzione, quindi migliaia di arresti in pochi minuti sono un strong indicatore che:
- si sta verificando un attacco
- in realtà sta succedendo, cioè avviene un overflow del buffer
In caso di exploit zero-day, vietare l'IP dell'utente malintenzionato per un giorno o arrestare del tutto il server dopo circa 10 arresti anomali fornirebbe tempo sufficiente per applicare una correzione e fare una grande differenza in termini di sicurezza.
C'è un modo per applicare tale politica di sicurezza per servizi popolari come Apache, sshd
e simili? Oppure ci sono server HTTP e SSH con funzionalità integrate?