V12.6.1 SSRF Protection
Requirement:#
Verify that the web or application server is configured with an allow list of resources or systems to which the server can send requests or load data/files from.
Explanation:#
Атака Server-Side Request Forgery (SSRF) происходит, когда злоумышленник обманом заставляет сервер выполнять нежелательные запросы к внутренним ресурсам или внешним системам, к которым сервер не должен иметь доступа. Данное требование направлено на обеспечение того, чтобы веб-сервер или сервер приложений был настроен с разрешенным списком (также известным как "whitelist") ресурсов или систем, которым разрешено отправлять запросы или загружать данные/файлы из них.
1 Allow List (Whitelist):
- Allow List, также известный как "белый список", представляет собой предопределенный список доверенных ресурсов, доменов, IP-адресов или систем, с которыми серверу явно разрешено взаимодействовать или к которым он имеет доступ. Разрешены только запросы к этим доверенным ресурсам, а любые запросы к ресурсам, не включенным в список, отклоняются.
2 Protection Against SSRF:
- Атаки SSRF подразумевают манипулирование сервером с целью выполнения запросов к внутренним сервисам, чувствительным API или внешним системам, что может привести к несанкционированному раскрытию данных или уязвимостям в системе безопасности. Использование Allow List, позволяет ограничить взаимодействие сервера только с определенными, доверенными ресурсами, что минимизирует риск SSRF-атак.
3 Confined Scope:
- Allow list ограничивает область разрешенных взаимодействий, гарантируя, что сервер не может быть обманут при выполнении запросов к неавторизованным или потенциально вредоносным ресурсам. Это позволяет предотвратить утечку данных, злоупотребление услугами и несанкционированный доступ.
4 Prevention of Data Leakage:
- Применяя allow list, сервер предотвращает утечку конфиденциальных данных, обеспечивая взаимодействие только с теми ресурсами, которые предназначены для доступа. Это снижает риск случайного раскрытия конфиденциальной информации злоумышленникам.
5 Minimized Attack Surface:
- Использование allow list позволяет минимизировать вероятность атаки SSRF. Даже если злоумышленник обманом заставит сервер предпринять попытку SSRF, его взаимодействие будет ограничено доверенными ресурсами, включенными в allow list.
6 Explicit Authorization:
- Использование allow list требует явной авторизации для каждого ресурса, домена или IP-адреса, к которому серверу разрешен доступ. Такой подход является более безопасным, чем использование только проверки ввода или фильтров для блокирования определенных запросов.
Remediation:#
Чтобы выполнить требование выполните следующее:
1 Define an Allow List:
- Определите доверенные ресурсы, домены, IP-адреса или системы, с которыми должно взаимодействовать ваше приложение. Создайте полный и постоянно обновляемый allow list.
2 Configure Server Settings:
- Настройте параметры сервера таким образом, чтобы все исходящие запросы от приложения попадали в allow list. Блокируйте запросы к ресурсам, не включенным в список.
3 Use Absolute URLs:
- Убедитесь, что в allow list используются абсолютные URL-адреса для большей точности и контроля. Это не позволит злоумышленникам использовать относительные URL-адреса для обхода allow list.
4 Validate and Sanitize User Input:
- Обеспечьте строгую проверку и очистку вводимых данных, чтобы предотвратить внедрение злоумышленниками вредоносных URL-адресов или попытки манипулирования allow list ресурсов через пользовательский ввод.
5 Regularly Update the Allow List:
- Регулярно обновляйте allow list запросов в зависимости от изменений в требованиях к приложению и доверенным ресурсам.
6 Monitor for Unauthorized Requests:
- Внедрите механизмы мониторинга для обнаружения и регистрации всех попыток запросов, нарушающих allow list. Эти журналы помогут выявить потенциальные попытки атак SSRF и отреагировать на них.
Теперь ваше приложение готово к работе. Оно содержит endpoint /fetch_data, который получает данные с указанного URL после проверки наличия домена или IP-адреса URL в allow list. Если URL не входит в allow list, то конечная точка возвращает сообщение "Unauthorized URL" с кодом состояния 403.
Обратите внимание, что данный пример представляет собой пример защиты от SSRF с помощью allow list. В реальных условиях необходимо применять более надежную проверку вводимых данных, обрабатывать различные форматы URL и использовать дополнительные меры безопасности.