Включение sensitive-информации в параметры GET-запроса
Критичность: ВЫСОКИЙ | |
Способ обнаружения: DAST, NETWORKING |
Описание
Некоторые приложения используют метод GET для отправки конфиденциальной информации (пароли, идентификаторы сессий и прочие), которые передаются в строке запроса URL в виде параметров. Конфиденциальная информация в URL-адресах может регистрироваться в самых разных местах, включая:
- веб-сервер;
- любые прямые или обратные прокси-серверы между двумя конечными точками;
- заголовок Referrer;
- логи Web-сервера;
- история браузера;
- кэш браузера.
URL-адреса также могут отображаться на экране, добавляться в закладки или отправляться пользователями по электронной почте. Они могут быть переданы третьим лицам через заголовок Referer при переходе по сторонним ссылкам. Размещение конфиденциальной информации в URL увеличивает риск их взлома злоумышленником.
Уязвимости, которые приводят к раскрытию конфиденциальной информации пользователей, могут привести к компрометациям, которые чрезвычайно трудно исследовать. Даже если само приложение обрабатывает только нечувствительную информацию, раскрытие такой информации, как например, пароли, подвергает риску пользователей, которые повторно использовали его в другом месте.
Рекомендации
Все запросы, содержащие в себе чувствительную информацию, должны использовать метод POST и содержать конфиденциальную информацию в теле запроса, что может гарантировать, что она не попадет в логи Web-серверов и другие, доступные большому количеству людей, места. Если нет возможности перевести метод с GET на POST запросы, можно дополнительно приметь шифрование или хэширование конфиденциальной информации для предотвращения ее компрометации.