|
Spesso le applicazioni più grandi sono sviluppate in piccole parti, da persone diverse, e unite per il progetto finale; inoltre, in un modulo possono presentarsi differenze e supposizioni che, se combinate con quelle di altri moduli, provocano vulnerabilità.
Per interagire con l'utente, l'applicazione deve accettare dati forniti da quest'ultimo, che possono essere in formato semplice oppure costituire un flusso articolato. In ogni caso, è possibile che l'utente invii dati che l'applicazione non prevede: questo evento potrebbe provocare un risultato nullo, modificare lo scopo prestabilito dell'applicazione, far si che quest'ultima fornisca agli utenti informazioni che costoro di norma non possono raggiungere, oppure ancora modificare l'applicazione stessa o il sistema sottostante. I dati imprevisti possono provocare tre classi di attacchi.
- Overflow del buffer:Quando un aggressore invia un volume di dati maggiore di quello previsto dell'applicazione, questa potrebbe non essere in grado di gestire la parte superflua. Ad avere questa reazione sono, per esempio, i linguaggi C e C++, a meno che l'applicazione sia programmata appositamente. Perl e Php, al contrario, gestiscono automaticamente i dati superflui aumentando le dimensioni per memorizzare la variabile.
- Funzioni di sistema: I dati vengono direttamente utilizzati, in un formato o nell'altro, per interagire con una risorsa non inclusa nell'applicazione. Le funzioni di sistema consistono nell'eseguire altre applicazioni, accedere o lavorare con i file e cosi via; i dati inoltre, possono modificare il comportamento di una di tali funzioni.
- Modifica della logica: I dati vengono creati in modo da modificare il modo in cui la logica dell'applicazione li gestisce. Si vengono cosi a creare scenari in cui, per esempio, l'aggressore dirotta i meccanismi di autenticazione, modifica le query Sql e viola alcune parti dell'aplicazione.
Occorre precisare che non esiste una distinzione netta fra le classi, perciò il medesimo attacco può ricadere in una o più categorie. Il formato effettivo dei dati imprevisti può cambiare; un attacco di questo genere può consistere semplicemente nell'inserimento di un valore normale che, però, modifica lo svolgimento logico prestabilito dall'applicazione: per esempio, esso potrebbe fornire il nome di un file di input alternativo. Questo formato non richiede, solitamente, una particolare preparazione tecnica. Vi sono poi le aggressioni la cui riuscita è dovuta all'inclusione di speciali metacaratteri che, per l'applicazione, ricoprono significari alternativi, che a sua volta provocano l'esecuzione di commandi di sistema. Le applicazioni, tipicamente, lavorano con i dati in continuazione, vi sono comunque alcune situazioni molto comuni... segue... |