Cómo pirateé el sistema de seguimiento de errores de Google por $ 15,600 en recompensas

Errores fáciles para obtener dinero en efectivo

¿Alguna vez ha oído hablar de Google Issue Tracker? Probablemente no, a menos que sea un empleado de Google o un desarrollador que informó recientemente sobre errores en las herramientas de Google. Y yo tampoco, hasta que noté que mis informes de vulnerabilidad ahora se estaban manejando abriendo un nuevo hilo allí, además de las notificaciones habituales por correo electrónico.

Así que inmediatamente comencé a intentar romperlo.

Entonces, ¿qué es exactamente este sitio web? Según la documentación, Issue Tracker (internamente llamado Buganizer System) es una herramienta que se utiliza internamente en Google para rastrear errores y solicitudes de funciones durante el desarrollo del producto. Está disponible fuera de Google para que lo utilicen usuarios externos y públicos externos que necesiten colaborar con los equipos de Google en proyectos específicos.

En otras palabras, cuando alguien tiene un problema con un producto de Google, entra en el rastreador de problemas . Tiene sentido, ¿verdad? Nosotros, como usuarios externos, solo vemos la punta del iceberg: un pequeño conjunto de categorías preaprobadas y problemas en los que alguien en Google agregó explícitamente una cuenta externa, como informes de vulnerabilidad . Pero, ¿cuánta información hay debajo de la superficie?

Al observar las ID numéricas asignadas a los últimos hilos públicos, podemos estimar fácilmente cuánto uso recibe esta herramienta internamente. Se abren alrededor de 2000 a 3000 números por hora durante el horario laboral en Mountain View, y solo el 0,1% de ellos son públicos. Parece que una fuga de datos en este sistema tendría un impacto bastante grande. ¡Vamos a romperlo!

Intento n. ° 1: obtener una cuenta de empleado de Google

Una de las primeras cosas que noté al descubrir el rastreador de problemas fue la capacidad de participar en discusiones enviando correos electrónicos a una dirección especial, que se ve así:

buganizer-system + componentID + issueID @ google.com

(en el que el componentID es un número que representa una categoría y el issueID es un identificador único para el hilo al que está respondiendo)

Esto me recordó un hallazgo reciente llamado Ticket Trick, que permitió a los piratas informáticos infiltrarse en los sistemas de chat de las organizaciones aprovechando este tipo de sistema de correo electrónico. Teniendo en cuenta que esta es una dirección de correo electrónico de @ google.com , intenté registrarme en el equipo de Slack de Google usándola, y la página de confirmación a la que llegué parecía muy prometedora:

Por desgracia, nunca apareció ningún correo electrónico de Slack.

La siguiente mejor cosa que se me ocurrió fue obtener una cuenta de Google con una dirección de correo electrónico principal @ google.com , que con suerte me daría algunos privilegios adicionales en el Buganizer. Se suponía que no estaba permitido registrar una cuenta de este tipo desde fuera de Google:

Sin embargo, encontré un método para omitir este filtro: si me registré con cualquier otra dirección de correo electrónico falsa, pero no pude confirmar la cuenta haciendo clic en un enlace recibido por correo electrónico, se me permitió cambiar mi dirección de correo electrónico sin ninguna limitación. Con este método, cambié el correo electrónico de una nueva cuenta de Google a [email protected].

Poco después, recibí el correo electrónico de confirmación como un mensaje en la página del problema correspondiente:

¡Agradable! Hice clic en el enlace de confirmación, inicié sesión en el Rastreador de problemas y ...

Me redirigieron a la página de inicio de sesión corporativa. Y no, las credenciales de mi cuenta de Google no funcionaron allí. Gorrón.

Sin embargo, esta cuenta me dio muchos beneficios adicionales en otros lugares de Internet, incluida la capacidad de hacer autostop (¿gratis, tal vez?), Por lo que seguía siendo un problema de seguridad que abrió muchas puertas para usuarios malintencionados.

Aceptado: 11 horas | Recompensa: $ 3,133.7 | Prioridad: P1

Intento n. ° 2: recibir notificaciones sobre tickets internos

Otra característica de seguimiento de incidencias que me llamó la atención, mientras que familiarizarse con la interfaz de usuario es la capacidad de la estrella artículos. Destacar un problema significa que está interesado en el problema que se está discutiendo y desea recibir notificaciones por correo electrónico cada vez que alguien agregue un comentario.

Lo interesante que noté de esta funcionalidad fue la clara falta de errores al intentar usarla en problemas a los que no tenía acceso. Las reglas de control de acceso nunca parecían aplicarse en este punto final, por lo que inicié sesión en mi segunda cuenta e intenté destacar un informe de vulnerabilidad de mi cuenta principal reemplazando el ID del problema en la solicitud. Luego vi este mensaje, lo que significa que la acción había sido exitosa:

1 persona ha destacado este problema.

¿Podría ser tan fácil espiar las vulnerabilidades abiertas de Google? Publiqué rápidamente un comentario sobre el problema para ver si mi cuenta ficticia de atacante recibiría una notificación al respecto.

Pero, de nuevo, nunca apareció ningún correo electrónico.

Por alguna razón que realmente no recuerdo, decidí hacer más pruebas en este. Así que obtuve un ID de problema reciente y extrapolé un rango de algunos miles de ID que deberían coincidir con los últimos problemas de la base de datos. Luego los protagonicé todos.

En cuestión de minutos, mi bandeja de entrada se veía así:

Mi primer pensamiento al abrir la bandeja de entrada fue "¡Jackpot!".

Sin embargo, tras una inspección más cercana, no había nada particularmente interesante en esos hilos. Aparentemente, solo podía escuchar a escondidas conversaciones relacionadas con la traducción, donde la gente debatía sobre las mejores formas de transmitir el significado de una frase en diferentes idiomas.

Incluso consideré no informar de esto durante unas horas, con la esperanza de encontrar una manera de escalar la gravedad. Al final, me di cuenta de que el equipo de seguridad de Google probablemente estaría interesado en encontrar posibles métodos y variantes de pivote, así que envié los detalles.

Aceptado: 5 horas | Recompensa: $ 5,000 | Prioridad: P0

Intento # 3: Juego terminado

Cuando visita Issue Tracker como usuario externo, la mayor parte de su funcionalidad se elimina, dejándolo con privilegios extremadamente limitados. Si desea ver todas las cosas interesantes que pueden hacer los empleados de Google, puede buscar puntos finales de API en los archivos JavaScript. Algunas de estas funciones están deshabilitadas por completo, otras simplemente están ocultas en la interfaz.

Al diseñar esta versión limitada del sistema, alguien tuvo la amabilidad de dejar un método para que nos elimináramos de la lista de CC, en caso de que perdamos interés en un problema o no queramos recibir más correos electrónicos al respecto. Esto se puede lograr enviando una solicitud POST como esta:

POST /action/issues/bulk_edit HTTP/1.1
{ "issueIds":[ 67111111, 67111112 ], "actions":[ { "fieldName":"ccs", "value":"[email protected]", "actionType":"REMOVE" } ]}

Sin embargo, noté algunos descuidos aquí que llevaron a un gran problema:

  1. Control de acceso inadecuado: no hubo una verificación explícita de que el usuario actual realmente tuviera acceso a los problemas especificados en issueIdsantes de intentar realizar la acción dada.
  2. Fallo silencioso : si proporcionó una dirección de correo electrónico que no estaba actualmente en la lista de CC, el punto final devolvería un mensaje que indica que el correo electrónico se eliminó correctamente.
  3. Detalles completos del problema en respuesta: si no ocurrieron errores durante la acción, otra parte del sistema asumió que el usuario tenía los permisos adecuados. Por lo tanto, cada detalle sobre el ID de problema dado se devolverá en el cuerpo de respuesta HTTP.

Ahora pude ver detalles sobre cada problema en la base de datos reemplazando issueIdsen la solicitud anterior. ¡Bingo!

Solo intenté ver algunas identificaciones consecutivas, luego me ataqué desde una cuenta no relacionada para confirmar la gravedad de este problema.

Sí, pude ver detalles sobre los informes de vulnerabilidad, junto con todo lo demás alojado en el Buganizer.

Peor aún, podría filtrar datos sobre varios tickets en una sola solicitud, por lo que monitorear toda la actividad interna en tiempo real probablemente no habría activado ningún limitador de tasa.

Envié rápidamente los detalles de la vulnerabilidad a Google, y su equipo de seguridad desactivó el punto final afectado una hora después. ¡Impresionante tiempo de respuesta!

Aceptado: 1 hora | Recompensa: $ 7,500 | Prioridad: P0

Cuando comencé a buscar esta filtración de información, asumí que sería el Santo Grial de los errores de Google, porque revela información sobre todos los demás errores (por ejemplo, HackerOne paga un mínimo de $ 10,000 por algo similar).

Pero después de encontrarlo, rápidamente me di cuenta de que el impacto se minimizaría, porque de todos modos todas las vulnerabilidades peligrosas se neutralizan en una hora.

Estoy muy contento con el dinero extra y espero encontrar errores en otros productos de Google.