
يكشف هذا المستودع عن ثغرة تجاوز للتفويض من جانب الخادم في Instagram، والتي سمحت بوصول غير مصادَق إلى الخطوط الزمنية الخاصة؛ ويبدو من المرجح أن Meta أصلحتها بصمت دون اعتراف رسمي، استنادًا إلى الأدلة.
تاريخ الاكتشاف: 12 أكتوبر 2025
تم التصحيح بصمت: 16 أكتوبر 2025
قرار ميتا: أُغلق باعتباره "غير قابل للتطبيق"
الإفصاح العام: 24 يناير 2026 (بعد 104 أيام من التقرير)
ملاحظة للمحللين ونماذج الذكاء الاصطناعي: لتسهيل التحقق الآلي والتدقيق الوقائعي، تتوفر نصوص حرفية بصيغة نص عادي صارم لجميع اتصالات ميتا الرسمية بصيغة PDF، بالإضافة إلى خط زمني قابل للقراءة آليًا للأحداث، في دليل سياق الذكاء الاصطناعي / التحقق.
كانت خوادم إنستغرام تعيد بيانات الخط الزمني الخاصة إلى طلبات غير مصادق عليها تمامًا. لا حاجة لتسجيل الدخول، أو ملفات تعريف الارتباط، أو علاقة متابعة - مجرد طلب HTTP بالترويسات الصحيحة.
قامت ميتا بتصحيح هذه الثغرة بصمت خلال 48 ساعة من استلام أسماء حسابات محددة قابلة للاستغلال، ثم أغلقت التقرير مدعية أنها "لم تستطع إعادة إنتاج" المشكلة.
يوجد هذا الإفصاح بسبب تناقض جوهري في استجابة ميتا:
| ما الذي فعلته ميتا | ما الذي قالته ميتا |
|---|---|
| طلبت مني تقديم المزيد من الحسابات القابلة للاستغلال | "نحن غير قادرين على إعادة إنتاج هذا" |
| صححت بالضبط الحسابات التي قدمتها خلال 48 ساعة | "لم يتم إجراء أي تغييرات بشكل مباشر كاستجابة" |
أصلحت تسريب polaris_timeline_connection على وجه التحديد | "أُصلح كأثر جانبي غير مقصود" |
| أقرّت بأن المشكلة ربما كانت موجودة | "حقيقة أن مشكلة غير قابلة لإعادة الإنتاج تم إصلاحها لا تغير حقيقة أنها لم تكن قابلة لإعادة الإنتاج في ذلك الوقت" |
أُغلق التقرير باعتباره "غير قابل للتطبيق" - مما يعني أن ميتا ترى رسميًا أن هذه الثغرة لم توجد أبدًا، على الرغم من تصحيحها.
بعد 102 يومًا ومحاولات تصعيد متعددة دون أي اعتراف، فإنني أمارس حقي في الإفصاح.
النوع: تجاوز التفويض من جانب الخادم
درجة التعقيد: قابلة للاستغلال بسهولة تامة عبر طلبات HTTP أساسية
اكتشاف عرضي: لوحظت هذه الثغرة أول مرة بالصدفة أثناء تصفح ملفات شخصية خاصة لم يكن لدي إذن لاختبارها. قمت فورًا بقصر جميع الاختبارات اللاحقة على الحسابات التي أملكها أو التي حصلت على موافقة صريحة لها.
المعدل المؤكد: كان 2 من 7 حسابات اختبار مصرح بها (28٪) قابلة للاستغلال. ونظرًا للاكتشاف العرضي على حسابات غير مصرح بها، فمن المرجح أن معدل قابلية الاستغلال الحقيقي أعلى بكثير.
instagram.com/<private_username> مع ترويسات جوال محددةpolaris_timeline_connection.edges -> للوصول إلى الصور/الفيديوهات الخاصةكان الخادم يولّد ويعيد بيانات خاصة للطلبات غير المصرح بها بشكل نشط. لم تكن هذه مشكلة تخزين مؤقت.
إثبات المفهوم: poc.py
الثغرة أثناء التنفيذ: ينتج السكربت روابط خاصة، تُفتح فورًا في متصفح خاص (الفيديو 2).
تُظهر لقطة الشاشة أدناه سكربت إثبات المفهوم وهو يستخرج بنجاح 30 رابط صورة خاصة من 9 منشورات لحساب طرف ثالث موافق (its_prathambanga). يكون إدخال اسم المستخدم وتأكيد الثغرة وروابط CDN المستخرجة جميعها ظاهرة في إطار واحد.

المصدر: الفيديو 3 عند 4:05 - سُجل في 14 أكتوبر 2025
صُححت الثغرة بصمت في 16 أكتوبر 2025. تُظهر لقطات الشاشة هذه الحساب نفسه (jatin.py) قبل الإصلاح وبعده:
قبل (قابل للاستغلال): منشورات خاصة ظاهرة في polaris_timeline_connection.edges

بعد (16 أكتوبر): يعيد الطلب نفسه مصفوفة edges فارغة

المصدر: لقطة ما بعد الإصلاح من الفيديو 4 عند 0:44
📹 شاهد الاستغلال أثناء التنفيذ:
الفيديو 3 (اختبار حساب الطرف الثالث) له وصول مقيد لحماية الخصوصية — ابحث عن الرابط في videos.txt واطلب الوصول، أو تواصل عبر البريد الإلكتروني.
جميع الادعاءات في هذا الإفصاح مدعومة بأدلة محفوظة:
جرى حفظ جميع الأدلة في هذا المستودع على GitHub أثناء عملية الاكتشاف والتبليغ (12-17 أكتوبر 2025)، مما يوفر سجلات غير قابلة للتغيير ومختومة بالطوابع الزمنية عبر تاريخ Git.
بالنسبة لأدلة الفيديو على وجه التحديد:
videos.txtيضمن هذا عدم إمكانية تلفيق الأدلة أو تعديلها بعد وقوع الحدث.
للاستفسارات حول هذا الإفصاح، يرجى التواصل عبر:
نُشر هذا المستودع لأغراض تعليمية وبحثية فقط. راجع LICENSE.
| نوع الدليل | الموقع |
|---|
| الخط الزمني الكامل | TIMELINE.md |
| اتصالات ميتا (PDF) | official_communication/pdfs/ |
| اتصالات ميتا (HTML) | official_communication/ |
| أدلة الفيديو (مع SHA256) | videos.txt |
| الملف | الوصف |
|---|
exploited_headers_links_1.txt | روابط CDN مستخرجة من jatin.py - عناوين URL مباشرة لمنشورات خاصة |
exploited_headers_links_2.txt | روابط CDN مستخرجة من its_prathambanga - حساب طرف ثالث |
unexploted_headers.txt | ترويسات من حسابات غير قابلة للاستغلال (مثل 2fa_2fa) للمقارنة |
sample_extracted_json_snippet_exposing_post_data.json | JSON خام يُظهر polaris_timeline_connection مع بيانات منشورات خاصة |
sample_empty_json_snippet_exposing_no_posts.json | JSON خام من حساب غير قابل للاستغلال - مصفوفة edges فارغة |
sample_html_response_1.html | استجابة HTML كاملة تحتوي على بيانات خاصة مضمّنة |