👾Атаки на веб-кэш: как стандартный функционал приводит к утечке персональных данных
Технология кэширования применяется повсеместно. Однако неверная конфигурация может привести к критическими уязвимостями: от утечки API-ключей и токенов доступа до раскрытия персональных данных.
Обман кэша (Cache Deception)
Если кэширующие механизмы веб-сервера настроены некорректно, злоумышленник может реализовать такой сценарий атаки:
🔹 Идентифицировать эндпоинты, возвращающие критическую информацию. Например:
/api/v1/api_token.
🔹 Сформировать ссылку с использованием расширения, которое кэшируется согласно конфигурации веб-сервера:
https://vulnerable-site.com/api/v1/api_token/file.css.
🔹 Как только жертва перейдёт по ссылке, веб-сервер вернёт стандартный контент для этого эндпоинта, но кэширующий сервер, идентифицировав запрашиваемый файл как
.css, создаст кэш-копию страницы с тем содержимым, которое было доставлено жертве.
🔹 После этого атакующий может снова запросить ту же ссылку. Кэширующий сервер вернёт сохранённую копию, в которой будет и секретный ключ жертвы.
Громкий случай подобной атаки затронул крупнейшего провайдера ИИ-решений — ChatGPT от OpenAI. В результате эксплуатации подобной уязвимости был возможен полный захват аккаунта жертвы.
Отравление кэша (Cache Poisoning)
Атаки на кэш не ограничиваются утечкой данных, они также применяются для доставки вредоносного кода — это называется
отравлением кэша. Суть в том, что при обработке запроса веб приложения могут отображать значения заголовков в содержимом страницы, среди таких:
User-Agent
Cookie
X-Forwarded-Host
X-Host
X-Forwarded-Server
X-Forwarded-Scheme
X-Original-URL (Symfony)
X-Rewrite-URL (Symfony)
Доставить полезную нагрузку в значении заголовка жертве напрямую невозможно, однако злоумышленник может воспользоваться особенностями кэширования, чтобы выполнить атаку. Для этого достаточно сформировать запрос вида:
GET /test?buster=123 HTTP/1.1
Host: vulnerable-host.com
X-Forwarded-Host:
test"><script>alert(1)</script>
В ответ сервер вернёт страницу с внедрённым кодом, сохранив её в кэше:
HTTP/1.1 200 OK
Cache-Control: public, no-cache
...
<meta property="og:image"
content="https://test"><script>alert(1)</script>">
После этого атакующему остаётся только отправить жертве ссылку на закэшированную страницу:
https://vulnerable-host.com/test?buster=123. При переходе кэширующий сервер отдаст сохранённую вредоносную копию, и внедрённый JavaScript-код сработает в браузере жертвы.
Предотвращение атак на кэш
Для защиты от подобных атак рекомендуется:
🔹 применять надёжные регулярные выражения для правил кэширования на стороне сервера;
🔹 использовать для динамических страниц заголовки Cache-Control
со значениями no-store и private;
🔹 убедиться, что CDN-сервер не перезаписывает критически важные правила кэширования, заданные на бэкенде.
Специалисты
METASCAN готовы провести аудит ваших веб-сервисов на предмет уязвимостей данного класса и предоставить рекомендации по их устранению.
#Metascan #pentest #redteam #Metascan_news
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram