Warum selbstzerstörende Fotos / Videos im Telegramm nicht sicher sind

Bild

Zuletzt habe ich einen Artikel gesehen , in dem es um die Einführung selbstzerstörender Nachrichten im WhatsApp- Messenger ging. Es hat eine ähnliche Funktionalität wie Telegramm, aber wenn in Durovs Messenger die Löschung für normale Nachrichten (geheime Chats) gilt, können sie auch für Fotos in regulären Chats verwendet werden. Das heißt, nach dem Senden des Fotos kann der Gesprächspartner es für eine begrenzte Zeit anzeigen. Nachdem es theoretisch von beiden Gesprächspartnern (vorzugsweise auch vom Server) gelöscht wurde, plant WhatsApp, das Löschen regulärer Nachrichten einzuführen (und dies wurde bisher getan). .

Aber heute sprechen wir nicht über WhatsApp (weil ich es überhaupt nicht benutze), sondern über Telegramm. Die Idee, sich selbst zu zerstören, ist kaum gefragt, aber es gibt Benutzer, die sie beispielsweise beim Senden von Dokumenten oder Fotos verwenden, die nur einmal angezeigt werden können (ahem).

Für diejenigen, die zu faul zum Lesen sind, sind selbstzerstörende Nachrichten im Telegramm weder sicher noch vertraulich. Denken Sie nicht, dass jemand, mit dem Sie auf diese Weise sprechen, ein wichtiges Dokument nicht speichern kann (und ich spreche nicht von einem kurzen Screenshot oder Fotos von Telefonbildschirmen, Gott bewahre es) - verwenden Sie dafür geheime Chats. Und für diejenigen, die an der Umsetzung dieser Nachrichten interessiert sind, können Sie weiterlesen.

Ich habe sie auch benutzt, wenn auch nicht oft, und eher waren sie nur "Unterhaltung" und ich habe sie nicht besonders gesehen. Im Juni dieses Jahres habe ich bei der Recherche des UserAPI-Telegramms das Senden und Empfangen von Fotos getestet. Ich hatte keinen Spaß mehr. Und es zeigte sich Interesse daran, die „Ansicht“ des Sendens von Nachrichten anzuzeigen und wie sie im Allgemeinen in der Antwort angezeigt werden. Ich habe mich gefragt, wie diese Funktion "von innen" implementiert wird, ob Dateien vom Telegrammserver gelöscht werden oder ob sie irgendwie verschlüsselt werden können.

Und zu meiner Überraschung unterscheiden sich diese Botschaften praktisch nicht von den üblichen. Überhaupt gerade. Sie haben dieselbe Datei-ID wie normale Fotos, mit denen Sie die Datei selbst abrufen können. Und selbst wenn Sie sich die Nachricht angesehen haben und sie im Chat verschwunden ist, können Sie sie sicher speichern / senden / weiterleiten und das Gleiche tun, was Sie mit normalen Fotos / Videos tun könnten. Das heißt, es wird nicht vom Telegrammserver selbst gelöscht.

Ich wiederhole, solche Nachrichten gelten nicht für geheime Chats, bei denen sich die Korrespondenz auf zwei Geräten befindet und von einem anderen Client aus kann ich nicht darauf zugreifen. Diese Funktion wurde für regelmäßige Chats entwickelt und scheint als "sicher" zu gelten. Aber hier ist es interessant, ich habe nirgendwo eine detaillierte Beschreibung dieser selbstzerstörenden Nachrichten gefunden. Das heißt, Telegram scheint uns nicht zu sagen, dass diese Nachrichten in Bezug auf den Zugriff so sicher sind (wenn Sie Zugriff auf das Konto selbst haben), wie zum Beispiel dieselben geheimen Chats. Das einzige, was ich gesehen habe, war, dass Telegram selbst sagte, dass keine Nachrichten, auch keine geheimen Chats, 100 Prozent Sicherheit haben und dass jeder für die Nachrichten verantwortlich ist, die er sendet, aber ...
Ich gebe zu, dass es in einigen WhatsApp / Viber / VK implementiert sein würde, ich würde nicht einmal darauf achten, aber Telegram ist ein sehr praktischer Messenger, den ich wirklich liebe, aber was ich hasse, ist seine Unterstützung, die mit Freiwilligen gefüllt ist.

Im selben Monat Juni schrieb ich an support@telegram.org, wo ich einen ganzen Brief in zwei Sprachen schrieb. Es wurde nicht nur über selbstzerstörende Nachrichten gesprochen, sondern auch über gewöhnliche, und dass Telegramm der Weiterleitung keine Grenzen setzt, aber dazu später mehr.

Zwei Monate später antworteten sie mir nicht, daher musste ich an das "Support" -Telegramm schreiben, um zu erklären, was zu tun ist und wo zu schreiben ist, wenn ich diese Art von "Sicherheitslücke" finde.

Dort antworteten sie mir überraschenderweise drei Stunden später, wo sie mir sagten, dass Sie über schwerwiegende Schwachstellen im Protokoll unter security@telegram.org schreiben oder die Details hier teilen sollten. Ich füge den ursprünglichen Antworttext des Supports bei:

5. Juli, Support-Antwort
Hallo. Sie können die Details hier teilen oder an security@telegram.org schreiben, wenn es sich wirklich um eine Sicherheitslücke in unseren Anwendungen oder Protokollen handelt.

Ich habe beschlossen, dem Support selbst über die "Details" von Sicherheitslücken zu schreiben, das Video, das Skript selbst und Lösungen für das Problem anzuwenden (unten ist meine Nachricht), aber bis jetzt wurde ich weder per E-Mail noch im Support selbst beantwortet. Anscheinend stört sie das bisher nicht. Besser machen wir eine Animation von einzelnen Emojis.

Neben der Option mit selbstzerstörenden Nachrichten ist mir auch aufgefallen, dass jede Nachricht, die beispielsweise in einem privaten Chat, einer Gruppe oder einem Kanal gelöscht wurde, leicht abzufangen ist. Dies erfolgt mit der üblichen Weiterleitung aller Nachrichten , z. B. in einer separaten Gruppe, und nachdem sie mit der ID der gelöschten Nachricht abgerufen wurden (jetzt verfügen die Bibliotheken über Handler).

Ich habe auch den gesamten Prozess in meinem Brief beschrieben (obwohl es tatsächlich einfach ist), mit einer Lösung für das Problem in Form der Begrenzung der Weiterleitung der Nachrichten selbst. Und wenn Sie nicht vollständig einschränken, verbieten Sie die ständige Weiterleitung aller Nachrichten. Ich denke, das Entwicklungsteam wird in der Lage sein, von vorne etwas gegen Überschwemmungen zu tun.

Und bei selbstzerstörenden löschen Sie sie einfach vom Server. Dies wird das Problem nicht lösen. Nachrichten können immer noch genau zum Zeitpunkt des Empfangs abgefangen werden. Für eine vollständige Beseitigung sollte der gesamte Algorithmus zum Lesen überarbeitet werden. Um beispielsweise einen Zugriffsschlüssel für jede Nachricht zu erstellen und diesen Schlüssel zu verwenden, ist das Bild / Video nur für eine bestimmte Zeit verfügbar. Es fällt mir jetzt schwer, den gesamten Algorithmus für das Entwicklungsteam zu entwickeln. Ich gebe zu, ich selbst kann nicht alle Aspekte durchdenken, und auf jeden Fall gibt es eine Möglichkeit, sie abzufangen. Aber im Moment sind sie nur schrecklich implementiert, die Entwickler, die mit dieser Funktion beschäftigt waren, sollten mehr für die Entwicklung dieser Art von Funktion verantwortlich sein. Nun, oder schreiben Sie in extremen Fällen einfach in roten, fetten Buchstaben, dass selbstzerstörende Nachrichten leicht abzufangen sind und dies nichts weiter als ein Spielzeug ist.

Ich erzähle Ihnen von mir selbst, einem 15-jährigen Studenten, der kürzlich gern in Python entwickelt hat, sich in der Benutzer-API versucht und diese Art von "Fehler / Schwachstelle" festgestellt hat. Umso mehr machte mich das wütend und zwang mich, all dies hier zu schreiben - eine schreckliche Implementierung der Telegrammunterstützung, die mich in 4 Monaten einfach dreimal ignorierte.

Für einige wird diese Funktion nicht nützlich sein, sie wird nichts Schlechtes an der schlechten Implementierung solcher Nachrichten finden, aber ich denke, da Telegram selbst nicht daran interessiert ist, die aktuellen Funktionen zu verbessern, wird es für andere nützlich sein, dies nur zu berücksichtigen.

Ich schreibe zum ersten Mal Artikel, ich könnte irgendwo Fehler hinterlassen, aber ich hoffe, dass sie mich in den Kommentaren korrigieren und darauf hinweisen. Oder im Allgemeinen werden sie mir sagen, dass alles falsch ist und das Ignorieren der Unterstützung eine gute Lösung war und ich mich endlich beruhigen werde. Ich hänge auch meine Nachricht an:

Support-Nachricht, auf die keine Antwort eingegangen ist
Hallo, ich heiße Khamidov Amal.

Kürzlich habe ich eine Benutzererfahrung für mein Projekt geschrieben. Irgendwann bemerkte ich, wie mein Freund mir ein selbstentfernendes Foto schickte. Ich habe es mir auf meinem Android-Client angesehen und es wurde entfernt, wie es nach 10 Sekunden sein sollte.

Aber ich habe mich gefragt, wie solche Nachrichten verschlüsselt und wie sie unterwegs gespeichert werden. Schließlich stellt sich heraus, dass der Telegramm-Client das Foto zuerst auf das Telefon hochlädt und es nach dem Lesen entfernen muss.

Ich habe ein kleines Python-Skript mit der Pyrogram-Bibliothek geschrieben und wollte sehen, wie sie zum Client kamen.

Ich war überrascht, als ich sah, dass diese "selbstlöschenden Fotos" genauso aussehen wie normale (was?).
Das heißt, wenn ich ein normales Foto gesendet habe, war es nicht anders als das „selbstironische“.
Danach schrieb ich ein Skript, das dieses Foto in die Datei sendet, und in diesem Moment ging das Foto wie ein normales Foto zu meinem Testkanal. Und auf dem Telefon, von dem ich dieses "selbstextrahierende" Foto gesendet habe, wurde es nicht einmal gelesen.

Außerdem konnte ich das Foto auf meinem Desktop-Client anzeigen. Das heißt, dieses Skript umgeht die wichtigste Essenz des "selbstextrahierenden" Fotos.

Ich halte es für eine Sicherheitsanfälligkeit und für eine Lösung, die Methode zum Senden von "selbstlöschenden" Nachrichten zu überdenken und auf dem Server und nicht auf dem Gerät zu verarbeiten.

Außerdem habe ich die zweite gefunden (fast eine Sicherheitslücke), die mit dem API-Telegramm selbst erstellt wurde und überhaupt nicht verboten ist.

Wir sprechen also über gewöhnliche Botschaften.

Ich habe auch ein reguläres Skript geschrieben, das alle Nachrichten aus dem Chat an meine Gruppe sendet (weiterleitet) und sie anhand ihrer ID markiert.

Ich habe diesem Skript einen Handler hinzugefügt, der auf alle gelöschten Nachrichten reagiert und die ID dieser gelöschten Nachrichten angibt (Hallo Pyrogramm).

Danach habe ich ein Skript hinzugefügt und jetzt, wenn der Handler auf alle gelöschten Nachrichten antwortet, überprüft er sie mit den Nachrichten aus der Gruppe (die alle Nachrichten enthält) und sucht nach dieser Nachricht anhand der ID.

Einerseits verstößt dies gegen nichts, da Telegramme einen offenen Code haben, kann jeder seine Userbots schreiben. Auf der anderen Seite (Russisch ist gut) haben Sie im letzten Update die Funktion hinzugefügt, Ihre eigenen und fremden Nachrichten aus Sicherheitsgründen zu löschen, aber solche einfachen Skripte, die von einem 15-jährigen Schüler geschrieben wurden, scheinen dies zu umgehen sehr sicherheit.

Ich verstehe, dass jeder als Antwort antwortet, die er sendet, aber eine Person kann versehentlich wichtige Dateien an eine unnötige Person senden und in diesem Moment die Nachricht löschen (während der Gesprächspartner nicht gelesen hat), ohne zu wissen, dass alle diese Nachrichten kompromittiert werden können und vor allem, dass Nachrichten nicht als gelesen markiert sind.

Ich denke, die Entscheidung besteht darin, die Weiterleitung von Nachrichten einzuschränken und die Art und Weise des „Lesens“ von Nachrichten zu überprüfen.

Im zweiten Video habe ich angehängt, wie ich alle gelöschten Nachrichten speichern kann, ohne sie zu lesen.
Ich füge das Video und das Skript bei, die ich geschrieben habe, um deutlich zu machen, wie es funktioniert.


Und wie es im Code aussieht (verwendet die Telethon-Bibliothek, auf Pyrogram ist es fast das gleiche):

Der wichtigste Teil des Codes. Der Rest ist nur eine Angabe des Kontos, der Telefonnummer usw.
@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/de470225/


All Articles