¿Por qué las fotos / videos autodestruibles en Telegram no son seguros?

imagen

Más recientemente, vi un artículo que hablaba sobre la introducción de mensajes autodestructivos en el mensajero de WhatsApp . Tendrá una funcionalidad similar a Telegram, pero si en el mensajero de Durov la eliminación se aplica a mensajes ordinarios (chats secretos), también se pueden usar en fotos en chats regulares. Es decir, después de enviar, suponga que la foto, el interlocutor podrá verla por un tiempo limitado, y después, en teoría, se eliminará de ambos interlocutores (preferiblemente también del servidor), luego WhatsApp planea introducir la eliminación de mensajes regulares (y hasta ahora se ha hecho) .

Pero hoy no estamos hablando de WhatsApp (porque no lo uso en absoluto), sino de Telegram. La idea misma de los mensajes autodestructivos no tiene mucha demanda, pero existen aquellos usuarios que los usan, por ejemplo, al enviar documentos o fotos que solo se pueden ver una vez (ejem).

Para aquellos que son demasiado flojos para leer, los mensajes autodestructivos en Telegram no son seguros ni confidenciales. No piense que si envía un documento importante a alguien con quien habla de esta manera, él no podrá guardarlo (y no estoy hablando de una captura de pantalla rápida o fotografías de pantallas de teléfonos, Dios no lo quiera) - use chats secretos para esto. Y para aquellos que estén interesados ​​en la implementación de estos mensajes, pueden continuar leyendo.

También los usé, aunque no con frecuencia, sino que eran solo "entretenimiento" y no los veía especialmente. En el mes de junio de este año, mientras investigaba el UserAPI Telegram , probé el envío de fotos y su recepción. Me divertí, no más. Y apareció interés en ver la "vista" del envío de mensajes, y cómo se muestran generalmente en la respuesta. Me preguntaba cómo se implementa esta función "desde adentro", si los archivos se eliminan del servidor de Telegram o si se pueden cifrar de alguna manera.

Y para mi sorpresa, estos mensajes prácticamente no son diferentes de los habituales. Directamente a todos. Tienen el mismo file_id que las fotos normales, con las que puede obtener el archivo en sí. E incluso si miró el mensaje y desapareció en el chat, puede guardarlo / enviarlo / reenviarlo de manera segura y hacer lo mismo que podría hacer con fotos / videos normales. Es decir, no se elimina del servidor Telegram.

Repito, dichos mensajes no se aplican a los chats secretos, donde la correspondencia está en dos dispositivos, y desde otro cliente no puedo acceder a ellos. Esta característica está diseñada para chats regulares y parece considerarse "segura". Pero aquí es interesante, no he encontrado una descripción detallada de estos mensajes autodestructivos en ninguna parte. Es decir, Telegram no parece decirnos que estos mensajes son tan seguros en términos de acceso (si tiene acceso a la cuenta en sí) como, por ejemplo, los mismos chats secretos. Lo único que vi fue que Telegram mismo dijo que ningún mensaje, incluso los chats secretos, tienen 100 por ciento de seguridad y que todos son responsables de los mensajes que envía, pero ...
Confieso que se implementaría en algunos WhatsApp / Viber / VK, ni siquiera le prestaría atención, pero Telegram es un mensajero muy conveniente que realmente amo, pero lo que odio es su apoyo lleno de voluntarios.

En el mismo mes de junio, escribí a support@telegram.org, donde escribí una carta completa en dos idiomas. Dijo no solo sobre mensajes autodestructivos, sino también sobre mensajes ordinarios y que Telegram no establece ningún límite para el reenvío, sino más sobre eso más adelante.

Dos meses después, no me respondieron, así que tuve que escribir al telegrama de "soporte" para explicar qué hacer y dónde escribir al encontrar este tipo de "vulnerabilidad".

Allí, sorprendentemente me respondieron tres horas después, donde me dijeron que debería escribir sobre vulnerabilidades graves en el protocolo en security@telegram.org o compartir los detalles aquí. Adjunto el texto de respuesta original del soporte:

5 de julio, respuesta de apoyo
Hola Puede compartir los detalles aquí o escribir a security@telegram.org si realmente estamos hablando de algún tipo de vulnerabilidad en nuestras aplicaciones o protocolo.

Decidí escribir al soporte en sí sobre los "detalles" de las vulnerabilidades, aplicando el video, el script en sí y las soluciones al problema (a continuación está mi mensaje), pero hasta ahora no he recibido respuesta, ni por correo ni en el soporte en sí. Aparentemente hasta ahora, esto no les molesta. Mejor hagamos una animación de emojis individuales.

Además de la opción con mensajes autodestructivos, también noté que cualquier mensaje que se eliminó, por ejemplo, en un chat privado, grupo, canal, también es fácil de interceptar. Esto se realiza utilizando el reenvío habitual de todos los mensajes , por ejemplo, en un grupo separado, y después de obtenerlos utilizando la ID del mensaje eliminado (ahora las bibliotecas tienen controladores en ellos).

También describí todo el proceso en mi carta (aunque en realidad es simple), con una solución al problema en forma de limitar el reenvío de los propios mensajes. Y si no limita por completo, prohíba el reenvío constante de todos los mensajes. Creo que el equipo de desarrollo podrá hacer algunos anti-inundaciones desde adelante.

Y con los autodestructivos, simplemente elimínelos del servidor. Esto no resolverá el problema, los mensajes aún pueden ser interceptados exactamente en el momento en que se reciben. Para una eliminación completa, todo el algoritmo para leerlos debe ser modificado. Por ejemplo, para hacer una clave de acceso a cada mensaje y cuando se usa esta tecla, la imagen / video estará disponible solo por un tiempo determinado. Es difícil para mí encontrar todo el algoritmo para el equipo de desarrollo, lo admito, yo mismo no soy capaz de pensar en todos los aspectos y, en cualquier caso, hay una manera de interceptarlos. Pero en este momento, se implementan terriblemente, los desarrolladores que se dedicaron a esta función deberían ser más responsables del desarrollo de este tipo de función. Bueno, o en casos extremos, solo escriba, en letras rojas y en negrita, que los mensajes autodestructivos son fáciles de interceptar y esto no es más que un juguete.

Te contaré sobre mí, un estudiante de 15 años, recientemente aficionado al desarrollo en Python, incursionó en la API de usuario y encontró este tipo de "falla / vulnerabilidad". Lo que más me enfureció y me obligó a escribir todo esto aquí, una implementación terrible del soporte de Telegram, que simplemente me ignoró tres veces en 4 meses.

Para algunos, esta función no será útil, no encontrará nada malo en la implementación deficiente de dichos mensajes, pero creo que, dado que Telegram no está interesado en mejorar las funciones actuales, será útil que otros solo lo tengan en cuenta.

Estoy escribiendo artículos por primera vez, podría dejar errores en alguna parte, pero espero que me corrijan en los comentarios, indicando. O, en general, me dirán que todo está mal e ignorar el apoyo fue una buena solución y finalmente me calmaré. También adjunto mi mensaje:

Mensaje de soporte para el que no se recibió respuesta
Hola, mi nombre es Khamidov Amal.

Recientemente, escribí una experiencia de usuario para mi proyecto. En algún momento, noté cómo mi amigo me envió una foto autoextraíble. Lo miré en mi cliente Android y fue eliminado como debería ser después de 10 segundos.

Pero me preguntaba cómo se cifran dichos mensajes y cómo se almacenan sobre la marcha. Después de todo, resulta que el cliente de telegramas primero carga la foto en el teléfono y, después de leerla, debe eliminarla.

Escribí un pequeño script de Python usando la biblioteca Pyrogram y quería ver cómo llegaron al cliente.

Me sorprendió ver que estas "fotos que se borran automáticamente" se parecen a las normales (¿qué?).
Es decir, si envié una foto normal, no sería diferente de la "autocrítica".
Después de eso, escribí un guión que envía esta foto en el archivo, y en ese momento, la foto fue a mi canal de prueba como una foto normal. Y en el teléfono desde el que envié esta foto más "autoextraíble", ni siquiera fue leída.

También me permitió ver la foto en mi cliente de escritorio. Es decir, este script omite la esencia más importante de la foto "autoextraíble".

Considero que es una vulnerabilidad, y considero que es una solución para reconsiderar el método de enviar mensajes de "eliminación automática" y procesarlos en el servidor y no en el dispositivo.

Además, encontré el segundo (casi una vulnerabilidad), que se creó utilizando el telegrama de la API y no está prohibido en absoluto.

Entonces, estamos hablando de mensajes ordinarios.

También escribí un script regular que envía (reenvía) todos los mensajes del chat a mi grupo y los marca por su ID.

Agregué un controlador a este script que responde a todos los mensajes eliminados y proporciona la ID de estos mensajes eliminados (hola pirograma).

Después de eso, agregué un script y ahora, cuando el controlador responde a todos los mensajes eliminados, los verifica con los mensajes del grupo (que contiene todos los mensajes) y busca este mensaje por ID.

Por un lado, esto no viola nada, ya que los telegramas tienen un código abierto, todos pueden escribir sus robots de usuario. pero por otro lado (el ruso es bueno), en la última actualización agregó la función de eliminar sus propios mensajes y los de los demás por razones de seguridad, pero estos simples guiones escritos por un niño de 15 años parecen pasar por alto esto Muy seguridad.

Entiendo que todos responden en respuesta que él envía, pero una persona puede enviar archivos importantes a una persona innecesaria por error y en este momento borrará el mensaje (mientras el interlocutor no ha leído) sin saber que todos estos mensajes pueden verse comprometidos y lo más importante, que los mensajes no están marcados como leídos.

La decisión, creo, es agregar límites a los mensajes reenviados y revisar la forma de "leer" los mensajes.

En el segundo video adjunto, ¿cómo puedo guardar todos los mensajes eliminados sin leerlos?
Adjunto el video y el guión que escribí para mostrar claramente cómo funciona.


Y cómo se ve en el código (usó la biblioteca Telethon, en Pyrogram es casi lo mismo):

La parte más importante del código. El resto es solo una indicación de la cuenta, número de teléfono, etc.
@client.on(events.NewMessage(func=lambda e: e.is_private and getattr(e, 'photo'))) async def handler(event: message.Message): # event.input_chat may be None, use event.get_input_chat() chat: InputPeerUser = await event.get_input_chat() sender: User = await event.get_sender() photo: Photo = event.photo await client.send_message(img_channel, file=MessageMediaPhoto(photo), message=f'<code>{chat.user_id}</code>\n' f'<code>{sender.first_name}</code>\n', parse_mode='HTML') 

Source: https://habr.com/ru/post/470225/


All Articles