16-летний исследователь Faav выявил серьезную ошибку аутентификации во внутренней аналитической платформе Microsoft Titan. Уязвимость позволяла получить права администратора без действительных учетных данных, выполнять произвольные SQL-запросы и потенциально обращаться к базам с примерно 17,3 трлн строк данных.
Система Titan предназначена для использования сотрудниками Microsoft, однако Faav обнаружил публичный API на хосте Azure Cloud Services. Сервис проверял содержимое JSON Web Token (JWT) — tenant, audience, ID приложения и пользователя, — но не проверял подпись самого токена.
Это означало, что атакующий мог самостоятельно создать токен с нужными значениями, и система принимала бы его как настоящий. Фактически остальные проверки аутентификации теряли смысл — как если бы в гостинице на каждой двери стоял кардридер, но любым ключом можно открыть любой номер.
Исследование началось 25 августа. Около десяти дней Faav экспериментировал с аутентификацией, пока Titan отклоняла запросы. Поворотный момент наступил ранним утром 5 сентября, когда исследователь указал в неподписанном токене вместо email-адреса имя пользователя admin.
Система распознала admin как локальную учетную запись, сопоставила ее с пользователем ID 1 (администратором) и разрешила выполнять SQL-запросы.
Получив доступ, исследователь изучил метаданные платформы. Он обнаружил примерно 25 000 записей об аккаунтах и email-адресах, 17 990 адресов сотрудников, информацию об их подразделениях, должностях и управленческой иерархии. Каталог также содержал 355 конфигураций баз данных, более 20 000 SQL-описаний виртуальных датасетов, свыше 24 000 дашбордов и 425 000 графиков.
Исследователь нашел тестовый датасет Bing, где просмотрел две строки с информацией о поисках, идентификаторами и приблизительными данными о местоположении пользователей (точных координат не было).
Наиболее масштабные последствия выявились при проверке архивных маршрутизаций. Из 56 значений 30 продолжали работать и через 24 конфигурации вели к 17 аналитическим базам с 9863 уникальными именами таблиц. По оценке Faav на основе метаданных, их общий объем составлял примерно 17,3 трлн строк (17 333 335 124 315). Он уточняет, что в эту цифру вероятно входят старые, дублирующиеся и производные данные.
С 6 по 8 сентября Microsoft попросила исследователя прекратить тестирование и предоставить IP-адрес для проверки, что активность оставалась в рамках bug bounty программы. Доступ к проблемному эндпоинту вскоре закрыли. 17 сентября Faav получил от компании вознаграждение 5000 долларов США.
Перед публикацией отчета Microsoft попросила исследователя переписать часть материала, убрать отдельные разделы и цифры, а также скорректировать описание последствий уязвимости.
