Введение

Уязвимость в системе компьютерной безопасности, позволяющая получить несанкционированный доступ к файловой системе. Атака обхода каталогов (или обхода пути) использует недостаточное обеспечение безопасности или очистку имен файлов, предоставленных пользователем, в результате чего символы, обозначающие "переход в родительский каталог", передаются в API файловой системы операционной системы. Уязвимое приложение может быть использовано для получения несанкционированного доступа к файловой системе.

Уязвимость Zip Slip

Другой пример — уязвимость Zip Slip, которая поражает ряд форматов файлов архивов, например, ZIP.

Вариации

Обход каталогов в своей простейшей форме использует шаблон "/". Ниже приведены некоторые распространенные варианты:

Microsoft Windows

В Microsoft Windows и DOS для обхода каталогов используются шаблоны \ или /. Каждый раздел имеет отдельный корневой каталог (обозначаемый как C:\, где C может быть любой буквой раздела), и общего корневого каталога выше не существует. Это означает, что для большинства уязвимостей, связанных с обходом каталогов в Windows, атаки ограничены одним разделом. Обход каталогов стал причиной многочисленных уязвимостей в продуктах Microsoft.

Кодирование процентов в URI

Некоторые веб-приложения пытаются предотвратить обход каталогов, просматривая путь URI запроса на наличие шаблонов, таких как /. Эта проверка иногда ошибочно выполняется до процентного декодирования, из-за чего URI, содержащие шаблоны вроде %2e%2e/, принимаются, хотя при фактическом использовании они декодируются в /.

Двойная кодировка

Процентное декодирование может случайно выполняться несколько раз: один раз перед проверкой, а затем повторно, что делает приложение уязвимым для атак двойного URL-кодирования, при которых недопустимые символы заменяются их двойным URL-кодированным представлением для обхода мер безопасности. Например, при атаке двойного URL-кодирования символ "/" может быть заменен на %252F. Эта уязвимость, в частности, затрагивала версии 5.0 и более ранние веб-сервера IIS от Microsoft.

UTF-8

Плохо реализованный декодер UTF-8 может принимать символы, закодированные с использованием большего числа байт, чем требуется, что приводит к альтернативным представлениям символов, например, %2e и %c0%ae, оба представляющие символ ".". Это прямо запрещено стандартом UTF-8, но тем не менее привело к уязвимостям обхода каталогов в программном обеспечении, таком как веб-сервер IIS.