Lascio qualche vulnerabilità disabilitando la lunghezza massima del percorso in Windows?

La lunghezza massima del percorso per il sistema operativo Windows è di 32.767 caratteri totali. È stato così fin da Windows NT 3.1 nel 1993 e non è cambiato. Ho scritto un bel po' di codice di file system per Windows NT e mi sono sempre assicurato che ciò che scrivo supporti quei lunghi percorsi.

MS-DOS aveva un limite di 260 byte e quel valore è stato sancito a un certo punto in un file di intestazione come MAX_PATH per qualche versione di Windows. Per assicurare la compatibilità, l'interfaccia ASCII nell'API Win32 fa rispettare questo limite. L'interfaccia a caratteri larghi dell'API Win32 (ad esempio, CreateFileW) permette di usare l'intero limite di 32.767 caratteri. I dettagli di questo sono documentati da Microsoft e spiega come funziona. A partire dalla 1607 permettono di cambiare il comportamento predefinito per l'interfaccia a caratteri larghi.

Se disabilitarla dovesse creare una vulnerabilità, è una vulnerabilità che già esiste e può essere già sfruttata. Anche la chiamata API nativa (NtCreateFile) può essere usata (è il modo in cui l'API Win32 implementa CreateFile) e quindi se c'è una vulnerabilità allora è già accessibile.

L'unica sfida di cui sono a conoscenza è che si possono creare percorsi che non sono disponibili alle applicazioni che hanno codificato il limite di 260 caratteri. Se sto cercando di causare problemi in questa arena, tenderò ad abusare degli aspetti case preserving/case insensitive di Windows. Se avete installato WSL, potete avviare una shell bash e creare file che variano solo in maiuscolo:

myfile

myFile

MYFILE

MYFILE

Poi provate a rimuovere solo una specifica istanza con Explorer. Hai una possibilità su N per N file dal nome identico. Per confermare che è ancora così che si comporta, l'ho fatto sul mio sistema Windows 10 1709, con Ubuntu bash.

Linea di fondo: Non riesco a immaginare come potrebbe creare una nuova vulnerabilità. Il massimo che potrebbe fare è scoprirne una esistente.