Code injection può essere utilizzato da un utente malintenzionato per introdurre codice dannoso in un programma per computer vulnerabile e modificare il corso dell’esecuzione.
Tutto il software prende una sorta di input – un programma sicuro dovrebbe trattare tutti gli input da una sorgente esterna come “non attendibili” fino a prova contraria. Le vulnerabilità di iniezione di codice esistono quando un utente malintenzionato può inviare un input eseguibile a un programma e ingannare il software in esecuzione di tale input. Questo dà all’attaccante un channelby che loro possono aggirare qualsiasi restrizione di sicurezza messa in atto dall’autore di theprogram.
Alcuni tipi comuni di iniezione di codice sono:
-
Iniezione SQL. Il trattamento non sicuro dei parametri HTTP durante la costruzione di queriesu un sito Web può consentire a un utente malintenzionato di eseguire dichiarazioni SQL arbitrarie su un’applicazione vulnerabile.
-
Cross site scripting. Il trattamento non sicuro dei parametri HTTP può consentire l’iniezione di JavaScript dannoso in un’applicazione Web.
-
Esecuzione del comando. Il trattamento non sicuro dei parametri HTTP può consentire un attacco per eseguire comandi di shell arbitrari sul server web.
Le conseguenze di un’iniezione di codice riuscita sono generalmente disastrose perl’autore dell’applicazione. I rischi possono essere mitigati garantendo un trattamento sicuro di input non attendibile e praticando la difesa in profondità per limitare i privilegi dell’applicazione in esecuzione.