I sistemi operativi generalmente hanno un numero limitato di file che possono aprire contemporaneamente (in particolare, un numero limitato di descrittori di file o fd
s in sistemi di tipo Unix o HANDLE
s in Windows). Se si consente alle persone di aprire un numero arbitrario di quelli senza chiuderli, allora potrebbe essere possibile ridurre tale limite, il che impedirebbe al sistema operativo di aprire più file e probabilmente causarne il comportamento anomalo o addirittura l'arresto anomalo. Tuttavia, sarebbe difficile sfruttarlo per qualcosa di più della negazione del servizio. Inoltre, i programmi potrebbero avere quote (inferiori al limite di sistema) del numero di file che possono aprire, quindi un singolo programma non funzionante potrebbe non fare troppo e tutti i file di un processo vengono rilasciati quando il processo si interrompe così normalmente è facile abbastanza per ripristinare la funzione (anzi, la maggior parte dei programmi si bloccherebbe prima).
Tuttavia, se permetti alle persone di dire al tuo server di aprire un file, sarebbe una buona idea avere un limite su quanti possono essere aperti contemporaneamente e chiudere il file (automaticamente, se l'utente non lo fa) t si consiglia di farlo prima) dopo il minor tempo possibile.
Un altro rischio potrebbe essere l'apertura di connessioni di rete, a seconda del sistema operativo in uso e dei tipi di percorso che accetta. Ad esempio, se il sistema accetta percorsi di stile di rete Windows ( \server\share\path\to\file
) o SMB (il protocollo di rete Windows, implementato su Unix-like nel toolkit Samba) ( smb://server/share/path
), o altri modi per accedere a qualsiasi tipo di rete file system che non è ancora montato (o "mappato" per usare il vecchio termine di Windows) nel file system locale, che potrebbe causare l'apertura di una connessione di rete al box di un utente malintenzionato e possibilmente provare ad autenticarsi. Questo potrebbe rivelare informazioni sul server, e potrebbe fornire un vettore per gli aggressori per cercare di compromettere il server tramite risposte dannose.
Quindi, dovresti anche limitare i nomi dei file a cose che puoi essere sicuro che non siano percorsi remoti. In generale, dovresti probabilmente evitare di lasciare che vengano specificati i percorsi; solo consentire nomi di file solo. Questi sono gli unici due rischi che riesco a pensare, però. Altrimenti, è abbastanza sicuro.