¿Dejo alguna vulnerabilidad deshabilitando la longitud máxima de la ruta en Windows?

La longitud máxima de la ruta para el sistema operativo Windows es de 32.767 caracteres en total. Es así desde Windows NT 3.1 en 1993 y no ha cambiado. He escrito un buen trozo de código de sistemas de archivos para Windows NT y siempre me he asegurado de que lo que escribo soporta esas largas rutas.

MS-DOS tenía un límite de 260 bytes y ese valor fue consagrado en algún momento en un archivo de cabecera como MAX_PATH para alguna versión de Windows. Para asegurar la compatibilidad, la interfaz ASCII de la API Win32 impone este límite. La interfaz de caracteres anchos de la API Win32 (por ejemplo, CreateFileW) permite utilizar el límite completo de 32.767 caracteres. Los detalles de esto están documentados por Microsoft y explica cómo funciona. A partir de la 1607 permiten cambiar el comportamiento por defecto de la interfaz de caracteres anchos.

Si al deshabilitarla se creara una vulnerabilidad, es una vulnerabilidad que ya existe y puede ser explotada ya. La llamada a la API nativa (NtCreateFile) se puede utilizar (es la forma en que la API Win32 implementa CreateFile) también y, por lo tanto, si hay una vulnerabilidad, entonces ya se puede acceder a ella.

El único desafío del que soy consciente es que se pueden crear rutas que no están disponibles para las aplicaciones que tienen codificado el límite de 260 caracteres. Si estoy tratando de causar problemas en este campo, tenderé a abusar de los aspectos de preservación de mayúsculas y minúsculas de Windows. Si tienes instalado WSL, puedes iniciar un shell bash y crear archivos que sólo varíen en mayúsculas:

miArchivo

miArchivo

MiArchivo

Luego intenta eliminar sólo una instancia específica con el Explorador. Tienes una oportunidad de 1 en N para N archivos con nombres idénticos. Para confirmar que esto se sigue comportando así, lo hice en mi sistema Windows 10 1709, con Ubuntu bash.

Finalmente: No me imagino cómo podría crear una nueva vulnerabilidad. Lo máximo que haría es descubrir una ya existente.