Издание 404 Media сообщило о проблеме в Cloudflare, которая позволяет узнать, какой дата-центр компании используется для кеширования того или иного изображения. В итоге злоумышленник может узнать приблизительное местоположение пользователей Signal, Discord, X (Twitter) и других приложений.
Фактически злоумышленнику достаточно отправить цели любое изображение, и жертве даже не придется кликать на картинку, чтобы атака сработала. Издание отмечает, что таким способом можно узнать весьма приблизительные данные о местоположении: в тестах 404 Media атака показывала, в каком городе или штате находится человек, но не давала более точной информации. Однако атака все равно представляет угрозу для пользователей.
«Скорее всего, это ошибка в работе мобильного приложения, а не уязвимость в самом коде, но я все равно считаю, что ее нужно исправить», — рассказал изданию независимый ИБ-исследователь Дэниел (daniel), обнаруживший проблему.
Он подчеркивает, что в настоящее время разработчики Cloudflare уже исправили баг, который эксплуатировал его кастомный инструмент.
Проблема была связана с работой CDN (Content Delivery Network) Cloudflare, которая кэширует контент на множестве распределенных серверов, а затем доставляет его пользователям в зависимости от их местоположения. Так, если пользователь находится в Сан-Франциско, CDN Cloudflare использует ближайшую к нему часть своей CDN для ускорения доставки контента. Cloudflare утверждает, что ее дата-центры расположены более чем в 330 городах в 120 странах мира, и многие приложения используют CDN компании для доставки контента.
Как оказалось, благодаря этому посторонний человек мог узнать, какая часть CDN Cloudflare использовалась при передаче изображения, и на основании этого определить местоположение получателя.
«Cloudflare разделяет кэш по дата-центрам, и злоумышленники могут с легкостью соотнести кеш и триангулировать местоположение пользователей, — объясняет Дэниел. — Каждый из дата-центров Cloudflare имеет собственное локальное кеш-хранилище для более быстрое работы с контентом, поэтому можно проверить каждый дата-центр, чтобы увидеть, где был кеширован контент».
Чтобы осуществить такую атаку, Дэниел отправлял цели изображение через мессенджер или другое приложение. После этого он использовал Burp Suite, чтобы перехватить URL-адрес загруженного изображения. Затем он применял собственный кастомный инструмент, получивший название Cloudflare Teleport, для отправки запросов в каждый дата-центр Cloudflare (чтобы узнать, какой их них кешировал запрос).
Запросы Cloudflare Teleport возвращали результаты «HIT» («Попадание») или «MISS» («Промах»). В случае попадания исследователь узнавал, рядом с каким дата-центром находится его цель, что позволяло определить ее приблизительное местоположение человека.
Журналисты попросила Дэниела продемонстрировать атаку на практике, и смогли узнать местоположение нескольких пользователей Signal (с их согласия). Отмечается, что в некоторых случаях для атаки требовалась открыть чат, но в других случаях push-уведомление могли загрузить изображение, и жертве даже не нужно было запускать само приложение.
В своем отчете Дэниел отмечает, что также протестировал проблему в Discord и X, убедившись, что она работает и в этих случаях.
Исследователь рассказывает, что еще в прошлом году он уведомил о проблеме разработчиков Cloudflare, Signal и Discord. Представители Cloudflare заверили 404 Media, что компания уже устранила эту ошибку.
В Discord предоставил изданию заявление Кевина Ханафорда (Kevin Hanaford), главы отдела безопасности Discord:
«Нам известно об этом инциденте, и мы пришли к выводу, что это проблема поставщика услуг. Мы сразу же уведомили поставщика услуг о проблеме, и сейчас они работают над ее устранением».
Представители Signal и X не ответили на запрос журналистов, но Дэниел поделился с изданием ответом разработчиков Signal на его исходный баг репорт:
«То, что вы описываете (наблюдение за попаданиями и промахами кеша), характерно для работы CDN. Использование CDN в Signal не является ни уникальным, ни настораживающим, а также не влияет на сквозное шифрование. CDN используются всеми популярными приложениями и сайтами в интернете, и они необходимы для обеспечения высокой производительности и надежности при обслуживании глобальной аудитории.
Существует большое количество исследований, подробно рассматривающих эту тему, но если кому-то нужно полностью скрыть свое местоположение в сети (особенно на таком грубом уровне, как в показанном вами примере), абсолютно необходим VPN. Эта функциональность не входит в сферу применения Signal. Signal защищает конфиденциальность ваших сообщений и звонков, но он никогда не пытался воспроизвести набор функций для анонимности на сетевом уровне, которые могут обеспечить такие проекты, как Wireguard, Tor и другие VPN-решения с открытым исходным кодом», — сообщили в компании.
В настоящее время Cloudflare Teleport уже не работает, так как Cloudflare исправила ошибку, которую использовал Даниель. Однако, по словам исследователя, по-прежнему возможно осуществить подобную атаку, просто теперь «это стало немного сложнее». Так, вместо своего инструмента он использует VPN, чтобы направлять трафик в разные локации, а затем отправляет запросы в дата-центры Cloudflare.
«Это не так эффективно, как предыдущий метод, но все равно работает», — отмечает специалист.