Voglio capire come viene sfruttato un processo di Internet vulnerabile su alcuni computer per eseguire codice binario arbitrario.
Capisco come gli overflow del buffer potrebbero essere usati per sovrascrivere l'indirizzo di ritorno per far saltare il processo in una posizione che non si supponeva - ma non so come sia possibile per un processo eseguire codice binario arbitrario che riceve da un aggressore.
Sembra che se un utente malintenzionato invia un codice binario a un processo non verrà mai inserito nella sezione .text in modo che rimanga non eseguibile, anche se "return" vi salta sopra. Gli overflow dello stack e dell'heap non scriverebbero nella sezione in cui è memorizzato il codice, quindi continueranno a presentare un bit non eseguibile.
Modifica: per essere più chiari, la parte principale che non capisco è questa:
- la sezione .text in cui sono memorizzate le istruzioni della CPU assemblate binarie non può essere modificata
- la sezione .data / .bss è contrassegnata come no-execute in modo che le informazioni ivi contenute siano trattate come dati, non saranno mai eseguite dalla CPU