Исследователь с помощью брутфорса взломал API авиакомпании Avelo и получил доступ к данным пассажиров

Исследователю безопасности Алексу Шапиро удалось с помощью брутфорса взломать API системы бронирования авиакомпании Avelo. В результате получилось узнать личные данные случайных пассажиров.

Обычно API бронирования оснащены двухфакторной защитой, которая предотвращает кражу данных. Чтобы получить доступ к информации, надо знать номер бронирования и фамилию пассажира. Такая комбинация из двух параметров даёт очень много возможных значений, поэтому подобрать её сложно.

В системе бронирования авиакомпании Avelo не было двухфакторной защиты. Всё что надо для получения данных — шестизначный номер бронирования, состоящий из заглавных букв английского алфавита и цифр. Возможных значений всего 366 = 2 176 782 336, и их уже не так сложно подобрать брутфорсом.

Если арендовать сервер с возможностью отправлять по 100 тыс. запросов в секунду, то все актуальные коды бронирования можно будет получить примерно за шесть часов. При этом аренда сервера с нужными параметрами будет стоить в пределах тысячи долларов.

Следующей ошибкой инженеров Avelo стало игнорирование файлов cookie. В алгоритме проверки можно было бы привязать токен аутентификации к номеру бронирования. Тогда сервер возвращал бы пользователю только его данные. Разработчики этого не сделали, поэтому для запросов подходили любые файлы cookie с токеном аутентификации.

Единственная система защиты в API системы бронирования Avelo — ограничение на количество запросов в секунду. Блокировки подозрительных IP-адресов или капчи в системе не было.

Исследователь написал скрипт на Python для генерации случайных шестизначных кодов бронирования и получил от сервера данные пассажиров, включая:

личные данные: имя (FullName), дату рождения (DateOfBirth), пол (Gender);

номер удостоверения личности (IDDocuments.IDNumber);

контактную информацию: номер телефона и электронную почту;

данные бронирования: номер рейса, посадочное место, дату и время вылета;

платёжные данные: номер карты с маской в формате ************8 (CardNumber), срок действия карты (DateTimeExpiration), адрес для выставления счетов (Address.PostalCode);

данные внутренних ваучеров: номер счёта (PaymentInternals.AccountNumber), сумму счёта (Amount.Value);

данные PCI DSS: PaymentCards.TrackData.

Среди сотен полученных бронирований оказались пассажиры, которые летают рейсами Avelo по правительственным делам. Их почты заканчивались на @dot.gov и @faa.gov.

Скриншоты JSON-файлов с данными

Исследователь обнаружил уязвимость 15 октября 2025 года и сразу сообщил в поддержку Avelo. Спустя сутки с инженером связались, и попросили подробнее рассказать об ошибке и воспроизвести её. Почти через месяц, 13 ноября, разработчики отчитались об исправлении.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии