coordinated-disclosure · data-exposure · elasticsearch · aviation · apis · pii · default-credentials · vietnam

220 millones de registros de viajeros: una base de datos de pasajeros vinculada a Vietnam quedó expuesta

Kinryū Labs encontró una base de datos con Información Anticipada sobre Pasajeros de todas las personas que volaron hacia o desde Vietnam durante nueve años: 210.318.069 registros de pasajeros y 10.465.631 registros de tripulación, cada uno con un nombre, una fecha de nacimiento y un número de pasaporte junto con el itinerario completo, hasta la etiqueta de equipaje. Respondía con sus credenciales predeterminadas sin modificar. El alcance iba desde tripulaciones de Aeroflot y Belavia hasta turistas bielorrusos en Cam Ranh. El acceso se cerró en junio de 2026 tras una divulgación coordinada.

Por Davis Zheng·

CWE
CWE-1392
Product
Elasticsearch 8.3.3 (APIS/PNR cluster)

TLP:CLEAR. Kinryū Labs descubrió esta exposición el 3 de junio de 2026 durante una investigación sobre bases de datos expuestas y la reportó ese mismo día; el acceso se cerró en cuestión de días. La enumeración fue de solo lectura: únicamente se registraron conteos agregados, el rango de fechas, el esquema de campos y un número reducido de capturas de pantalla. En cada captura de este informe se han tachado los campos que identifican a una persona: nombre, número de pasaporte y fecha de nacimiento. Ningún registro individual de pasajero o tripulante fue conservado, publicado ni compartido más allá de las autoridades notificadas durante la divulgación. Se omiten la dirección del host de origen, el puerto y la credencial. No se confirmó quién operaba el sistema.

Resumen

  • 210Mregistros de pasajeros
  • 10,4Mregistros de tripulación
  • 9 añosde vuelos, de 2017 a 2026
  • 1.008aerolíneas en los datos

El 3 de junio de 2026, durante un sondeo amplio de bases de datos abiertas en internet, encontramos un clúster de Elasticsearch llamado pax-info. Elasticsearch es un motor de base de datos para buscar en grandes volúmenes de registros. Este no estaba completamente abierto a todo internet: una solicitud enviada directamente era rechazada. Pero se podía alcanzar a través de un punto de observación en la nube y, una vez alcanzado, aceptaba las credenciales predeterminadas de Elasticsearch, un usuario y una contraseña de fábrica que el operador nunca había cambiado. Eso no es protección real. Detrás había 220.783.700 registros de viaje que iban del 7 de enero de 2017 al 30 de abril de 2026.

El sondeo que sacó esto a la luz suele encontrar cosas anodinas: datos de prueba que un desarrollador dejó atrás, el catálogo de productos de una tienda, una base de datos borrada con una nota de rescate donde antes estaban los registros. Este clúster no era anodino. Contenía un archivo de nueve años de datos de control fronterizo, y los registros más recientes tenían unas cinco semanas cuando los encontramos, así que el sistema seguía recibiendo escrituras. Estaba en producción.

Los datos son Información Anticipada sobre Pasajeros. Antes de un vuelo internacional, una aerolínea envía al país de destino un manifiesto de quién va a bordo, para que el servicio fronterizo pueda examinar de antemano a todos los que viajan. Los campos están estandarizados por la OACI, la agencia de las Naciones Unidas que fija las normas de la aviación civil. Dicho en términos llanos, estos son algunos de los datos más sensibles que un Estado posee sobre viajeros comunes: por cada persona, un nombre real y una fecha de nacimiento ligados a un número de pasaporte, y un registro de exactamente adónde fue y cuándo.

Valoraciones clave
  • Un archivo de nueve años, y seguía en producción. 210.318.069 registros de pasajeros y 10.465.631 registros de tripulación, los más recientes de unas cinco semanas atrás. Era el archivo operativo de un sistema en funcionamiento, no una copia obsoleta volcada y olvidada. Confianza alta, medido directamente.
  • Cada registro es una identidad más un historial de movimientos. Nombre completo, fecha de nacimiento, sexo y nacionalidad, ligados a un número de pasaporte, su fecha de vencimiento y el país emisor, y luego el vuelo: número, fecha, aeropuertos, asiento y etiqueta de equipaje. En conjunto, esos campos son la materia prima para la suplantación de identidad y la falsificación documental, además de un registro de dónde estuvo una persona identificada en un día determinado. Confianza alta.
  • El alcance era global y era granular. Entre las aerolíneas figuran Aeroflot y Belavia, las compañías de bandera rusa y bielorrusa; los pasajeros incluyen neerlandeses, chinos, bielorrusos, coreanos, japoneses y más; y el detalle llega hasta las referencias de etiquetas de equipaje individuales. Su alcance llegaba a pasajeros en conexión y en tránsito, no solo a quienes iniciaban o terminaban su viaje en Vietnam. Confianza alta.
  • No hubo intrusión ni exploit. El clúster aceptaba la credencial de fábrica de Elasticsearch, que nunca se había cambiado, y su propia interfaz web ofrecía una exportación a JSON con un clic. Una credencial predeterminada está documentada públicamente y es lo primero que prueba cualquier escáner. No intervino ninguna vulnerabilidad de software. Confianza alta.
  • Los datos están vinculados a Vietnam, pero el operador no está confirmado. Estaba alojado en infraestructura de la empresa estatal de telecomunicaciones vietnamita en Hanói, estructurado como un flujo de la OACI y dominado por las dos mayores aerolíneas vietnamitas. No pudimos determinar qué organización lo operaba, y las autoridades vietnamitas que notificamos no respondieron. Confianza moderada sobre la titularidad; el alojamiento y el esquema se observaron directamente, el operador no.
Vista general del clúster en Elasticvue que muestra el clúster pax-info, el nodo node-32, la versión 8.3.3 de Elasticsearch, 29 índices, unos 220,79 millones de documentos y 107 GB en disco.
La vista general del clúster, leída a través del punto de observación en la nube usando las credenciales predeterminadas sin cambiar. El clúster pax-info contenía 29 índices y unos 220,79 millones de documentos repartidos en 107 GB. Los dos índices de pasajeros y tripulación suman 220.783.700 de esos documentos; el resto son índices pequeños de referencia y de prueba.

Qué contiene cada registro

Cada registro liga un nombre completo, una fecha de nacimiento, el sexo y la nacionalidad a un número de pasaporte o documento de viaje, su fecha de vencimiento y su país emisor, y luego añade el viaje: número de vuelo, fecha, aeropuertos de origen, tránsito y destino, asiento y referencia de equipaje. Nombre, fecha de nacimiento y número de pasaporte juntos permiten suplantar a un viajero o falsificar un documento de viaje, y el itinerario muestra dónde estuvo un viajero identificado en un día determinado.

La forma de un registro individual, tal como la anotamos, con todos los valores de identidad omitidos:

flightDate: 2026-04-30  flightNumber: VN0402  fromAirportCode: HAN (Hanói)  toAirportCode: ICN (Seúl-Incheon)  guestNameOriginal: [OMITIDO]  birthday: [OMITIDO]  nationalityCode: [OMITIDO]  documentNumberOriginal: [OMITIDO]

Una tabla de registros de pasajeros con las columnas de nombre y número de pasaporte tachadas y marcadas como OMITIDO. Las columnas de aerolínea, nacionalidad, destino y fecha de vuelo siguen visibles, y muestran destinos como Seúl, Sídney y Qingdao.
Registros de pasajeros tal como aparecían en el clúster. Hemos tachado las dos columnas que identifican a una persona: nombre completo y número de pasaporte. El resto queda tal cual, mostrando nacionalidad y destino: Seúl, Sídney, Qingdao, Kunming, un abanico de rutas internacionales y de países emisores de pasaporte que va mucho más allá de Vietnam.

Quién estaba en la base de datos

La lectura evidente de un sistema vietnamita de pasajeros es que contiene viajeros vietnamitas. Contiene mucho más que eso. Las nacionalidades de los registros abarcan todo el mundo: neerlandesa, china, bielorrusa, coreana, japonesa, francesa, alemana, canadiense, malasia, y las aerolíneas suman 1.008. Cualquiera que haya volado una ruta que tocara un aeropuerto vietnamita, en casi cualquier compañía, a lo largo de nueve años, es candidato a estar aquí.

Dos de esas compañías destacan. Entre los registros de tripulación hay listas de Aeroflot, la aerolínea de bandera rusa, y Belavia, la bielorrusa, ambas sujetas a sanciones occidentales. Los nombres, fechas de nacimiento y números de pasaporte de sus tripulaciones estaban en el mismo almacén abierto que los de todos los demás. El lado de pasajeros contiene el tráfico civil correspondiente: ciudadanos bielorrusos con reservas a Cam Ranh, la ciudad costera junto a Nha Trang que desde hace tiempo es destino del turismo ruso y postsoviético. Se interprete como se interprete, estos figuraban entre los registros de viaje más trivialmente expuestos de todos.

Una tabla de registros de tripulación. Las columnas de nombre del tripulante, fecha de nacimiento, año de nacimiento y número de pasaporte están tachadas y marcadas como OMITIDO. La columna de aerolínea es visible e incluye una fila de Aeroflot Russian, junto a Korean Air, All Nippon Airways, Eastar Jet y Colorful Guizhou Airlines. Abajo se ve un botón DOWNLOAD AS JSON.
Registros de tripulación, con las columnas identificatorias tachadas. La columna de aerolínea, dejada visible, muestra el rango: Aeroflot Russian aparece entre Korean Air y Eastar Jet, con Colorful Guizhou Airlines debajo. El botón Download as JSON en la esquina inferior derecha es de la propia interfaz del clúster: no hacía falta ninguna herramienta especial para llevarse los datos.

El sistema también alcanzaba más allá de quienes iniciaban o terminaban su viaje en Vietnam. Cada registro lleva campos separados para el primer aeropuerto, el de tránsito y el de destino, y muchos nombran solo aeropuertos extranjeros: Hong Kong, Singapur Changi, Shanghái, Macao, Kuala Lumpur. Los pasajeros en conexión y en tránsito quedaron capturados junto con todos los demás, con su identidad completa asociada a un viaje que no tenía por qué haber empezado ni terminado en Vietnam.

Una tabla de registros de pasajeros con las columnas de número de pasaporte y nombre tachadas. Las columnas visibles muestran aeropuertos de destino como Da Nang, Cam Ranh, Hong Kong, Singapur Changi, Shanghái y Kuala Lumpur, y códigos de nacionalidad como NLD (Países Bajos), CHN (China) y BLR (Bielorrusia).
El mismo índice, desplazado hasta los campos de itinerario. Las nacionalidades incluyen neerlandesa (NLD), china (CHN) y bielorrusa (BLR); los aeropuertos mezclan destinos turísticos vietnamitas (Cam Ranh, Phu Quoc, Da Nang) con centros de conexión extranjeros (Hong Kong, Singapur Changi, Shanghái, Macao). Ambas filas bielorrusas de aquí tienen como destino Cam Ranh.

Hasta la etiqueta de equipaje

El detalle no se detiene en el quién y el dónde. Cada registro lleva además el rastro operativo del viaje, incluida la referencia de la etiqueta de equipaje facturada a nombre de ese pasajero. Es el número de la pegatina enrollada en el asa de la maleta, la que indica adónde va la maleta y la asocia a su dueño. Para un conjunto de datos de este tamaño, es una profundidad de granularidad inusual: no solo que una persona voló, sino cuál era su maleta.

Una tabla de registros de pasajeros con las columnas de fecha de nacimiento y número de pasaporte tachadas. Se ve una columna de equipaje con valores como 128454358 y CX480085. Las columnas de nacionalidad, aerolínea y destino están visibles, e incluyen un pasajero bielorruso con destino a Cam Ranh.
La columna de equipaje, con datos. La fecha de nacimiento y el número de pasaporte están tachados; las referencias de equipaje y el itinerario quedan tal como estaban. El registro bielorruso (BLR), en la cuarta fila, es un pasajero y su maleta con destino a Cam Ranh.

Cómo se podía llegar al clúster

El clúster no estaba abierto de par en par a todo internet. Una solicitud enviada directamente era rechazada. Lo que lo hacía alcanzable era un punto de observación en la nube: desde allí la base de datos respondía y aceptaba las credenciales predeterminadas de Elasticsearch, el usuario y la contraseña con los que viene el software, que el operador nunca había cambiado. Una credencial predeterminada no es una defensa. Está documentada públicamente y es lo primero que prueba cualquier escáner. No se explotó ninguna vulnerabilidad de software, ni hacía falta. Una vez dentro, la propia consola web del clúster ofrecía un botón Download as JSON: los datos ni siquiera requerían un script para ser extraídos.

La exposición no fue cuestión de días. El índice de pasajeros se creó el 15 de septiembre de 2022. El servicio público de escaneo de internet FOFA registró el host por primera vez en octubre de 2022 y, para mediados de 2023, ya lo clasificaba como base de datos. Es decir, el almacén llevaba alcanzable, con sus credenciales predeterminadas, bastante más de tres años antes de que lo encontráramos. No podemos afirmar si los datos de pasajeros fueron recuperables durante todo ese periodo, ni quién más llegó a ellos.

Lista de índices de Elasticvue que muestra crew-index con 10.465.631 documentos y guest-v3-index con 210.318.069 documentos, con fechas de creación: guest-v3-index creado el 15 de septiembre de 2022, crew-index creado el 23 de mayo de 2023, junto a pequeños índices de referencia de aerolíneas, aeropuertos y países.
La lista de índices. El índice de pasajeros (guest-v3-index) contenía 210.318.069 registros y el de tripulación (crew-index) 10.465.631, junto a pequeñas tablas de referencia. Las fechas de creación, septiembre de 2022 para el índice de pasajeros y mayo de 2023 para el de tripulación, muestran cuánto tiempo llevaba funcionando el sistema.

Cómo lo contamos sin leerlo

Contamos el clúster sin leer el registro de nadie. Elasticsearch responde preguntas del tipo “cuántos registros coinciden con esto” y “desglósalos por aerolínea” mediante sus interfaces de conteo y agregación, que devuelven totales y recuentos por categoría y nunca entregan una fila individual. Conservamos los conteos de documentos, el rango de fechas de los datos, la lista de nombres de campo del esquema y un número reducido de capturas de pantalla con todos los campos identificatorios tachados, tomadas únicamente para confirmar que los campos tenían datos. Ningún registro individual de pasajero o tripulante fue recuperado, almacenado ni entregado a nadie más allá de las autoridades que notificamos.

Un índice en Elasticsearch equivale más o menos a una tabla. Los dos que contenían personas tenían los siguientes tamaños.

  • 109.232.811registros marcados como masculino
  • 101.085.255registros marcados como femenino
  • 1.008aerolíneas nombradas en los datos
ÍndiceRegistrosTamaño
Pasajeros (guest-v3-index)210.318.06995,3 GB
Tripulación (crew-index)10.465.6314,3 GB

Veinte aerolíneas con más de un millón de registros

El conjunto expuesto alcanza a muchos más viajeros que los propios de Vietnam. Nombraba 1.008 aerolíneas, de las cuales 20 tenían cada una más de un millón de registros.

AerolíneaRegistros
VietJet Air45.820.123
Vietnam Airlines43.184.871
Aerolíneas coreanas (Korean Air, Asiana, Jeju Air, Jin Air, Tway)~24,7 millones
Aerolíneas singapurenses (Singapore Airlines, Scoot)~7,7 millones

Qatar Airways, Emirates, All Nippon Airways, Cathay Pacific y China Southern también acumulan millones de registros cada una. Que encabecen la lista dos aerolíneas vietnamitas no sorprende. Que luego siga con las compañías de bandera de Corea, el Golfo, Japón y China es lo relevante: estos nunca fueron datos que solo Vietnam pudiera perder. A partir de los registros no podemos decir qué acuerdo canalizó los manifiestos de pasajeros de aerolíneas extranjeras hacia un único almacén alojado en Vietnam y los mantuvo allí durante nueve años.

Dónde estaba alojado el clúster

Evaluamos la atribución solo a partir de lo que ya teníamos: la red de alojamiento, la arquitectura de índices, la mezcla de aerolíneas, la actualidad de los datos y el estado del control de acceso. El clúster estaba en espacio de red asignado a Viettel, la empresa estatal de telecomunicaciones de Vietnam, bajo el AS38731. Un ASN es el identificador del operador de red que está detrás de una dirección de internet, y este está registrado a nombre de un parque tecnológico de Hanói. El esquema es un flujo de Información Anticipada sobre Pasajeros de la OACI, y la mezcla de aerolíneas está encabezada por las dos vietnamitas, con 45.820.123 registros de VietJet Air y 43.184.871 de Vietnam Airlines. Ese alojamiento y esa mezcla de aerolíneas coinciden con un sistema que ingiere todos los movimientos internacionales a través de Vietnam.

Nuestra propia valoración en su momento:

En todos los ejes verificables con los datos ya disponibles, la evidencia es consistente con que se trata de un sistema vietnamita de información de pasajeros auténtico y en producción que quedó expuesto, y no de una copia alojada por un tercero en otro sitio.

Quienes revenden datos robados no suelen alojarlos en una red nacional rastreable dentro del país víctima, y sus copias están desactualizadas para cuando salen a la luz. El alojamiento nacional, el esquema hecho a medida y la actualidad de cinco semanas, en conjunto, apuntan a datos en producción y no a un volcado revendido.

Sobre la identidad del operador

No pudimos confirmar qué organización operaba el clúster, y evitamos sobredimensionar el vínculo. Notificamos al organismo nacional de respuesta a incidentes cibernéticos de Vietnam (VNCERT) junto con las demás autoridades; no respondió. El alojamiento y el esquema son lo que ata el sistema a Vietnam. La identidad del operador no es algo que podamos establecer desde fuera, y la dejamos abierta.

Divulgación

  • 3 de junio de 2026Encontramos el clúster expuesto durante una investigación sobre bases de datos abiertas y empezamos ese mismo día a notificar a las partes afectadas y responsables: CERT nacionales, autoridades de protección de datos, organismos de aviación y las aerolíneas cuyos pasajeros figuraban en el conjunto.
  • En cuestión de díasEl host quedó fuera de línea y dejó de ser alcanzable. Esa exposición concreta se cerró.

Lo reportamos el mismo día que lo encontramos, y no publicamos hasta que el acceso estuvo cerrado. La enumeración fue de solo lectura, y no se ha conservado ni compartido el registro de ninguna persona más allá de las autoridades notificadas.

Lo que aún no podemos afirmar

El agujero concreto está cerrado, pero las preguntas de fondo no nos corresponde responderlas:

  • Cuánto tiempo estuvo abierto. El índice de pasajeros data de septiembre de 2022, y los escáneres públicos registraron el host desde octubre de 2022. No podemos determinar si los datos fueron recuperables durante todo ese periodo, ni si alguien más accedió a ellos o los copió.
  • Quién era el responsable. El operador sigue sin identificar, y las autoridades vietnamitas que notificamos no respondieron.
  • Si se informará a los viajeros. Queda sin respuesta si las aerolíneas y las autoridades nacionales de protección de datos notificarán a los viajeros concretos cuyos registros quedaron expuestos.
  • Cómo se acumularon los datos. Por qué los manifiestos de tantas aerolíneas extranjeras se consolidaron en un único almacén alojado en Vietnam, y se mantuvieron allí durante nueve años, no es algo que los registros expliquen.

Si usted opera una base de datos en internet

El error aquí es común y barato de evitar. Para los equipos que operan Elasticsearch o cualquier almacén similar:

  • Cambie las credenciales predeterminadas y mantenga el puerto de datos fuera de internet. La credencial con la que viene el software es de dominio público; dejarla puesta equivale a no tener contraseña. Active autenticación real y ponga la base de datos detrás de un límite de red.
  • Asuma que todo lo alcanzable será encontrado. El escaneo de todo internet es continuo y automatizado. Este host fue catalogado por un escáner público años antes de que lo encontráramos.
  • Sepa dónde viven sus datos más sensibles y quién puede llegar a ellos. El daño aquí surge de un único almacén que contiene datos de identidad y de movimientos de cientos de millones de personas, alcanzable desde un punto de observación con unas credenciales predeterminadas sin cambiar. Haga primero el inventario de esos almacenes.
How to cite
Kinryū Labs (2026). 220 millones de registros de viajeros: una base de datos de pasajeros vinculada a Vietnam quedó expuesta. https://kinryu.sh/es/reports/vietnam-apis-exposure/