Est-ce que je laisse une certaine vulnérabilité en désactivant la longueur maximale des chemins dans Windows ?


La longueur maximale des chemins pour le système d'exploitation Windows est de 32 767 caractères au total. C'est ainsi depuis Windows NT 3.1 en 1993 et cela n'a pas changé. J'ai écrit une bonne partie du code des systèmes de fichiers pour Windows NT et je me suis toujours assuré que ce que j'écrivais prenait en charge ces longs chemins.

MS-DOS avait une limite de 260 octets et cette valeur a été consacrée à un moment donné dans un fichier d'en-tête comme MAX_PATH pour une certaine version de Windows. Pour assurer la compatibilité, l'interface ASCII de l'API Win32 fait respecter cette limite. L'interface à caractères larges de l'API Win32 (par exemple, CreateFileW) vous permet d'utiliser la totalité de la limite de 32 767 caractères. Les détails de ce système sont documentés par Microsoft, qui en explique le fonctionnement. À partir de 1607, ils vous permettent de modifier le comportement par défaut de l'interface à caractères larges.


Si sa désactivation devait créer une vulnérabilité, c'est une vulnérabilité qui existe déjà et qui peut déjà être exploitée. L'appel natif de l'API (NtCreateFile) peut être utilisé (c'est ainsi que l'API Win32 implémente CreateFile) également et donc s'il y a une vulnérabilité alors elle est déjà accessible.

Le seul défi dont je suis conscient est que vous pouvez créer des chemins qui ne sont pas disponibles pour les applications qui ont codé en dur la limite de 260 caractères. Si j'essaie de causer des problèmes dans cette arène, j'aurai tendance à opter pour l'abus des aspects de préservation de la casse / insensibilité à la casse de Windows. Si vous avez installé WSL, vous pouvez lancer un shell bash et créer des fichiers qui ne varient qu'en majuscules :

monfichier

monfichier

Monfichier

Puis essayer de supprimer une seule instance spécifique avec Explorer. Vous avez une chance sur N pour N fichiers nommés de façon identique. Pour confirmer que c'est toujours comme ça que ça se comporte, je l'ai fait sur mon système Windows 10 1709, avec Ubuntu bash.

Ligne de fond : Je ne peux pas imaginer comment cela pourrait créer une nouvelle vulnérabilité. Tout au plus, il pourrait en découvrir une existante.

.