O ci sono tecniche per ottenere una shell?
Quello che mi interessa è che se ho compilato un codice C usando solo una piccola libreria con chiamate insignificanti, questo impedisce all'aggressore di fare qualcosa?
O ci sono tecniche per ottenere una shell?
Quello che mi interessa è che se ho compilato un codice C usando solo una piccola libreria con chiamate insignificanti, questo impedisce all'aggressore di fare qualcosa?
Probabilmente aiuta un po ', alzando la barra e richiedendo un attacco più sofisticato, ma non appenderei il mio cappello di sicurezza su questo.
Il modo migliore di pensarci è che, nel peggiore dei casi, hanno la possibilità di aggiungere codice arbitrario al tuo programma. Possono fare tutto ciò che il codice C può fare, incluso leggere / scrivere su file sul proprio filesystem (cioè leggere i dati o inserire backdoor in altri programmi) o chiamare exec()
per eseguire altri programmi. Quindi sì, un buffer overflow può fare qualsiasi cosa che una shell può fare.
Se vuoi essere dalla parte della sicurezza, considera un buffer overflow come game over e invece dedica il tuo tempo e impegno a difesa approfondita attorno al servizio che potrebbe essere vulnerabile. Ad esempio, limitando chi può inviare dati a questo servizio mettendolo dietro un server di autenticazione, firewall e ispezione approfondita dei pacchetti ; segui il principio del privilegio minimo per bloccare i privilegi dell'utente che esegue il servizio, ecc.
TL; DR : i buoni sviluppatori dovrebbero sempre controllare due volte il loro codice per evitare overflow del buffer o dereferenze del puntatore nullo, mentre i buoni amministratori di sys dovrebbero sempre presumere che gli sviluppatori siano stati sciatti e avvolgere il servizio in una cipolla di sicurezza per minimizzare il danno potenziale.
Leggi altre domande sui tag c linux buffer-overflow