L'esempio classico dell'esecuzione di codice arbitrario si verifica quando un buffer basato su stack sovrascrive, sovrascrive l'indirizzo di ritorno in modo che il controllo possa saltare nell'attaccante con attenzione nell'impostare i dati per eseguire un codice shell per accedere al sistema.
Se sviluppi in C e scrivi molto codice, alla fine ti rovini da qualche parte e il tuo codice diventa sfruttabile.
Nei linguaggi gestiti come C #, Java, ecc. gli array sono controllati, non hanno puntatori che possono penzolare (sono garbage collection), ecc. Sembra corruzione della memoria, overflow del buffer e altre cose cattive che possono consentire un attaccante subentra nel computer non è possibile dal codice gestito, è vero?
Te lo chiedo perché ho intenzione di abbandonare C e C ++ e di usare C # o Java solo per motivi di sicurezza per le parti in cui le prestazioni non sono critiche.