La vulnerabilidad aprovecha la diferencia entre las rutas DOS y NT
Cuando a alguien se le pide que escriba la ruta a un archivo en un sistema Windows, es probable que escriba algo del tipo C:\directorio\subdirectorio\archivo.txt. Esto se conoce como ruta de archivo estilo DOS y ha sido la forma más común de representar la ubicación de un archivo desde la primera versión de Windows. Sigue siendo una forma común en que muchas aplicaciones abordan archivos en Windows cuando quieren realizar operaciones en ellos.
Sin embargo, desde Windows NT existe otra forma de representar las rutas de los archivos. La ruta NT equivalente a la ruta DOS anterior sería \??\C:\directorio\subdirectorio\archivo.txt. Podría pensar que no hay mucha diferencia, y para este ejemplo en particular, estaría en lo cierto, pero lo que realmente sucede es que las rutas NT admiten Unicode, por lo que una mayor cantidad de caracteres, en comparación con las rutas DOS que solo admiten el carácter ANSI. colocar.
El problema es que las funciones de operación de archivos WindowsAPI, a las que llaman muchas aplicaciones como CreateFile, en realidad funcionan con NT Paths. Si se les presenta una ruta de DOS, primero la convertirán a una ruta de NT usando una función llamada RtlpDosPathNameToRelativeNtPathName. Se aplican muchas reglas a esta conversión, pero dos que son relevantes para la investigación de Yair son la eliminación de los puntos finales de cualquiera de los elementos del camino y la eliminación del espacio vacío que sigue al último elemento.