Buffer Overflow su Web Server
Nonostante l’enorme successo registrato dai servizi Web-based e il crescente numero di pacchetti software disponibili per semplificare lo sviluppo di applicazioni secondo questo modello, il numero di vulnerabilità attribuibili ai Server Script è in aumento.
Molti degli incidenti riscontrati e documentati (come quelli registrati dal CERT), indicano che la tecnica principale utilizzata dagli hacker per violare un server HTTP consiste nel tentare di provocare un’eccezione non correttamente gestita su una componente software raggiungibile tramite Web Server.
In certi casi questa condizione può essere indotta semplicemente inviando un URL che non rispetta le regole prestabilite dal protocollo.
Specificando un URL molto lungo o mal formattato l’attaccante può cercare di ottenere quella che viene definita condizione di Buffer Overflow.
Questo fenomeno si verifica perché la dimensione dell’URL eccede lo spazio di memoria allocato dal programma per gestire la singola richiesta di servizio.
Il protocollo HTTP prevede una lunghezza massima per l’URL e ogni programma alloca un buffer di lunghezza limitata per ogni singola Request.
Se il client rispetta le regole fissate dal protocollo HTTP non si verificano inconvenienti (è il caso degli utenti legittimi); se invece il client è in mano all’attaccante le convenzioni possono essere volontariamente ignorate cercando di forzare un traboccamento nella memoria allocata dal server.
Le conseguenze dirette di un Buffer Overflow variano da programma a programma.
Un attaccante può sfruttare una simile condizione per sovrascrivere informazioni presenti in memoria e in alcuni casi sostituire/rimuovere file del sistema remoto(sostituzione della HomePage), fino ad arrivare a guadagnare il controllo remoto della piattaforma server, mandando in esecuzione specifiche componenti di codice (come avvenuto nella diffusione del Code Red Worm, nel 2001).
Nel seguito vengono riportate alcune vulnerabilità individuate nel corso del 2001, in grado di generare una condizione di Buffer Overflow su piattaforme server con sistema operativo Windows, dotate del pacchetto software IIS.
Anche il software di molte altre aziende sviluppatrici non è esente da analoghe vulnerabilità, ma la grande diffusione di IIS ha elevato questi bug di prodotto a problemi generali di sicurezza dell’Internet pubblica.
Il sistema operativo Microsoft Windows prevede generalmente che IIS installi per default molte altre componenti (estensioni ISAPI ad esempio) per implementare servizi aggiuntivi controllabili via HTTP.
Una componente tra queste è l’Index Server, che consente di accedere a Server Script (file individuabili dall’estensione .ida) dell’amministrazione remota della piattaforma e inviare interrogazioni via Internet (Internet Data Queries, tramite file individuabili dall’estensione .idq).
L’estensione ISAPI che implementa questa funzionalità utilizza un buffer per la memorizzazione dell’URL sul quale vecchie versioni di IIS non effettuavano appropriati controlli.
Questa lacuna può essere utilizzata da un attaccante per provocare un Buffer Overflow inducendo il sistema a eseguire localmente codice arbitrario.
Poiché il codice viene eseguito direttamente sulla piattaforma server questa vulnerabilità può consentire virtualmente a un hacker di compiere qualsiasi azione sul sistema, compreso lanciare programmi che consentono all’attaccante di guadagnare il controllo remoto del server.
La vulnerabilità sfrutta un bug presente in IIS, e non richiede che il servizio di Index sia attivo sulla macchina target perché l’attacco abbia successo.
È sufficiente che il server in IIS riconosca come Server Script i file di estensione .ida e .idq per poter sfruttare la vulnerabilità.
Microsoft ha provveduto a rilasciare in tempi brevi una patch di IIS in grado di eliminare la vulnerabilità descritta.
Un’altra componente Microsoft che è risultata affetta da problemi di sicurezza è il modulo che implementa il protocollo IPP.
Tale protocollo nasce per consentire l’invio e il controllo del processo di stampa via HTTP.
Nei sistemi operativi Microsoft Windows il supporto per il protocollo IPP (Internet Printing Protocol), è nativo e accessibile via IIS a partire dalla release 5.0.
L’estensione ISAPI che implementa questa funzionalità (installata per default) utilizza un buffer per la memorizzazione temporanea dei parametri in ingresso sul quale non sono effettuati controlli.
Questa lacuna può essere utilizzata da un attaccante per provocare un Buffer Overflow inducendo il sistema a eseguire localmente del codice arbitrario.
Poiché il codice viene eseguito direttamente sulla piattaforma server, questa vulnerabilità può consentire virtualmente a un hacker di compiere qualsiasi azione sul sistema, compreso lanciare programmi che gli consentano di guadagnare controllo remoto del server.
Microsoft ha provveduto a rilasciare in tempi brevi una patch di IIS in grado di eliminare la vulnerabilità descritta.
Nonostante la disponibilità di informazioni relative alla pericolosità delle precedenti vulnerabilità e al rilascio di patch in grado di eliminare (o quantomeno ridimensionare) gli inconvenienti a esse associati, non sono pochi gli amministratori di piattaforme server che non hanno provveduto a mettere in sicurezza i propri sistemi, consentendo lo sfruttamento delle vulnerabilità da parte di Worm, che hanno avuto larghissima diffusione e causato molti disservizi agli utenti dell’Internet pubblica a partire dal luglio 2001.
La riluttanza e l’inerzia di alcuni amministratori di piattaforme server a correre ai ripari lascia intuire il perché anche vulnerabilità di tipo Buffer Overflow più datate, sono ancor oggi presenti nell’Internet pubblica.
Un esempio è la vulnerabilità HTR/STM/IDC Unchecked Buffer, registrata nel 1999 che ancora si riscontra occasionalmente sulle stazioni in esercizio sulla rete.
La vulnerabilità è associata al modo in cui IIS gestisce, a seconda del file type, l’esecuzione di Script locali.
Ogni volta che un client richiede l’esecuzione di un file, il software IIS delega il compito di processare la richiesta a una specifica libreria dinamica (DLL).
La DLL coinvolta è responsabile anche di controllare la natura della risorsa e i parametri associati alla richiesta.
Le richieste relative a file di estensione .htr, .stm o .idc sono passate a una componente che utilizza un buffer per la memorizzazione temporanea dei parametri in ingresso sul quale non sono effettuati adeguati controlli.
Questa lacuna può essere utilizzata per provocare un Buffer Overflow generando un’eccezione non correttamente gestita dal sistema.
L’attacco può causare il blocco della piattaforma server (crash del sistema) e/o l’esecuzione di componenti di codice arbitrario.
Poiché il codice viene eseguito direttamente sulla piattaforma server, questa vulnerabilità può consentire virtualmente a un hacker di compiere qualsiasi azione sul sistema, compreso lanciare programmi che gli consentano di guadagnare il controllo remoto del server.
La vulnerabilità sfrutta un bug presente in IIS, e non richiede l’effettiva presenza di file di estensione .htr, .stm o .idc presso il server.
È sufficiente che il server IIS riconosca come Server Script i file con tali estensioni per poter sfruttare la vulnerabilità.