Введение
Уязвимость в системе компьютерной безопасности, позволяющая получить несанкционированный доступ к файловой системе. Атака обхода каталогов (или обхода пути) использует недостаточное обеспечение безопасности или очистку имен файлов, предоставленных пользователем, в результате чего символы, обозначающие "переход в родительский каталог", передаются в API файловой системы операционной системы. Уязвимое приложение может быть использовано для получения несанкционированного доступа к файловой системе.
A directory traversal (or path traversal) attack exploits insufficient security validation or sanitization of user supplied file names, such that characters representing "traverse to parent directory" are passed through to the operating system's file system API. An affected application can be exploited to gain unauthorized access to the file system.
Уязвимость 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.