Шістнадцятирічний школяр під ніком Faav виявив уразливість у внутрішній аналітичній платформі Microsoft Titan, яка відкривала шлях до масиву даних обсягом понад 17 трильйонів рядків. За знахідку компанія виплатила досліднику 5000 доларів у межах програми баг-баунті. Про це підліток розповів у власному блозі.
За його словами, пошуком уразливостей у чужих сервісах він займається вже понад рік. Цього року у вільний від школи час Faav перевіряв не лише Microsoft, а й Amazon, Google та Adobe. У роботі йому допомагає Antares — ШІ-бот власної розробки, який автоматизує рутинну частину пошуку.
25 серпня Antares натрапив на внутрішню аналітичну платформу Microsoft під назвою Titan. Її вебінтерфейс був закритий сторінкою з вимогою VPN, тож потрапити до нього ззовні було неможливо. Проте бот продовжив пошук і виявив піддомен на хості Azure Cloud. Там лежав відкритий файл Swagger із чотирма маршрутами API. Три з них вимагали авторизації через Azure AD, а четвертий, /v2/Query, приймав сирі SQL-запити. Саме на ньому й зосередився дослідник.
Бракувало лише назви таблиці. Її допоміг з’ясувати архів Wayback Machine: у знімку 2023 року збереглася конфігурація Apache Superset із 56 визначеннями таблиць. Сервер відповідав відмовою, бо не було токена JWT. Antares десять днів підбирав підхід до перевірок, розбираючи повідомлення про помилки одне за одним. Зрештою виявилося, що при зміні вмісту токена підпис залишався тим самим, а сервер усе одно приймав нові дані. Це означало, що підпис не перевіряється взагалі.
Далі Faav сформував токен без підпису із заголовком alg: none. Сервер його прийняв, але щоразу відповідав, що користувача не знайдено. ШІ перебирав імейл-подібні ідентифікатори й нічого не досяг. Прорив стався в ніч на 5 вересня після першої години. Дослідник замислився, що робить бекенд із полем upn, і замінив у токені електронну адресу на слово admin. У відповідь прийшла цифра 1. Система сприйняла admin як локальне ім’я користувача з ID 1 і роллю адміністратора, а запит виконала.
Команда SHOW DATABASES показала решту баз, зокрема метадані самої платформи. Там виявилося близько 25 тисяч записів про акаунти й електронні адреси, 17 990 записів про імейли співробітників і 15 001 запис про їхні організаційні одиниці, 355 конфігурацій баз даних, 24 569 дашбордів, 425 891 діаграма та 27 347 визначень датасетів. Була доступна й службова інформація про співробітників: посади, відділи, ієрархія підпорядкування. За словами автора, такі дані могли б допомогти в соціальній інженерії, хоча він цього не перевіряв. Окремо Faav знайшов джерело аналітики Bing. Він виконав лише два запити по одному рядку й нікого не ідентифікував.
З 56 маршрутів із конфігурації 30 виявилися робочими. Через 24 конфігурації вони вели до 17 підключених аналітичних баз із 9863 унікальними таблицями. Загальної цифри ніде не було, тож підліток доручив ШІ скласти показники з метаданих 17 баз ClickHouse і перевірив підсумок двома способами. Результат виявився таким: 17 333 335 124 315 рядків.
5 вересня Faav повідомив Microsoft про вразливість через MSRC. 6–8 вересня MSRC попросила зупинити тестування й підтвердити IP-адресу. 9 вересня ендпоінт закрили. 17 вересня дослідник отримав винагороду 5000 доларів. 22 вересня відбулася зустріч із Microsoft щодо узгодження розкриття, а 25 вересня вийшла публікація в блозі. Microsoft, за словами автора, подякувала йому за скоординоване розкриття.
Сам Faav робить два висновки. Перший стосується співпраці людини й штучного інтелекту: Antares виконав десять днів рутини, але не здогадався, що upn тут працює як локальний логін, а людська інтуїція зробила останній крок. Другий уже технічний: Titan перевіряв вміст токена — тенант, аудиторію, ID застосунку, користувача, — але не його підпис. Автор порівнює це з готелем, де на кожних дверях є замок, проте відчиняє його будь-яка картка. Він радить розробникам і кодовим агентам передусім перевіряти підписи.