
Si tienes prisa: un investigador de 16 años que firma como Faav encontró que Titan, un servicio interno de análisis de datos de Microsoft, aceptaba credenciales sin verificar la firma. Con un token falsificado se hizo pasar por administrador y pudo ejecutar consultas SQL contra 17 bases de datos. Microsoft le otorgó 5.000 dólares. Casi todos los titulares dijeron que "hackeó Microsoft" y que "expuso 17 billones de registros". Ni una cosa ni la otra: no robó datos, no era un producto de clientes, y la cifra es un conteo de metadatos. Lo que de verdad importa para quien administra sistemas está en el fallo, que es un error de autenticación que Microsoft prohíbe en su propia documentación.
El titular viral y el título real
A finales de septiembre circuló la historia de "un chico de 16 años que hackeó Microsoft y cobró 5.000 dólares". El propio investigador tituló su relato de otra forma: "How I Could've Accessed 17 Trillion Microsoft Records", es decir, "cómo habría podido acceder". Ese condicional es toda la diferencia, y es lo primero que los titulares borraron.
El investigador firma como Faav. En su artículo lo dice sin rodeos: "The impact I describe is hypothetical. It's what an attacker could have done with this access, but luckily I found the bug instead, reported it, and never touched any customer data or PII". Reportó el fallo el mismo día que lo confirmó, Microsoft lo cerró en cuatro días y le otorgó la recompensa. Es un caso de divulgación responsable que se contó como si fuera una intrusión.
Este artículo reconstruye lo que pasó con la fuente primaria delante, separa los hechos de lo que añadieron los titulares, y lo convierte en una lista de revisiones para quien administra tenants de Microsoft 365 o Azure. Como Faav es menor de edad, uso solo su alias.
Quién es Faav
Faav se describe como "Hacker & Developer" y dice tener 16 años: "A little over a year ago, when I was 15, I published [mi primer writeup sobre Microsoft]. I'm 16 now, and this one is a little bigger". La edad es suya, nadie la ha verificado de forma independiente, y su nombre real y su país no aparecen en ninguna parte.
No es su primer hallazgo. Su blog tiene una serie de reportes sobre Microsoft que empezó en julio de 2025, y dice que este año ha estado "hacking Microsoft off and on around school", además de encontrar fallos en otras empresas grandes. Construyó una herramienta de inteligencia artificial, que llama Antares, para automatizar parte de la búsqueda. Volveremos sobre el reparto de mérito entre la herramienta y la persona, porque es una de las partes interesantes.
Que un adolescente cobre recompensas no es raro. El caso más conocido en la región es el del argentino Santiago López, que cobró su primera recompensa, 50 dólares, en 2016, y en 2019, con 19 años, fue el primero en superar el millón de dólares en HackerOne. Lo que convirtió este caso en noticia no fue la edad, fue la escala del acceso.
El fallo, paso a paso
Titan es una plataforma interna de análisis de datos de Microsoft. Su interfaz web estaba restringida a empleados: quien entraba desde fuera veía una página de "VPN REQUIRED". Pero la interfaz no era el problema.
La API vivía en otro sitio. Antares, enumerando subdominios, encontró que la API de Titan no estaba enlazada en la interfaz y corría en un host separado, alojado en Azure Cloud Services y alcanzable desde internet. Su documentación Swagger era pública y listaba cuatro rutas. Tres pedían autenticación con token de Azure AD. La cuarta, /v2/Query, no la pedía en la documentación, y era justo la que aceptaba SQL crudo.
Los nombres de las tablas salieron de un archivo viejo. Para consultar algo hacían falta nombres de tabla, y Swagger no daba ejemplos. Faav recuperó capturas de 2023 de las páginas de Titan en la Wayback Machine, y de una configuración archivada de Apache Superset sacó 56 definiciones de tabla.
El token no verificaba la firma. Un JWT, el token que se usa para iniciar sesión, tiene tres partes: cabecera, contenido y firma. La firma es lo que demuestra que el token es auténtico y que nadie cambió su contenido. Durante unos diez días, Antares fue cambiando el contenido del token y leyendo los errores: Titan revisaba el tenant, luego la audiencia, luego una lista de aplicaciones permitidas, luego el usuario, pero nunca la firma. Faav lo describe con una comparación suya: "like a bouncer checking the name on every ID but never looking at the photo", como un portero que lee el nombre de cada identificación pero nunca mira la foto.
El paso decisivo fue humano. Antares construyó un token sin firma (con la cabecera {"alg":"none"} y la firma vacía) que pasaba las cuatro comprobaciones, pero se quedaba atascado en la búsqueda de usuario, porque el campo upn normalmente es una dirección de correo y la herramienta probaba direcciones. Faav contó lo que hizo de madrugada: dejó de probar correos y pensó qué hacía el servidor con ese campo. Cambió el upn a la cadena admin. Titan lo resolvió como "local user ID 1, which held the Admin role", el usuario local número 1, con rol de administrador. A partir de ahí pudo ejecutar SQL como administrador. En sus palabras: "The funny part is that admin is obvious, but obviously not a valid UPN. That's exactly why Antares never guessed it".
Aquí conviene ser preciso, porque es justo lo que los titulares deformaron. No escribió "admin" en una pantalla de inicio de sesión. Falsificó un token sin firma y puso admin en un campo interno, después de diez días de mapear cómo validaba Titan. Son dos errores encadenados: aceptar un token sin firma, y usar para autorizar un campo que el atacante controla.

Qué significan los "17 billones"
La cifra que dio la vuelta al mundo, 17,3 billones, es el número de filas que Faav estimó sumando metadatos de las 17 bases de datos. Él mismo la matiza: es "a storage estimate from metadata that likely includes historical, duplicated, and derived data", una estimación de almacenamiento que probablemente incluye datos históricos, duplicados y derivados. No son 17 billones de personas ni de registros únicos, y no los descargó.
Lo que de verdad tuvo al alcance, según su inventario, era:
| Lo que publicaron los titulares | Lo que dice el relato original |
|---|---|
| "17 billones de registros expuestos" | 17,3 billones de filas sumadas desde metadatos, con duplicados e historial |
| "25.000 registros de empleados" | unos 25.000 registros de cuentas y correos de la aplicación; en la ficha que muestra, la contraseña era un hash de relleno de Superset, no una credencial real de Microsoft |
| "hackeó Microsoft", "se cuela", "brecha" | acceso de administrador a un servicio interno, obtenido en una prueba y reportado el mismo día, sin robo de datos |
| "escribió admin y abrió la puerta" | falsificó un token sin firma con upn igual a admin, tras diez días de pruebas |
| "un fallo crítico" | Microsoft no ha publicado qué severidad le asignó |
Los registros de empleados eran otra cosa: 17.990 de correo y 15.001 de organización, con cargos, departamentos y jerarquía, de un subconjunto de empleados. También había una fuente de análisis de Bing, de la que tomó solo dos muestras de una fila cada una. Su línea más repetida es "I never touched any customer data or PII", y es coherente con cómo midió el alcance: en vez de descargar datos, contó filas con tablas de metadatos.
Hay que ser justo en los dos sentidos. Decir que solo vio "metadatos" también se queda corto: tenía acceso SQL real como administrador y vio al menos una tabla de cuentas con nombres, correos e historial de inicio de sesión. Pero no hay evidencia de extracción masiva, y el propio Faav avisa de algo importante: Microsoft tuvo control editorial sobre el texto, "cutting sections and figures and reshaping how the impact is described". Las cifras que leemos son la versión que Microsoft aprobó.
La cronología: doce días del reporte a la recompensa
| Fecha (2026) | Qué pasó |
|---|---|
| 25 de agosto | Antares identifica la API de Titan y recupera la configuración archivada |
| 25 de agosto al 5 de septiembre | Unos diez días de pruebas sobre la validación del token |
| 5 de septiembre, de madrugada | Funciona el truco de admin; Faav reporta a Microsoft ese mismo día |
| 6 al 8 de septiembre | Microsoft le pide que deje de probar y que confirme su IP |
| 9 de septiembre | Microsoft cierra la API |
| 17 de septiembre | Le otorgan 5.000 dólares |
| 25 de septiembre | Publica el artículo, tras revisarlo con Microsoft |
| 28 de septiembre | La historia se vuelve viral en Hacker News |
Un detalle de vocabulario que importa: "otorgado" no es lo mismo que "cobrado". Las reglas del programa exigen enviar un formulario fiscal de Estados Unidos antes de recibir el pago, así que el 17 de septiembre es la fecha de la adjudicación. El número de caso que menciona (144051) lo da solo él, y no hay ningún CVE ni aviso público de Microsoft sobre Titan.
Microsoft habló una sola vez
La única posición pública de Microsoft es una declaración que la empresa le dio a Faav para su propio blog: "We appreciate the opportunity to investigate the findings reported by Faav. Their submission and coordinated vulnerability disclosure helped us to better protect our customers by hardening our services…". The Register confirma que esa declaración se la dieron "for his blog", no en respuesta a una consulta de prensa.
Esa declaración confirma que el caso existe y que se tramitó dentro del programa. No confirma ninguna cifra: ni los 17,3 billones, ni los 25.000 registros, ni los 5.000 dólares. Tampoco dice qué severidad asignó, ni si hubo accesos de terceros antes del cierre. Según la propia cronología, Microsoft pidió la IP de Faav para separar su actividad de cualquier otra en los registros, pero el resultado de esa revisión no es público. Ningún medio que revisé parece haberle hecho a Microsoft las preguntas obvias: por qué 5.000 dólares, qué severidad, por qué exigió control editorial.
5.000 dólares: ¿mucho o poco?
Esta es la parte donde la comunidad técnica no estuvo de acuerdo con los titulares. Microsoft publica tablas de recompensas por programa. La de Azure, por ejemplo, cruza el tipo de fallo, la severidad y la calidad del reporte. Estas son algunas filas, en dólares:
| Fallo en Azure | Crítico | Importante |
|---|---|---|
| Elevación de privilegios (reporte de alta calidad) | 40.000 | 10.000 |
| Divulgación de información (alta calidad) | 12.000 | 7.500 |
| Suplantación (alta calidad) | 8.000 | 4.000 |
Para dar escala: el programa de Identity llega hasta 100.000 dólares y el de Azure hasta 60.000. En Azure, una elevación de privilegios crítica paga entre 20.000 y 40.000 dólares según la calidad del reporte.
Con esa vara, 5.000 dólares queda en la franja baja. En la tabla de Azure coincide con una divulgación de información de severidad importante con un reporte de calidad media. La lectura más razonable es que Microsoft lo calificó por debajo de crítico, o lo trató como un servicio interno sin impacto para clientes, o pagó un monto discrecional. Ninguna de esas hipótesis está confirmada, pero la falta de CVE encaja: desde junio de 2024 Microsoft emite CVE para fallos críticos de nube aunque el cliente no tenga que hacer nada, y no se ha publicado ninguno vinculado a Titan.
En Hacker News, donde el caso se discutió a fondo, la mayoría opinó que el pago era bajo. Un comentario lo resumió así: "$5k is a literal penny for Microsoft. Give the kid $100k". También hubo quien lo defendió: para una empresa, 5.000 dólares es "an absolute steal" comparado con contratar auditores, y los programas de recompensas no pagan lo que pagaría un atacante. Lo que nadie hizo fue presentarlo como un pago excepcional, como sugería algún titular.
Para contexto, entre julio de 2025 y junio de 2026 Microsoft pagó más de 20 millones de dólares a 562 investigadores de 64 países, por 2.531 reportes válidos. El mayor pago individual de ese periodo fue de 200.000 dólares.
Sobre los menores: las reglas del programa fijan la edad mínima en 14 años, con permiso de los padres o tutores, y Microsoft puede pagarle al tutor y pedirle que firme los formularios. Faav cumple el requisito. Si sus padres autorizaron o recibieron el pago, no lo dice nadie.
Para quien administra sistemas: seis revisiones
Titan es un servicio interno de Microsoft y se corrigió del lado del servidor. No hay nada que parchear del lado del cliente, no hay CVE, y nadie ha dicho que hubiera datos de tenants de clientes involucrados. Si un cliente pregunta, la respuesta honesta es que no tiene que hacer nada y que no se ha informado de datos de tenants expuestos.
Lo útil está en el patrón, porque este fallo es el último de una serie de problemas de confianza en tokens en la nube de Microsoft, como Storm-0558 en 2023 o los Actor tokens de 2025. Seis revisiones concretas:
- Valida bien los tokens en tus propias APIs. Si tienes un portal interno, una Azure Function o una integración que acepta tokens de Entra, tiene que verificar la firma, el emisor, la audiencia (
aud) y el tenant (tid), fijar el algoritmo en el servidor y rechazarnone. Para saber quién es el usuario, usaoidmástid, nuncaupnniemail. No es mi recomendación, es la de Microsoft: su guía para desarrolladores dice literalmente "don't use the upn claim for authorization". - Inventaria lo que está expuesto a internet, no solo la puerta principal. En Titan, la interfaz pedía VPN y la API no. "Requiere VPN" no es un control de autenticación. Busca APIs y páginas Swagger u OpenAPI publicadas sin querer.
- Elimina o renombra las cuentas
adminlocales por defecto en paneles autoalojados como Superset o Grafana. El administrador de Titan era, literalmente, el usuario local número 1. - Limita el consentimiento de los usuarios a aplicaciones. Por defecto, cualquier usuario puede dar permisos de bajo impacto a aplicaciones. Restringe eso a editores verificados o desactívalo, y activa el flujo de aprobación de administrador.
- Guarda los registros que hacen falta para investigar. En tenants con Entra ID P1 o P2, envía los registros de actividad de Microsoft Graph, de inicio de sesión y de auditoría a un SIEM, con más retención que la predeterminada. Cuando el fallo está del lado del proveedor, a veces el único rastro útil es el tuyo.
- Usa GDAP y PIM para que ninguna identidad, tampoco la del MSP, tenga Global Admin de forma permanente.
El caso también es un buen ejemplo de cómo se reporta un fallo. Faav reportó el mismo día, midió el alcance con tablas de metadatos en vez de descargar datos, dejó de probar cuando Microsoft se lo pidió y publicó después del cierre, con el texto revisado por la propia Microsoft. Las reglas del programa piden justo eso: mantener el reporte confidencial hasta que el fallo esté corregido y no publicar detalles que faciliten un ataque antes de tiempo. Y un recordatorio para quien trabaja en un MSP: un programa de recompensas autoriza a probar los servicios de esa empresa dentro de sus términos. No cubre probar el sistema de un cliente o de un tercero sin autorización escrita.
Lo que queda
El caso tiene menos de hackeo de película que de error básico de autenticación en un sistema grande. Una de las empresas que escribe la guía de validación de tokens de Entra la incumplió en sus dos reglas centrales, y la VPN delante de la interfaz no protegía una API publicada aparte. La lección para quien administra sistemas es directa: ni el perímetro, ni el tamaño del proveedor, ni el "es solo interno" sustituyen a verificar la firma y a construir la identidad sobre campos que el atacante no pueda cambiar.
Y hay una historia de fondo que quizá sea la más interesante: Microsoft revisó y recortó el relato público, fue la única fuente de su propia declaración, y no explicó por qué un acceso de administrador a 17 bases de datos vale 5.000 dólares. Ahora que la inteligencia artificial abarata encontrar fallos, la pregunta de cuánto vale un reporte, y quién decide cómo se cuenta, va a aparecer cada vez más.
Fuentes
- Faav: "How I Could've Accessed 17 Trillion Microsoft Records", 25 de septiembre de 2026.
- The Register: "16-year-old researcher found a Microsoft bug…", 30 de septiembre de 2026.
- Help Net Security: "16-year-old researcher breaks into Microsoft analytics service", 28 de septiembre de 2026.
- Microsoft, guía de validación de claims: learn.microsoft.com/entra/identity-platform/claims-validation.
- Microsoft Learn: consentimiento de usuarios a aplicaciones y registros de actividad de Microsoft Graph.
- MSRC: "Toward greater transparency: Unveiling Cloud Service CVEs", junio de 2024.
- Microsoft, programas y guías de recompensas: bounty-programs, bounty-microsoft-azure, bounty-guidelines.
- SecurityWeek, cifras anuales del programa: Microsoft Bug Bounty Program: $20 Million Paid.
- Discusión en Hacker News, 28 de septiembre de 2026.
- WeLiveSecurity: "Teen earns US$1 million in bug bounties", 4 de marzo de 2019.
Seguir leyendo en IT Rafa
- De una foto HEIC al código interno de OpenAI, otro caso donde el titular contó algo distinto de lo que pasó.
- Código generado por IA: el costo real en seguridad.