Найти в Дзене

Подделка запросов на стороне сервера в рейтинге OWASP

На 10 месте редакции рейтинга OWASP, расположилась уязвимость вектора A10:2021 – Server-Side Request Forgery (SSRF) что в переводе означает - подделка запросов на стороне сервера. SSRF – уязвимость, которая дает злоумышленнику следующие «возможности»: В подверженной атаке системе, совершаемые сервером запросы переходят под контроль злоумышленнику. При получении пользовательской ссылки сервер не проверяет переданный в ней адрес и обращается к указанному ресурсу. SSRF возникает, когда злоумышленник берет под контроль, например, домен веб-приложения и «заставляет» его отправлять запросы от своего имени произвольным адресатам, контролируя содержимое самих запросов. Уязвимости SSRF часто возникают в системах, где веб-приложение использует сервисы сторонних производителей. Предотвратить SSRF можно, выполнив рекомендации по внедрению некоторых или всех следующих мер защиты. ПРИМЕР № 1. Сканирование портов внутренних серверов. Стандартная процедура для определения «слабостей» системы. Если се
Оглавление

На 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 — это уязвимость безопасности, которая хоть и не является критической, но может иметь разрушительные последствия. Предпринимая описанные выше шаги по смягчению таких последствий, можно обезопасить систему от этой уязвимости. Следует помнить, что безопасность — это постоянный процесс, и важно регулярно пересматривать и обновлять меры безопасности для обеспечения защиты от постоянно возникающих угроз.