لماذا الصور / مقاطع الفيديو المدمرة ذاتيا على Telegram ليست آمنة

صورة

لقد شاهدت مؤخرًا مقالة تحدثت عن إدخال رسائل التدمير الذاتي في برنامج WhatsApp messenger. سيكون لها وظائف مماثلة لـ Telegram ، ولكن إذا كان الحذف في برنامج Durov ينطبق على الرسائل العادية (الدردشات السرية) ، فيمكن استخدامها أيضًا على الصور في الدردشات العادية. بمعنى أنه بعد إرسال الصورة لنفترض ، سيتمكن المحاور من مشاهدتها لفترة محدودة من الوقت ، وبعد ذلك ، من الناحية النظرية ، سيتم حذفها من كلا المحاورين (ويفضل من الخادم أيضًا) ، ثم تخطط WhatsApp لتقديم حذف الرسائل العادية (وحتى الآن تم ذلك) .

لكننا اليوم لا نتحدث عن WhatsApp (لأنني لا أستخدمه على الإطلاق) ، ولكن عن Telegram. إن فكرة رسائل التدمير الذاتي لا تحتاج إلى طلب كبير ، ولكن يوجد هؤلاء المستخدمون الذين يستخدمونها ، على سبيل المثال ، عند إرسال المستندات أو الصور التي يمكن رؤيتها مرة واحدة فقط (مهم).

بالنسبة لأولئك الذين هم كسولون جدًا في القراءة ، فإن رسائل التدمير الذاتي على Telegram ليست آمنة ولا سرية. لا تعتقد أنه إذا أرسلت مستندًا مهمًا إلى شخص تتحدث معه بهذه الطريقة ، فلن يتمكن من حفظه (وأنا لا أتحدث عن لقطة شاشة سريعة أو صور فوتوغرافية لشاشات الهاتف ، لا سمح الله) - استخدم دردشات سرية لذلك. وبالنسبة لأولئك المهتمين بتنفيذ هذه الرسائل ، يمكنك متابعة القراءة.

كما أنني استخدمتها ، وإن لم يكن ذلك كثيرًا ، وكانت مجرد "تسلية" ولم أشاهدها بشكل خاص. في شهر يونيو من هذا العام ، أثناء البحث في UserAPI Telegram ، اختبرت إرسال الصور واستلامها. لقد استمتعت ، لا أكثر. وظهر الاهتمام في عرض "عرض" إرسال الرسائل ، وكيف يتم عرضها بشكل عام في الاستجابة. كنت أتساءل كيف يتم تنفيذ هذه الوظيفة "من الداخل" ، سواء تم حذف الملفات من خادم Telegram أو هل يمكن تشفيرها بطريقة أو بأخرى.

ولدهشتي ، هذه الرسائل لا تختلف عمليا عن تلك المعتادة. مباشرة على الإطلاق. لديهم نفس file_id مثل الصور العادية ، والتي يمكنك من خلالها الحصول على الملف نفسه. وحتى إذا نظرت إلى الرسالة واختفت في الدردشة ، فيمكنك حفظها / إرسالها / إرسالها بأمان والقيام بنفس الشيء الذي يمكنك القيام به مع الصور / مقاطع الفيديو العادية. أي أنه لا يتم حذفه من خادم Telegram نفسه.

أكرر ، لا تنطبق هذه الرسائل على الدردشات السرية ، حيث تكون المراسلات موجودة على جهازين ، ولا يمكنني الوصول إليها من عميل آخر. تم تصميم هذه الميزة للدردشة العادية ويبدو أنها "آمنة". ولكن من المثير للاهتمام هنا ، لم أجد وصفًا مفصلاً لرسائل التدمير الذاتي هذه في أي مكان. بمعنى أن Telegram لا تخبرنا أن هذه الرسائل آمنة جدًا من حيث الوصول (إذا كان لديك حق الوصول إلى الحساب نفسه) مثل الدردشات السرية ذاتها. الشيء الوحيد الذي رأيته هو أن Telegram نفسها قالت إنه لا توجد رسائل ، حتى الدردشات السرية ، تتمتع بالأمان بنسبة 100٪ وأن الجميع مسؤول عن الرسائل التي يرسلها ، لكن ...
أعترف أنه سيتم تنفيذه في بعض WhatsApp / Viber / VK ، حتى أنني لم أكن أنبهه ، لكن Telegram عبارة عن رسول مريح للغاية أحبه حقًا ، لكن ما أكره هو دعمه المليء بالمتطوعين.

في نفس شهر يونيو ، كتبت إلى support@telegram.org ، حيث كتبت رسالة كاملة بلغتين. لم يقتصر الأمر على رسائل التدمير الذاتي ، ولكن أيضًا بشأن الرسائل العادية وأن Telegram لا تضع أي قيود على إعادة التوجيه ، ولكن على المزيد فيما يتعلق بإعادة التوجيه.

بعد شهرين ، لم يردوا ، لذلك اضطررت إلى الكتابة إلى "الدعم" Telegram للغاية حول شرح ما يجب فعله وأين أكتب عند العثور على هذا النوع من "الضعف".

هناك ، أجابوا على نحو مدهش بعد ثلاث ساعات ، حيث أخبروني أنه يجب عليك الكتابة عن نقاط الضعف الخطيرة في البروتوكول على العنوان security@telegram.org أو مشاركة التفاصيل هنا. أرفق نص الرد الأصلي من الدعم:

5 يوليو ، استجابة الدعم
مرحبا. يمكنك مشاركة التفاصيل هنا أو الكتابة إلى security@telegram.org إذا كنا نتحدث حقًا عن نوع من الضعف في تطبيقاتنا أو بروتوكولنا.

قررت الكتابة إلى الدعم نفسه حول "تفاصيل" نقاط الضعف ، وتطبيق الفيديو ، والنص البرمجي نفسه ، والحلول للمشكلة (فيما يلي رسالتي) ، لكن حتى الآن لم تتم الإجابة ، سواء عن طريق البريد أو في الدعم نفسه. على ما يبدو حتى الآن ، هذا لا يزعجهم. أفضل دعونا نجعل من الرسوم المتحركة emojis واحد.

بالإضافة إلى خيار رسائل التدمير الذاتي ، لاحظت أيضًا أن أي رسالة تم حذفها ، على سبيل المثال ، في دردشة خاصة أو مجموعة أو قناة ، من السهل أيضًا اعتراضها. يتم ذلك باستخدام إعادة التوجيه المعتاد لجميع الرسائل ، على سبيل المثال ، في مجموعة منفصلة ، وبعد الحصول عليها باستخدام معرف الرسالة المحذوفة (أصبحت المكتبات الآن معالجات لها).

لقد وصفت العملية برمتها في رسالتي (على الرغم من أنها بسيطة في الواقع) ، مع حل المشكلة في شكل الحد من توجيه الرسائل نفسها. وإذا كنت لا تحد بشكل كامل ، فاحظر إعادة التوجيه المستمر لجميع الرسائل. أعتقد أن فريق التطوير سوف يكون قادرًا على القيام بمكافحة الفيضان من الأمام.

ومع تلك التي تدمر نفسها بنفسك ، فقط احذفها من الخادم. هذا لن يحل المشكلة ، لا يزال من الممكن اعتراض الرسائل في وقت استلامها بالضبط. لإلغاء تام ، يجب إعادة صياغة الخوارزمية بأكملها لقراءتها. على سبيل المثال ، لإنشاء مفتاح وصول لكل رسالة وعند استخدام هذا المفتاح ، ستكون الصورة / الفيديو متاحة فقط لفترة معينة. من الصعب بالنسبة لي أن أتوصل إلى الخوارزمية الكاملة لفريق التطوير ، أعترف ، أنا شخصياً غير قادر على التفكير من خلال جميع الجوانب ، وعلى أي حال ، هناك طريقة لاعتراضها. ولكن في الوقت الحالي ، يتم تنفيذها بشكل سيء ، يجب أن يكون المطور (المطورون) الذين شاركوا في هذه الوظيفة أكثر مسؤولية عن تطوير هذا النوع من الوظائف. حسنًا ، أو في الحالات القصوى ، اكتب فقط بأحرف حمراء وجريئة ، رسائل التدمير الذاتي سهلة الاعتراض وهذا ليس أكثر من لعبة.

سوف أخبرك عن نفسي ، طالب يبلغ من العمر 15 عامًا ، مولعًا مؤخرًا بالتطور في بيثون ، انخرط في واجهة برمجة تطبيقات المستخدم ووجد هذا النوع من "الخلل / الضعف". أكثر ما أغضبني وأجبرني على كتابة كل هذا هنا - تطبيق فظيع لدعم Telegram ، والذي تجاهلني ببساطة ثلاث مرات في 4 أشهر.

بالنسبة للبعض ، لن تكون هذه الوظيفة مفيدة ، ولن تجد شيئًا سيئًا في التنفيذ السيئ لمثل هذه الرسائل ، لكنني أعتقد أنه نظرًا لأن Telegram نفسها ليست مهتمة بتحسين الوظائف الحالية ، فسيكون من المفيد للآخرين أن يأخذوا ذلك في الاعتبار فقط.

أنا أكتب مقالات لأول مرة ، ويمكنني أن أترك الأخطاء في مكان ما ، لكنني آمل أن يصححوني في التعليقات ، مشيرًا إلى ذلك. أو بشكل عام ، سوف يخبرونني أن كل شيء خاطئ وأن تجاهل الدعم كان حلاً جيدًا وسأهدأ أخيرًا. أرفق رسالتي أيضًا:

رسالة الدعم التي لم يرد أي رد
مرحباً ، اسمي خامنوف أمل.

لقد كتبت مؤخرًا تجربة مستخدم لمشروعي. في مرحلة ما ، لاحظت كيف أرسل لي صديقي صورة ذاتية الإزالة. نظرت إلى ذلك على عميل Android الخاص بي وتمت إزالته كما ينبغي بعد 10 ثوانٍ.

لكنني تساءلت كيف يتم تشفير هذه الرسائل وكيف يتم تخزينها أثناء التنقل. بعد كل شيء ، اتضح أن عميل telegram يقوم أولاً بتحميل الصورة على الهاتف ، وبعد قراءتها يجب إزالتها.

كتبت سيناريو بيثون صغيرًا باستخدام مكتبة Pyrogram وأردت أن أرى كيف وصلوا إلى العميل.

لقد فوجئت عندما رأيت أن هذه "الصور المحذوفة ذاتيا" تبدو مثل تلك العادية (ماذا؟).
هذا هو ، إذا أرسلت صورة منتظمة ، فلن يكون الأمر مختلفًا عن "الاستنكار الذاتي".
بعد ذلك ، كتبت نصًا يرسل هذه الصورة على الملف ، وفي تلك اللحظة ، انتقلت الصورة إلى قناة الاختبار مثل الصورة العادية. وعلى الهاتف الذي أرسلت منه هذه الصورة الأكثر "استخلاصًا ذاتيًا" ، لم تتم قراءتها.

كما سمح لي بعرض الصورة على عميل سطح المكتب الخاص بي. بمعنى أن هذا السيناريو يتخطى أهم جوهر لصورة "الاستخراج الذاتي".

أنا أعتبرها مشكلة عدم حصانة ، وأنا أعتبرها حلاً لإعادة النظر في طريقة إرسال رسائل "الحذف الذاتي" ومعالجتها على الخادم وليس على الجهاز.

أيضًا ، وجدت المشكلة الثانية (تقريبًا ثغرة أمنية) ، والتي تم إنشاؤها باستخدام برقية واجهة برمجة التطبيقات (API) نفسها ولا يُحظر إطلاقًا.

لذلك ، نحن نتحدث عن الرسائل العادية.

كتبت أيضًا نصًا عاديًا يرسل (إلى الأمام) جميع الرسائل من الدردشة إلى مجموعتي ويميزها بمعرفهم.

لقد أضفت معالجًا لهذا البرنامج النصي يستجيب لجميع الرسائل المحذوفة ويعطي معرف هذه الرسائل المحذوفة (مرحبًا pyrogram).

بعد ذلك ، أضفت نصًا والآن ، عندما يستجيب المعالج لجميع الرسائل المحذوفة ، يقوم بفحصها بالرسائل الواردة من المجموعة (التي تحتوي على جميع الرسائل) ويبحث عن هذه الرسالة بواسطة المعرف.

من ناحية ، لا ينتهك هذا أي شيء ، لأن البرقيات لها رمز مفتوح ، حيث يمكن للجميع كتابة نقاط المستخدم الخاصة بهم. ولكن من ناحية أخرى (الروسية جيدة) ، أضفت في التحديث الأخير وظيفة حذف رسائلك ورسائل الآخرين من أجل الأمن ، ولكن يبدو أن مثل هذه النصوص البسيطة المكتوبة بواسطة تلميذ يبلغ من العمر 15 عامًا تتجاوز هذا الأمن للغاية.

أتفهم أن كل فرد يستجيب ردًا على ما يرسله ، لكن يمكن لأي شخص إرسال ملفات مهمة إلى شخص لا لزوم له عن طريق الخطأ ، وسيحذف الرسالة في هذه اللحظة (على الرغم من أن المحاور لم يقرأ) دون معرفة أنه يمكن اختراق جميع هذه الرسائل والأهم من ذلك ، أن هذه الرسائل ليست محددة للقراءة.

القرار ، على ما أعتقد ، هو إضافة قيود على الرسائل الأمامية ومراجعة طريقة "قراءة" الرسائل.

في الفيديو الثاني ، أرفقت كيف يمكنني حفظ جميع الرسائل المحذوفة دون قراءتها.
أرفق الفيديو والبرنامج النصي الذي كتبته لإظهار بوضوح كيف يعمل.


وكيف يبدو في الكود (يستخدم مكتبة Telethon ، على Pyrogram هو نفسه تقريبا):

أهم جزء من الكود. الباقي هو مجرد إشارة إلى الحساب ، رقم الهاتف ، إلخ.
@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/ar470225/


All Articles