الخلاصة
- أعاد بعض العملاء محاولة مصافحة TLS بإصدارات أقدم تدريجياً. ولأن مهاجماً على المسار يستطيع افتعال الفشل، أعطت سياسة الإعادة الشبكة صوتاً في اختيار الإصدار خارج التفاوض الموثق.
- استغل POODLE بعد ذلك قواعد حشو CBC في SSL 3.0 ضمن شروط إضافية: وسيط نشط، وطلبات متكررة تحمل سراً، وتعديل سجلات TLS. توقعت البنية الأصلية نحو 256 طلب SSL 3.0 لكل بايت مستعاد.
- لم يكن
TLS_FALLBACK_SCSVتشفيراً ولا مصادقة. كان يعلّم ClientHello ذي الإصدار الأدنى بأنه محاولة تراجع، كي يرفضه محلياً خادم يدعم إصداراً أعلى بتنبيهinappropriate_fallback(86).
كان TLS يملك تفاوضاً على الإصدار أصلاً. يمكن للعميل عرض TLS 1.2، ولخادم لا يفهم إلا TLS 1.0 أن يجيب بالإصدار الذي يفهمه، ثم تدخل النتيجة في المصافحة المحمية. هذا هو المسار المصمم.
نشأت رقصة التراجع إلى جانبه. واجه مطورو المتصفحات والمكتبات خوادم قديمة وأجهزة وسيطة تفشل بمجرد رؤية إصدار أحدث. ولإبقاء الاتصال سلساً، كان بعض العملاء يعاودون الاتصال بعد الفشل بأقصى إصدار أدنى، ثم ينزلون مرة أخرى حتى SSL 3.0.
أخفت الراحة تحولاً في السلطة. لم يعد الفشل ملاحظة سلبية عن محاولة بعينها، بل صار دليلاً مفترضاً على قدرة الخادم، من دون تصريح موثق منه. من يستطيع قطع محاولات الإصدار الأعلى يستطيع صنع الدليل نفسه. لم يحتج المهاجم إلى كسر TLS 1.2؛ فالعميل توقف طوعاً عن عرضه.
ذلك فتح الباب فقط. أما استعادة النص الصريح في POODLE فاحتاجت إلى الغرفة الواقعة خلفه.
سمح SSL 3.0 لحشو CBC بأن يتضمن بايتات اعتباطية لا تحميها شيفرة توثيق الرسالة حماية كاملة. وصفت ورقة Google الأصلية وسيطاً نشطاً يحفز متصفحاً على إرسال طلبات HTTPS متكررة تحمل ملف تعريف ارتباط، ويرتب البايت المستهدف عند حد كتلة، ويستبدل كتلة النص المشفر الأخيرة، ثم يستدل من قبول الخادم للسجل المعدل. كان احتمال القبول في الشرط المختبر واحداً من 256 في المتوسط، أي 256 طلب SSL 3.0 متوقعاً لكل بايت.
كثيراً ما يُحفظ الرقم وتُنسى شروطه. لم يكن معدل فك تشفير عاماً. احتاج سيناريو الويب إلى مهاجم على المسار، وطلبات يمكنه التأثير فيها، وجلسة SSL 3.0 تستخدم CBC، ومحاولات متكررة. دعم الخادم لـSSL 3.0 وحده لم يكشف ملف ارتباط، ولم يكن كل عميل يتراجع إليه.
لذلك كان على الاستجابة أداء مهمتين منفصلتين: منع استعمال SSL 3.0، ثم منع المهاجم من انتحال ضرورة التوافق القديم عندما يتعذر الإلغاء الفوري.
عالج TLS_FALLBACK_SCSV المهمة الثانية بإشارة صغيرة مقصودة. ظهرت قيمته {0x56,0x00} في قائمة مجموعات التشفير، لكنها ليست مجموعة قابلة للاختيار. معناها: ClientHello هذا محاولة تراجع. يقارن الخادم الداعم الإصدار المعروض بأعلى إصدار مفعّل لديه؛ فإذا كان يستطيع الأفضل، أنهى الاتصال بالتنبيه القاتل 86، inappropriate_fallback.
لم يحتج الخادم إلى خدمة سمعة مركزية أو حكم بأن هجوماً جارٍ. احتاج إلى حالته المحلية وإلى نتيجة موحدة: رفض إعادة أدنى من اللازم. إنها قاعدة مشتركة دنيا تقترن بالرفض المحلي.
وكانت القاعدة محدودة عمداً. يحذر RFC 7507 من أن أعطال الشبكة العادية قد تطلق التراجع، فلا يثبت التنبيه وجود مهاجم. كما أن SCSV ليس بديلاً عن التفاوض الصحيح. إذا غاب الدعم عن أحد الطرفين ظل المسار القديم ممكناً، وإذا كان الطرف لا يدعم حقيقة إلا SSL 3.0 فلا تستطيع الإشارة جعله آمناً.
جاء الحكم الدائم على مراحل. أضاف OpenSSL الدعم في 1.0.1j و1.0.0o و0.9.8zc، ووحّد RFC 7507 الإشارة في أبريل 2015، ثم منع RFC 7568 استعمال SSL 3.0. وفي 2021 ألغى RFC 8996 مكانة TLS 1.0 و1.1، واعتبر RFC 7507 متجاوزاً لأن TLS 1.3 يستخدم علامة خفض مختلفة داخل ServerHello.Random.
لا تعني الحكاية أن كل وسيلة انتقالية يجب أن تبقى. معناها أن التوافق لا يجوز أن يحول فشلاً غامضاً إلى إذن صامت لإضعاف الأمن. قد تكون إشارة محدودة جسراً مناسباً أثناء انتقال الأنظمة المستقلة؛ وعندما تزول مجموعة التوافق القديمة يجب أن يزول الجسر معها.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
