coordinated-disclosure · data-exposure · elasticsearch · aviation · apis · pii · default-credentials · vietnam
220 миллионов записей о пассажирах: связанная с Вьетнамом база данных о перелётах осталась открытой
Kinryū Labs обнаружила базу данных с предварительной информацией о пассажирах (API) по всем, кто вылетал из Вьетнама или прилетал в него на протяжении девяти лет: 210 318 069 записей о пассажирах и 10 465 631 запись о членах экипажей, в каждой из которых имя, дата рождения и номер паспорта увязаны с полным маршрутом вплоть до багажной бирки. Она отвечала на неизменённые учётные данные по умолчанию. Охват простирался от экипажей Aeroflot и Belavia до белорусских туристов в Камрани. Доступ был закрыт в июне 2026 года после скоординированного раскрытия.
Автор Davis Zheng·
TLP:CLEAR. Kinryū Labs обнаружила эту утечку 3 июня 2026 года в ходе исследования открытых баз данных и сообщила о ней в тот же день; доступ был закрыт в течение нескольких дней. Перечисление данных велось только на чтение: фиксировались лишь агрегированные счётчики, диапазон дат, схема полей и небольшое число снимков экрана. На каждом снимке экрана в этом отчёте поля, идентифицирующие человека, то есть имя, номер паспорта и дата рождения, закрашены. Ни одна отдельная запись о пассажире или члене экипажа не сохранялась, не публиковалась и не передавалась кому-либо, кроме органов, уведомлённых в ходе раскрытия. Адрес исходного хоста, порт и учётные данные не раскрываются. Оператор системы не установлен.
Кратко
- 210Mзаписей о пассажирах
- 10.4Mзаписей об экипажах
- 9 летперелётов, с 2017 по 2026
- 1,008авиакомпаний в данных
3 июня 2026 года в ходе широкого обследования баз данных, оставленных открытыми в интернете, мы обнаружили кластер Elasticsearch с именем pax-info. Elasticsearch — это движок базы данных для поиска по большим объёмам записей. Этот кластер не был полностью открыт всему интернету: запрос, отправленный к нему напрямую, отклонялся. Но до него можно было достучаться через облачную точку выхода, а достучавшись, обнаружить, что он принимает учётные данные Elasticsearch по умолчанию, то есть заводские имя пользователя и пароль, которые оператор так и не сменил. Это не защита. За ней находилось 220 783 700 записей о поездках за период с 7 января 2017 года по 30 апреля 2026 года.
Обследование, которое это выявило, обычно находит скучные вещи: тестовые данные, забытые разработчиком, товарный каталог магазина, вычищенную базу с запиской о выкупе там, где раньше были записи. Этот кластер скучным не был. В нём хранился девятилетний архив данных пограничного контроля, а самым свежим записям на момент обнаружения было около пяти недель, то есть запись в систему продолжалась. Она была действующей.
Речь идёт о предварительной информации о пассажирах (Advance Passenger Information). Перед международным рейсом авиакомпания направляет стране назначения манифест с перечнем находящихся на борту, чтобы пограничная служба могла заранее проверить всех. Состав полей стандартизирован ИКАО, агентством ООН, устанавливающим правила гражданской авиации. Проще говоря, это одни из самых чувствительных данных, которыми государство располагает об обычных путешественниках: по каждому человеку настоящее имя и дата рождения, привязанные к номеру паспорта, и запись о том, куда именно и когда он летал.
- Девятилетний архив, и он был действующим. 210 318 069 записей о пассажирах и 10 465 631 запись об экипажах, самым свежим около пяти недель. Это был рабочий архив действующей системы, а не устаревшая копия, которую выгрузили и забыли. Высокая уверенность, измерено напрямую.
- Каждая запись — это личность плюс история перемещений. Полное имя, дата рождения, пол и гражданство, привязанные к номеру паспорта, сроку его действия и стране выдачи, затем рейс: номер, дата, аэропорты, место и багажная бирка. Вместе эти поля представляют собой сырьё для выдачи себя за другое лицо и подделки документов, а также журнал того, где находился названный человек в конкретный день. Высокая уверенность.
- Охват был глобальным и детализированным. Среди перевозчиков присутствуют Aeroflot и Belavia, флагманские авиакомпании России и Беларуси; пассажиры включают граждан Нидерландов, Китая, Беларуси, Кореи, Японии и других стран; а детализация доходит до отдельных номеров багажных бирок. Охват распространялся на трансферных и транзитных пассажиров, а не только на тех, чья поездка начиналась или заканчивалась во Вьетнаме. Высокая уверенность.
- Взлома не было, эксплойта тоже. Кластер принимал заводские учётные данные Elasticsearch по умолчанию, которые никогда не менялись, а его собственный веб-интерфейс предлагал экспорт в JSON одним нажатием. Учётные данные по умолчанию задокументированы публично и это первое, что пробует любой сканер. Никакой уязвимости в ПО задействовано не было. Высокая уверенность.
- Данные связаны с Вьетнамом, но оператор не установлен. Кластер размещался на инфраструктуре вьетнамского государственного телекома в Ханое, был структурирован как поток данных ИКАО, и в нём преобладали два крупнейших вьетнамских перевозчика. Какая организация им управляла, установить не удалось, а уведомлённые нами вьетнамские органы не ответили. Средняя уверенность в отношении принадлежности; хостинг и схема данных наблюдались напрямую, оператор — нет.
pax-info содержал 29 индексов и около 220,79 млн документов общим объёмом 107 ГБ. На два индекса, пассажирский и экипажный, приходится 220 783 700 из этих документов; остальное — небольшие справочные и тестовые индексы.Что содержит каждая запись
Каждая запись увязывает полное имя, дату рождения, пол и гражданство с номером паспорта или проездного документа, датой окончания его действия и страной выдачи, а затем добавляет саму поездку: номер рейса, дату, аэропорты вылета, транзита и назначения, место и багажную бирку. Имя, дата рождения и номер паспорта вместе позволяют выдать себя за путешественника или подделать проездной документ, а маршрут показывает, где названный человек находился в конкретный день.
Структура одной записи в том виде, в каком мы её зафиксировали, со скрытыми идентифицирующими значениями:
flightDate: 2026-04-30 flightNumber: VN0402 fromAirportCode: HAN (Ханой) toAirportCode: ICN (Сеул-Инчхон) guestNameOriginal: [REDACTED] birthday: [REDACTED] nationalityCode: [REDACTED] documentNumberOriginal: [REDACTED]
Кто был в базе
Очевидное предположение о вьетнамской пассажирской системе состоит в том, что в ней содержатся вьетнамские путешественники. Содержится куда больше. Гражданства в записях охватывают весь мир: Нидерланды, Китай, Беларусь, Корея, Япония, Франция, Германия, Канада, Малайзия, а число авиакомпаний составляет 1 008. Любой, кто за девять лет летел маршрутом, затрагивающим вьетнамский аэропорт, практически любым перевозчиком, потенциально находится здесь.
Два перевозчика выделяются особо. Среди записей об экипажах есть составы Aeroflot, российского флагманского перевозчика, и Belavia, белорусского, причём оба работают под западными санкциями. Имена, даты рождения и номера паспортов их экипажей лежали в том же открытом хранилище, что и у всех остальных. Пассажирская часть содержит соответствующий гражданский трафик: граждане Беларуси, забронировавшие перелёты в Камрань, приморский город рядом с Нячангом, давно являющийся направлением для российского и постсоветского туризма. Как бы к этому ни относиться, это были одни из самых тривиально доступных данных о перелётах.
Система также охватывала не только тех, чья поездка начиналась или заканчивалась во Вьетнаме. Каждая запись содержит отдельные поля первого аэропорта, транзитного и аэропорта назначения, и во многих указаны только иностранные аэропорты: Гонконг, Сингапур Чанги, Шанхай, Макао, Куала-Лумпур. Трансферные и транзитные пассажиры попадали в систему наравне со всеми остальными, и их полные идентификационные данные привязывались к поездке, которая могла вообще не начинаться и не заканчиваться во Вьетнаме.
Вплоть до багажной бирки
Детализация не ограничивается тем, кто и куда. Каждая запись несёт также операционный след поездки, включая номер багажной бирки, зарегистрированной за этим пассажиром. Это номер на наклейке, обёрнутой вокруг ручки чемодана, той самой, которая указывает, куда следует сумка, и привязывает её к владельцу. Для набора данных такого размера это необычная глубина детализации: не просто то, что человек летел, но и то, какая сумка была его.
Каким образом кластер был доступен
Кластер не был полностью открыт всему интернету. Запрос, отправленный к нему напрямую, отклонялся. Доступным его делала облачная точка выхода: оттуда база отвечала и принимала учётные данные Elasticsearch по умолчанию, то есть имя пользователя и пароль, с которыми поставляется ПО и которые оператор так и не сменил. Учётные данные по умолчанию — не защита. Они задокументированы публично и это первое, что пробует любой сканер. Никакая уязвимость ПО не эксплуатировалась, и в этом не было нужды. Оказавшись внутри, можно было воспользоваться собственной веб-консолью кластера с кнопкой Download as JSON: чтобы забрать данные, не требовался даже скрипт.
Речь идёт не о днях экспозиции. Пассажирский индекс был создан 15 сентября 2022 года. Публичный сервис интернет-сканирования FOFA впервые зафиксировал этот хост в октябре 2022 года, а к середине 2023 года классифицировал его как базу данных. Таким образом, хранилище было доступно с учётными данными по умолчанию значительно более трёх лет до того, как мы его нашли. Были ли пассажирские данные извлекаемы на протяжении всего этого периода и кто ещё получал к ним доступ, мы сказать не можем.
guest-v3-index) содержал 210 318 069 записей, а индекс экипажей (crew-index) — 10 465 631, наряду с небольшими справочными таблицами. Даты создания, сентябрь 2022 года для пассажирского индекса и май 2023 года для индекса экипажей, показывают, как долго работала система.Как мы подсчитали данные, не читая их
Мы подсчитали содержимое кластера, не прочитав ничьей записи. Elasticsearch отвечает на вопросы вида «сколько записей соответствует этому условию» и «разбей их по авиакомпаниям» через интерфейсы подсчёта и агрегации, которые возвращают итоговые суммы и покатегорийные счётчики и никогда не выдают отдельную строку. Мы сохранили количество документов, диапазон дат данных, перечень имён полей в схеме и небольшое число снимков экрана со всеми закрашенными идентифицирующими полями, сделанных только для того, чтобы подтвердить заполненность полей. Ни одна отдельная запись о пассажире или члене экипажа не извлекалась, не сохранялась и не передавалась кому-либо, кроме уведомлённых нами органов.
Индекс в Elasticsearch — это примерно одна таблица. Два индекса, содержавшие данные о людях, имели следующие размеры.
- 109,232,811записей с отметкой «мужской»
- 101,085,255записей с отметкой «женский»
- 1,008авиакомпаний, названных в данных
| Индекс | Записей | Объём |
|---|---|---|
Пассажиры (guest-v3-index) | 210,318,069 | 95.3 GB |
Экипажи (crew-index) | 10,465,631 | 4.3 GB |
Двадцать перевозчиков с более чем миллионом записей
Открытый набор данных затрагивает намного больше путешественников, чем собственные пассажиры Вьетнама. В нём названо 1 008 перевозчиков, из которых у 20 более миллиона записей у каждого.
| Перевозчик | Записей |
|---|---|
| VietJet Air | 45,820,123 |
| Vietnam Airlines | 43,184,871 |
| Корейские перевозчики (Korean Air, Asiana, Jeju Air, Jin Air, Tway) | ~24,7 млн |
| Сингапурские перевозчики (Singapore Airlines, Scoot) | ~7,7 млн |
Qatar Airways, Emirates, All Nippon Airways, Cathay Pacific и China Southern также имеют по несколько миллионов записей каждая. То, что верхние строки списка занимают два вьетнамских перевозчика, неудивительно. Существенно то, что далее идут флагманские перевозчики Кореи, стран Персидского залива, Японии и Китая: эти данные никогда не были потерей одного лишь Вьетнама. Из записей мы не можем установить, какая схема направляла пассажирские манифесты иностранных перевозчиков в единое размещённое во Вьетнаме хранилище и удерживала их там девять лет.
Где размещался кластер
Мы оценивали атрибуцию только на основании того, что уже было в наличии: сети размещения, архитектуры индексов, состава перевозчиков, свежести данных и состояния контроля доступа. Кластер находился в сетевом пространстве, выделенном Viettel, вьетнамскому государственному телекому, в рамках AS38731. ASN — это идентификатор сетевого оператора, стоящего за интернет-адресом, и данный зарегистрирован на технопарк в Ханое. Схема данных представляет собой поток предварительной информации о пассажирах по стандарту ИКАО, а в составе перевозчиков лидируют две вьетнамские авиакомпании: 45 820 123 записи по VietJet Air и 43 184 871 по Vietnam Airlines. Такие размещение и состав перевозчиков соответствуют системе, принимающей все международные перемещения через Вьетнам.
Наша собственная оценка на тот момент:
По всем осям, проверяемым на основании уже имеющихся данных, свидетельства согласуются с тем, что это подлинная действующая вьетнамская система пассажирской информации, оставленная открытой, а не копия, размещённая третьей стороной где-то ещё.
Стороны, перепродающие украденные данные, обычно не размещают их в отслеживаемой национальной сети внутри страны-жертвы, и их копии устаревают к моменту появления. Национальное размещение, специализированная схема данных и пятинедельная свежесть вместе читаются как действующие данные, а не как перепроданная выгрузка.
Мы не смогли подтвердить, какая организация управляла кластером, и мы намеренно не преувеличиваем эту связь. Мы уведомили национальный орган реагирования на киберинциденты Вьетнама (VNCERT) наряду с другими органами; он не ответил. С Вьетнамом систему связывают размещение и схема данных. Личность оператора мы не можем установить извне и оставляем этот вопрос открытым.
Раскрытие
- 3 июня 2026Мы обнаружили открытый кластер в ходе исследования открытых баз данных и в тот же день начали уведомлять затронутые и ответственные стороны: национальные CERT, органы по защите данных, авиационные организации и авиакомпании, чьи пассажиры оказались в наборе данных.
- В течение нескольких днейХост ушёл в офлайн и стал недоступен. Конкретная утечка была закрыта.
Мы сообщили об этом в день обнаружения и не публиковали материал, пока доступ не был закрыт. Перечисление данных велось только на чтение, и ничья отдельная запись не сохранялась и не передавалась кому-либо, кроме уведомлённых органов.
Чего мы по-прежнему не можем сказать
Конкретная брешь закрыта, но более крупные вопросы отвечать не нам:
- Как долго это было открыто. Пассажирский индекс датируется сентябрём 2022 года, а публичные сканеры фиксировали хост с октября 2022 года. Были ли данные извлекаемы на протяжении всего этого периода и получал ли к ним доступ или копировал их кто-то ещё, мы установить не можем.
- Кто нёс ответственность. Оператор остаётся неустановленным, а уведомлённые нами вьетнамские органы не ответили.
- Будут ли уведомлены путешественники. Уведомят ли авиакомпании и национальные органы по защите данных отдельных путешественников, чьи записи оказались открыты, остаётся без ответа.
- Как данные оказались собраны воедино. Почему манифесты столь многих иностранных перевозчиков были сведены в одно размещённое во Вьетнаме хранилище и хранились там девять лет, записи не объясняют.
Если вы держите базу данных в интернете
Допущенная здесь ошибка распространена, и избежать её дёшево. Для команд, эксплуатирующих Elasticsearch или любое схожее хранилище:
- Смените учётные данные по умолчанию и уберите порт базы данных из публичного интернета. Учётные данные, с которыми поставляется ПО, общеизвестны; оставить их — то же самое, что не иметь пароля вовсе. Включите реальную аутентификацию и разместите базу за сетевым периметром.
- Исходите из того, что всё доступное будет найдено. Сканирование всего интернета ведётся непрерывно и автоматически. Этот хост был занесён в каталог публичного сканера за годы до того, как мы его нашли.
- Знайте, где находятся ваши самые чувствительные данные и кто может до них добраться. Ущерб здесь возникает из того, что одно хранилище содержало идентификационные данные и данные о перемещениях сотен миллионов людей и было доступно через точку выхода с неизменёнными учётными данными по умолчанию. Инвентаризацию начинайте с таких хранилищ.