تحسين الأمان والخصوصية من خلال تحديث ذاكرة التخزين المؤقت عبر HTTP

قد يؤدي نسيان عنوان Cache-Control أو إساءة استخدامه إلى التأثير سلبًا في أمان موقعك الإلكتروني وخصوصية المستخدمين.

Arthur Sonzogni
Arthur Sonzogni

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

للردود المخصّصة التي تريد الحفاظ على خصوصيتها، ننصحك بإجراء أي مما يلي:

  • منع الوسطاء من التخزين المؤقت للموارد. ضبط Cache-Control: private.
  • اضبط مفتاح ذاكرة تخزين مؤقت ثانويًا مناسبًا. إذا كانت الاستجابة تختلف بسبب ملفات تعريف الارتباط، وهو ما يمكن أن يحدث عند تخزين ملف تعريف الارتباط لبيانات الاعتماد، يمكنك ضبط Vary: Cookie.

تابع القراءة لمعرفة سبب أهمية ذلك واكتشِف ما يلي:

  1. مشاكل الأمان والخصوصية التي قد لا تكون على دراية بها
  2. الأنواع المختلفة من ذاكرات التخزين المؤقت لبروتوكول HTTP والمفاهيم الخاطئة الشائعة
  3. الإجراءات المقترَحة للمواقع الإلكترونية عالية القيمة

مصادر تسرُّب من ثغرات Spectre

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

وتفرض متصفّحات الويب الحديثة سياسة أداة تضمين COEP. يضمن ذلك أن تكون الموارد المشتركة المصدر هي:

  • الموارد العامة، تم طلبها بدون ملفات تعريف الارتباط
  • تم السماح صراحةً بمشاركة الموارد من مصادر متعددة، من خلال عنوان CORS أو عنوان CORP.

لا يمنع إعداد COEP المهاجم من استغلال Spectre. ومع ذلك، يضمن أنّ الموارد المتعددة المصادر لا تكون ذات قيمة للمهاجم (عند تحميلها من خلال المتصفّح كمورد عام) أو مسموحًا بمشاركتها مع المهاجم (عند مشاركتها مع CORP: cross-origin).

كيف يؤثر التخزين المؤقت لبروتوكول HTTP في Spectre؟

إذا لم يتم ضبط عنوان Cache-Control بشكل صحيح، قد ينفِّذ المهاجم هجومًا. مثال:

  1. يتم تخزين المورد المعتمد مؤقتًا.
  2. يحمِّل المهاجم صفحة تم عزلها من نطاقات أخرى.
  3. ويطلب المهاجم المورد مرة أخرى.
  4. تم ضبط COEP:credentialless من خلال المتصفح، لذلك يتم جلب المورد بدون ملفات تعريف الارتباط. ومع ذلك، قد تعرض ذاكرة التخزين المؤقت استجابة الاعتماد بدلاً من ذلك.
  5. ويمكن للمهاجم بعد ذلك قراءة المورد المخصص باستخدام هجوم Spectre.

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

المفاهيم الخاطئة والشائعة حول ذاكرات التخزين المؤقت لبروتوكول HTTP

1- يتم تخزين الموارد مؤقتًا بواسطة المتصفح فقط

يكون هناك غالبًا طبقات متعددة من ذاكرة التخزين المؤقت. يتم تخصيص بعض ذاكرات التخزين المؤقت لمستخدم واحد، وبعضها لعدة مستخدمين. ويتم التحكم في بعضها من خلال الخادم، في حين يتحكم المستخدم والبعض الآخر من قبل الوسطاء.

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

2. تمنع طبقة المقابس الآمنة الوسطاء من التخزين المؤقت لموارد HTTPS

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

غالبًا ما يتم تثبيت ذاكرة تخزين مؤقتة وسيطة على محطات عمل موظف الشركة. تم ضبط متصفّحات الويب للثقة في شهادات الخادم الوكيل المحلي.

وفي النهاية، قد يتم تخزين بعض موارد HTTPS مؤقتًا من خلال هذه الخوادم الوكيلة المحلية.

طريقة عمل ذاكرة التخزين المؤقت لبروتوكول HTTP

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

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

ننصحك باتخاذ إحدى الخطوات التالية:

  • منع الوسطاء من التخزين المؤقت للموارد. ضبط Cache-Control: private.
  • اضبط مفتاح ذاكرة تخزين مؤقت ثانويًا مناسبًا. إذا كانت الاستجابة تختلف بسبب ملفات تعريف الارتباط، وهو ما يمكن أن يحدث عند تخزين ملف تعريف الارتباط لبيانات الاعتماد، يمكنك ضبط Vary: Cookie.

وعلى وجه الخصوص، يمكنك تغيير السلوك التلقائي: يمكنك تحديد Cache-Control أو Vary دائمًا.

اعتبارات أخرى

هناك أنواع أخرى مشابهة من الهجمات التي تستخدم ذاكرة التخزين المؤقت لبروتوكول HTTP، ولكنها تعتمد على آلية مختلفة عن العزل المشترك المصدر. على سبيل المثال، يصف "جيك أرشيبالد" بعض الهجمات في كيفية الفوز في CORS.

يتم التخفيف من حدة هذه الهجمات بواسطة بعض متصفحات الويب التي تقسّم ذاكرة التخزين المؤقت لبروتوكول HTTP اعتمادًا على ما إذا تم طلب استجابة المورد باستخدام بيانات الاعتماد أم لا. اعتبارًا من العام 2022، يقسّم Firefox ذاكرة التخزين المؤقت، فيما لا يقسّم Chrome وSafari ذاكرة التخزين المؤقت. وقد يقسم Chrome ذاكرة التخزين المؤقت في المستقبل. تجدر الإشارة إلى أنّ هذه الهجمات مختلفة وتتكامل مع تقسيمها حسب المصدر ذي المستوى الأعلى.

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


صورة العنوان من إعداد بن باتينسون على UnLaunch.