Denial of Service
Un denial of service si verifica quando è necessario concedere l'accesso a un determinato servizio, ma in realtà è stato rifiutato in modo non corretto. Ad esempio, qualsiasi operazione che un'applicazione senza privilegi può eseguire che fa sì che il sistema diventi inutilizzabile sia effettivamente un denial of service. Ciò include qualsiasi operazione o sequenza di operazioni che:
Arresta in modo anomalo il sistema.
Causa la terminazione prematura di thread o processi.
Crea una condizione di deadlock. Un deadlock si verifica quando due o più thread vengono arrestati in attesa in uno stato permanente di stallo. Ogni thread è in attesa di una risorsa contenuta in uno degli altri thread.
Crea una condizione di blocco attivo. Un blocco attivo può verificarsi quando due o più processori non possono progredire perché sono in attesa di acquisire una risorsa (in genere un blocco su una coda) e il thread proprietario di tale risorsa è in uno stato simile non in corso.
Questi problemi spesso si verificano all'interno dei driver perché contengono bug latenti che possono essere sfruttati dalle normali applicazioni. Gli exploit di questo tipo possono essere semplici e difficili da proteggere. Le cause comuni di tali problemi nei driver includono:
Convalida del buffer utente non corretta.
Overflow del buffer o underflow.
Per i file system e i driver di filtro del file system, esistono numerosi casi di tali problemi. Ad esempio, il valore MAX_PATH è definito come 260 per motivi cronologici nel sottosistema Win32. Molti componenti driver presuppongono che ciò indichi le dimensioni del percorso più grande. Sfortunatamente, questo non è il caso perché il percorso massimo in un file system NTFS è di 32.767 caratteri Unicode (65.534 byte). Se un driver di filtro deve codificare un presupposto di lunghezza MAX_PATH nella relativa codebase, un semplice attacco Denial of Service deriva da un'applicazione che crea un percorso più grande di questo all'interno di un percorso gestito dal driver di filtro.
Un altro problema comune è che le applicazioni incorporare spesso puntatori in modalità utente in richieste PRIVATE MDFTL. Un file system è soggetto a tre ampie categorie di attacchi Denial of Service:
Utilizzo di tutto lo spazio disponibile su disco.
Uso di tutta la larghezza di banda del disco disponibile.
Blocco dell'accesso ai file a cui gli utenti devono accedere.
In genere, c'è poco che uno sviluppatore di file system può fare per evitare questi tipi di attacchi. Tuttavia, esistono passaggi che possono essere eseguiti dagli sviluppatori per consentire agli amministratori di limitare questi tipi di attacchi Denial of Service.
L'attacco Denial of Service più semplice che coinvolge il file system consiste nell'usare tutto lo spazio libero su disco. È semplice scrivere un'applicazione per eseguire questa operazione e le conseguenze sono molto distanti. Molte applicazioni e servizi nel sistema non funzioneranno se non possono più scrivere su disco. La tecnologia di mitigazione è costituita dalle quote dei dischi, che possono limitare la quantità di spazio su disco disponibile per i file di proprietà di un utente quando vengono usati correttamente dagli amministratori. Pertanto, è opportuno includere il supporto per le quote dei dischi durante lo sviluppo di un file system.
Un'applicazione dannosa o scritta in modo non appropriato potrebbe anche provare a utilizzare tutta la larghezza di banda del disco. Le conseguenze per gli utenti normali soggetti a questo tipo di attacco sono un sistema lento o non rispondente. Attualmente, il sistema operativo non ha alcun meccanismo per limitare la larghezza di banda utilizzata dalle applicazioni. Un file system usa anche la memoria kernel per ogni oggetto file aperto e handle di file. Un'applicazione dannosa potrebbe tentare di aprire continuamente un numero elevato di file e mantenerli aperti fino a quando la memoria non viene esaurita. La tecnica di mitigazione principale per questi problemi è il controllo e la registrazione in modo che un amministratore possa monitorare il computer per le applicazioni che eseguono una grande quantità di operazioni di I/O o che usano grandi quantità di altre risorse. Anche in questo caso, sarebbe opportuno che i driver di filtro del file system e del file system includano il supporto del controllo per essere in grado di ridurre al minimo questo tipo di denial of service.
Un'applicazione dannosa può tentare di impedire ad altri utenti di accedere ai file necessari per un uso normale. Una strategia importante per ridurre al minimo questi problemi consiste nel garantire che le informazioni di sicurezza associate agli oggetti file vengano implementate correttamente durante lo sviluppo di file system.
Infine, tutti i driver devono essere preoccupati per l'utilizzo di tutta la memoria disponibile o di altre risorse in risposta alle richieste da un'applicazione dannosa o aberrante.