На 10 месте редакции рейтинга OWASP, расположилась уязвимость вектора A10:2021 – Server-Side Request Forgery (SSRF) что в переводе означает — подделка запросов на стороне сервера.
SSRF – уязвимость, которая дает злоумышленнику следующие «возможности»:
-
- заставить целевой сервер отправлять запросы к произвольным внешним или внутренним ресурсам;
- нарушить работу служб;
- выполнить произвольный код на целевом сервере.
В подверженной атаке системе, совершаемые сервером запросы переходят под контроль злоумышленнику. При получении пользовательской ссылки сервер не проверяет переданный в ней адрес и обращается к указанному ресурсу.
Признаки возникновения SSRF
SSRF возникает, когда злоумышленник берет под контроль, например, домен веб-приложения и «заставляет» его отправлять запросы от своего имени произвольным адресатам, контролируя содержимое самих запросов. Уязвимости SSRF часто возникают в системах, где веб-приложение использует сервисы сторонних производителей.
Как обезопасить систему от эксплуатации уязвимости SSRF
Предотвратить SSRF можно, выполнив рекомендации по внедрению некоторых или всех следующих мер защиты.
На сетевом уровне рекомендуется:
1. разделить ресурсы и удаленный доступ к ним на разные подсети.
2. на межсетевом экране:
-
- применить правило по умолчанию «запретить всё», в исключениях оставить трафик, который служит для функционирования системы;
- использовать для разрешающих правил межсетевого ограничения по времени «жизненного цикла» приложений, таким образом контролируя сетевой трафик;
- вести журналирование событий безопасности и сбоев мониторинга;
- регистрировать и анализировать пропущенные и заблокированные сетевые пакеты (А09:2021 Сбои регистрации и мониторинга безопасности);
- вести и периодически актуализировать список запрещенных серверов, и блокировать обращения к ним.
На прикладном уровне рекомендуется:
1. Проверять и контролировать данные, которые вводит пользователь на наличие вредоносных URL-адресов или подозрительных символов.
2. Использовать только определенные порты, пункты назначения и схемы URL (http, https, ftp и т.д.).
3. Не отправлять необработанные ответы на запросы пользователей к веб-приложению.
4. Отключить перенаправления на HTTP.
5. Следить за согласованностью URL-адресов, чтобы избежать таких атак, как повторная привязка DNS и TOCTOU (время проверки, время использования).
6. Не полагаться на запрещающий список запросов или регулярных выражений, так как у злоумышленников в распоряжении есть списки полезной нагрузки, инструменты и навыки обхода таких списков.
Дополнительные меры, для уменьшения рисков эксплуатации:
1. Не разворачивать дополнительные службы, связанные с безопасностью, на внешних ресурсах (к примеру OpenID). Управлять трафиком в системе лучше локально.
2. В независимых системах, для интерфейсов с созданными и управляемыми группами пользователей используйте сетевое шифрование трафика (например, VPN или TLS).
Примеры использования уязвимости SSRF
ПРИМЕР № 1. Сканирование портов внутренних серверов. Стандартная процедура для определения «слабостей» системы. Если сетевая архитектура несегментированная, злоумышленник может через уязвимый сервер произвести сканирование портов устройств в сети и составить карту внутренних сетей. По результатам подключения или по времени, затраченному на подключение/отклонение соединений с полезной нагрузкой SSRF он определяет открыты или закрыты порты на внутренних серверах.
ПРИМЕР № 2. Раскрытие конфиденциальных данных. Эксплуатируя уязвимость злоумышленник получает доступ к локальным файлам или внутренним службам на сервере приложений для получения конфиденциальной информации, такой как file:///etc/passwd и http://localhost:28017/.
ПРИМЕР № 3. Доступ к хранилищу метаданных облачных сервисов. Большинство облачных провайдеров использует хранилища метаданных (они включает в себя несколько категорий информации, таких как идентификатор, имя хоста, связанные группы безопасности и др.). Метаданные экземпляра доступны из любого приложения, запущенного на экземпляре EC2, по локальному адресу ссылки, например http://169.254.169.254/. Получив и прочитав метаданные, злоумышленник получает и доступ к конфиденциальной информации.
ПРИМЕР № 4. Компрометация внутренних служб. Злоумышленник может использовать внутренние службы системы для проведения дальнейших атак, таких как удаленное выполнение кода (RCE) или отказ в обслуживании (DoS).
Заключение
SSRF — это уязвимость безопасности, которая хоть и не является критической, но может иметь разрушительные последствия. Предпринимая описанные выше шаги по смягчению таких последствий, можно обезопасить систему от этой уязвимости. Следует помнить, что безопасность — это постоянный процесс, и важно регулярно пересматривать и обновлять меры безопасности для обеспечения защиты от постоянно возникающих угроз.