Divulgación del número de teléfono y geolocalización a través de la vulnerabilidad en Telegram

imagen

Recientemente, Telegram ha estado discutiendo cada vez más el tema de romper a las personas y filtrar datos personales. Me preguntaba cuánto es resistente el ecosistema de Telegram a tales fugas.

Debajo del corte está la historia de cómo encontré un error en Telegram. El error le permite engañar al usuario y empujarlo a compartir sus datos sin saberlo: geolocalización y número de teléfono.

Así es como funciona:


La complejidad del sistema siempre ha sido un enemigo de la seguridad.

Telegram ha crecido, ha dejado de ser solo un mensajero y se ha convertido en una gran plataforma de medios con una funcionalidad rica. La API de Bot de Telegram se destaca como una casa separada, lo que le permite crear aplicaciones completas dentro del messenger, los llamados bots.

Lo más probable es que todos los que intentaron crear su propio bot ya sepan que se puede enviar al usuario una solicitud de su número de teléfono mediante un botón especial.

El texto en este botón se puede establecer en cualquiera. Además, el bot puede usar los mismos botones para otras interacciones:

imagen

después de hacer clic en el botón, se le mostrará al usuario una advertencia de que su contacto ahora se enviará al bot:

imagen

Este mensaje habla con bastante claridad sobre el riesgo de desanonimización y advierte al usuario reflexivo de acciones peligrosas para él.

Al revisar las actualizaciones de la API, recordé que en algún momento Telegram dio a los usuarios la oportunidad de hacer su propia localización del messenger. Hubo ejemplos en los que se utilizó la localización para alteraciones cómicas de la interfaz. En ese momento, se me ocurrió la misma idea que ahora:

¿Pero qué pasa si intentas "traducir cómicamente" un cuadro de diálogo que advierte al usuario acerca de transferir el número de teléfono al bot y reemplazar su texto?

imagen imagen

Al principio, pensé que conseguir que un usuario instale una localización de archivos xml extraños en la aplicación sería mucho más difícil que simplemente convencer de hacer clic en Compartir contacto. De hecho, así, usando un archivo xml, Telegram ofreció distribuir sus localizaciones entre los interlocutores.

Así que pensé, hasta que encontré el controlador de enlace setlanguage en el código fuente de una aplicación de Android .

imagen

¡Exactamente lo que se necesita!

Resultó que Telegram había creado hace mucho tiempo una plataforma de traducción, translation.telegram.org, accesible para todos los usuarios de Telegram, y ahora no hay necesidad de transferir ningún archivo xml.

imagen

Simplemente haga clic en el enlace t.me/setlanguage/%lang%, después de lo cual el usuario verá un cuadro de diálogo que le pedirá que instale un nuevo idioma. Y esta ventana es mucho menos intimidante que un mensaje sobre una solicitud de número de teléfono:

imagen

¿Cómo funciona?


Regístrese en translation.telegram.org .

Agregue su idioma, traduzca los elementos de interfaz necesarios y un par de otros más .

En localización, puede escribir lo que quiera. Escribiremos un texto inofensivo en lugar de una terrible advertencia sobre compartir la geolocalización y el número de teléfono. Hacemos lo mismo para las otras plataformas.

Nuestro lenguaje venenoso está listo. Queda por deslizarlo al usuario.

imagen

Todavía no pude encontrar una manera de averiguar si el usuario instaló la localización que se le ofreció. No hubo estadísticas de idioma en translation.telegram.org, ni cambios en el perfil del usuario. Bot api le permite conocer el idioma del usuario a través del parámetro language_code, pero su valor se toma de la configuración del sistema. Cambiar el idioma en la aplicación no afecta el parámetro.

Bueno, entonces solo agrega un pequeño retraso después del mensaje con un enlace al idioma. Después de elegir un idioma, le sugerimos al usuario que se familiarice con el menú bot. Cuando hace clic en Aceptar en este cuadro de diálogo, el número se filtra al bot con un mensaje, y el bot elimina este mensaje de inmediato. Si el bot usa webhook para recibir actualizaciones, el mensaje se elimina más rápido y el usuario puede no entender que acaba de enviar su contacto.

Por cierto, de manera similar a una solicitud de contacto, un bot puede pedirle a un usuario que comparta su geolocalización. Sí, y este cuadro de diálogo también se puede "traducir".

Como arreglar


Obviamente, no debe permitir que los usuarios traduzcan absolutamente toda la interfaz sin moderación. Por cierto, la moderación traducción está habilitada para, por ejemplo, este cuadro de diálogo translations.telegram.org/rutech/ios/unsorted/AuthCode.Alert . La etiqueta Critical nos informa sobre la necesidad de moderación.

imagen

Resulta que aquí hay una omisión tan pequeña como la ausencia de una etiqueta Crítica para los diálogos sobre compartir números y la geolocalización conducen a una fuga. Una fuga de datos muy confidenciales, como en el caso de un mensajero que desarrolla su comercialización en torno a la privacidad / seguridad.

Un mensajero vinculado a su número de teléfono personal, por definición, no puede ser privado. Solo puede aumentar el costo de revelar su identidad.

Esta vulnerabilidad cayó en el programa de telegrama de recompensas de errores y se calificó en 100 €.

PD

Ven a nosotros en Telegram chat @secinfosec . Allí compartimos nuestra experiencia y discutimos todo lo relacionado con la seguridad de la información: un error de recompensa, pentests, seguridad práctica y en papel, nuevas amenazas y métodos para tratar con ellos.

All Articles