
Угроза заключается в возможности получения нарушителем доступа к скрытым/защищаемым каталогам или файлам посредством различных воздействий на файловую систему (добавление дополнительных символов в указании пути к файлу; обращение к файлам, которые явно не указаны в окне приложения). Данная угроза обусловлена слабостями механизма разграничения доступа к объектам файловой системы. Реализация данной угрозы возможна при условиях:
наличие у нарушителя прав доступа к некоторым объектам файловой системы;
отсутствие проверки вводимых пользователем данных;
наличие у дискредитируемой программы слишком высоких привилегий доступа к файлам, обработка которых не предполагается с её помощью.
ID угрозы: УБИ.015
Источник угрозы:
- Внешний нарушитель с низким потенциалом
- Внутренний нарушитель с низким потенциалом
Последствия реализации угрозы:
- Нарушение конфиденциальности
Необходимые меры:
Угроза доступа к защищаемым файлам с использованием обходного пути (file system traversal, path traversal, directory traversal) – это тип уязвимости, при которой злоумышленник может получить доступ к файлам, находящимся за пределами предназначенной для него директории. Злоумышленник может использовать специальные символы (например, “..”, “%2E%2E”) в имени файла или пути к файлу, чтобы “перемещаться” по файловой системе и получить доступ к конфиденциальным файлам, таким как файлы конфигурации, системные файлы или другие ресурсы.
Для минимизации данной угрозы необходимо принять следующие меры:
1. Валидация и санитаризация входных данных:
- Строгая проверка входных данных: Тщательно проверять все входные данные, которые используются для формирования путей к файлам, на наличие специальных символов и метасимволов (например, “..”, “/”, “", “%2E%2E”, “%2F”, “%5C”).
- Использовать “белые списки” (allowlists): Вместо того, чтобы пытаться заблокировать все известные вредоносные шаблоны, лучше разрешать только те данные, которые соответствуют определенным критериям безопасности (например, разрешенные символы, длина, формат).
- Нормализация путей: Нормализовать пути к файлам перед их использованием, чтобы удалить все относительные ссылки (например, “..”) и убедиться, что путь является абсолютным и находится в пределах разрешенной директории.
- Декодирование URL: Выполнять декодирование URL перед проверкой путей к файлам, чтобы предотвратить обход проверки с использованием закодированных символов.
2. Ограничение доступа к файловой системе:
- Принцип наименьших привилегий (Least Privilege Principle): Предоставлять процессам и пользователям только те права доступа к файловой системе, которые им необходимы для выполнения их задач.
- Использовать chroot или контейнеры: Использовать chroot (в Unix-подобных системах) или контейнеры (например, Docker) для создания изолированной среды, в которой приложение имеет доступ только к определенному подмножеству файловой системы.
- Контроль доступа к файлам (ACL): Использовать системы контроля доступа (ACL) для ограничения доступа к файлам на основе ролей и разрешений.
- Использовать права доступа файловой системы: Убедитесь, что права доступа к файлам и каталогам правильно настроены, чтобы предотвратить несанкционированный доступ.
3. Безопасное кодирование:
- Избегать использования динамического формирования путей: Старайтесь избегать использования динамического формирования путей к файлам на основе входных данных.
- Использовать безопасные API для работы с файлами: Использовать безопасные API для работы с файлами, которые автоматически обрабатывают относительные пути и другие потенциально опасные конструкции.
- Тщательное тестирование: Проводить тщательное тестирование приложения на предмет уязвимостей, связанных с обходом каталогов.
4. Конфигурация веб-сервера:
- Запретить доступ к чувствительным файлам и директориям: Настроить веб-сервер (например, Apache, Nginx) для запрета доступа к чувствительным файлам и директориям, таким как файлы конфигурации, системные файлы и директории с исходным кодом.
- Использовать DirectoryIndex: Настроить DirectoryIndex для указания файла, который должен быть возвращен по умолчанию при запросе к каталогу. Это может помочь предотвратить отображение содержимого каталога, если файл DirectoryIndex не существует.
- Отключить Directory Listing: Отключить отображение содержимого каталогов (Directory Listing) на веб-сервере.
5. Мониторинг и аудит:
- Мониторинг доступа к файлам: Мониторить доступ к файлам и регистрировать все попытки доступа к защищаемым файлам.
- Системы обнаружения вторжений (IDS): Использовать IDS для обнаружения атак, связанных с обходом каталогов.
- Анализ журналов: Регулярно анализировать журналы веб-сервера и операционной системы для выявления подозрительной активности.
6. Регулярные обновления безопасности:
- Своевременное обновление программного обеспечения: Своевременно устанавливать обновления безопасности для операционных систем, веб-серверов и других компонентов системы.
7. Обучение и осведомленность:
- Обучение разработчиков: Обучать разработчиков принципам безопасного кодирования и мерам защиты от уязвимостей, связанных с обходом каталогов.
- Обучение персонала: Обучать персонал основам безопасности и правилам защиты системы от атак.
8. Дополнительные меры:
- Использовать межсетевые экраны веб-приложений (WAF): WAF могут блокировать атаки, связанные с обходом каталогов, путем анализа HTTP-трафика и фильтрации вредоносных запросов.
- Использовать инструменты для статического анализа кода: Использовать инструменты для статического анализа кода для автоматического выявления потенциальных уязвимостей, связанных с обходом каталогов.
- Использовать инструменты для динамического тестирования безопасности (DAST): Использовать инструменты DAST для автоматического тестирования приложения на наличие уязвимостей, связанных с обходом каталогов.
Пример:
Предположим, у вас есть веб-приложение, которое позволяет пользователям просматривать изображения. Приложение использует следующий код для формирования пути к изображению:
$imagePath = "/var/www/images/" . $_GET["filename"];
Злоумышленник может использовать уязвимость обхода каталогов, передав следующий параметр в URL:
?filename=../../../../etc/passwd
В результате приложение попытается открыть файл /etc/passwd
, который находится за пределами разрешенной директории /var/www/images/
.
Для защиты от этой уязвимости необходимо выполнить следующие действия:
- Проверить входной параметр
filename
на наличие специальных символов (например, “..”). - Нормализовать путь к файлу, чтобы удалить все относительные ссылки.
- Убедиться, что путь находится в пределах разрешенной директории
/var/www/images/
.
Внедрение этих мер позволит значительно снизить риск доступа к защищаемым файлам с использованием обходного пути и обеспечить надежную защиту вашей системы.
Нет комментариев
Оставить комментарий