قد يؤدي نسيان استخدام العنوان Cache-Control أو إساءة استخدامه إلى التأثير سلبًا في أمان موقعك الإلكتروني وخصوصية المستخدمين.
يُسمح تلقائيًا بتخزين الموارد في ذاكرة التخزين المؤقت باستخدام أي نوع من ذاكرات التخزين المؤقت.
قد يؤدي عدم استخدام عنوان Cache-Control
أو إساءة استخدامه إلى التأثير سلبًا في
أمان موقعك الإلكتروني وخصوصية المستخدمين.
بالنسبة إلى الردود المخصّصة التي تريد الحفاظ على خصوصيتها، ننصحك بما يلي:
- منع الوسطاء من تخزين المورد مؤقتًا اضبط
Cache-Control: private
. - اضبط مفتاح ملف تخزين مؤقت ثانوي مناسب.
إذا كان الردّ يختلف بسبب ملفات تعريف الارتباط، ما قد يحدث عندما تخزِّن ملفّ تعريف الارتباط بيانات الاعتماد، اضبط القيمة
Vary: Cookie
.
تابِع القراءة لمعرفة أهمية ذلك واكتشاف ما يلي:
- مشاكل الأمان والخصوصية التي قد لا تكون على دراية بها
- الأنواع المختلفة من ذاكرات التخزين المؤقت لبروتوكول HTTP والمفاهيم الخاطئة الشائعة
- الإجراءات المقترَحة للمواقع الإلكترونية ذات القيمة العالية
المخاطر المتعلقة بالأمان والخصوصية في ذاكرة التخزين المؤقت
الموارد التي تتسرّب من ثغرات Spectre الأمنية
تسمح الثغرة الأمنية Specter
للصفحة بقراءة ذاكرة عملية نظام التشغيل. وهذا يعني أنّه يمكن للمهاجم
الوصول بشكل غير مصرّح به إلى بيانات من مصادر متعددة. نتيجةً لذلك، فرضت متصفحات الويب
الحديثة قيودًا على استخدام بعض ميزاتها، مثل
SharedArrayBuffer
أو الموقّت العالي الدقة، على
الصفحات التي تتضمّن عزلًا
للمواقع الإلكترونية المختلفة.
تفرض متصفّحات الويب الحديثة سياسة أداة تضمين المحتوى من مصادر خارجية (COEP). يضمن ذلك أنّ موارد المصدر الخارجي هي إما:
- الموارد المتاحة للجميع، التي تمّ طلبها بدون ملفات تعريف الارتباط
- الموارد المسموح صراحةً بمشاركتها من مصادر متعددة، من خلال مشاركة الموارد المتعددة المصادر (CORS) أو عنوان CORP
لا يمنع إعداد COEP المهاجم من استغلال Spectre. ومع ذلك، فإنه
يضمن أنّ الموارد من مصادر متعددة ليست ذات قيمة للمهاجم (عند تحميلها
بواسطة المتصفّح كمورد متاح للجميع) أو لا يُسمح بمشاركتها مع المهاجم (عند مشاركتها مع
CORP: cross-origin
).
كيف يؤثّر التخزين المؤقت لبروتوكول HTTP في Spectre؟
في حال عدم ضبط رأس Cache-Control
بشكلٍ صحيح، يمكن لمهاجم تنفيذ
هجوم. على سبيل المثال:
- يتم تخزين المورد الذي يتضمّن بيانات الاعتماد في ذاكرة التخزين المؤقت.
- يحمِّل المهاجم صفحة معزولة عن مصادر متعددة.
- يطلب المهاجم المورد مرة أخرى.
- يضبط المتصفّح
COEP:credentialless
، لذا يتم جلب المورد بدون ملفات تعريف الارتباط. ومع ذلك، قد يعرض التخزين المؤقت الاستجابة التي تتضمّن بيانات الاعتماد بدلاً من ذلك. - ويمكن للمهاجم بعد ذلك قراءة المرجع المخصّص باستخدام هجوم Spectre.
على الرغم من أنّ ذاكرة التخزين المؤقت لبروتوكول HTTP في متصفّح الويب لا تسمح بحدوث هذا النوع من الهجمات في الواقع، إلا أنّ هناك ذاكرات تخزين مؤقت إضافية خارج نطاق التحكّم المباشر في المتصفّح. وقد يؤدي ذلك إلى نجاح هذا الهجوم.
المفاهيم الخاطئة الشائعة حول ذاكرات التخزين المؤقت لبروتوكول HTTP
1. يخزّن المتصفّح الموارد فقط في ذاكرة التخزين المؤقت.
غالبًا ما تكون هناك عدة طبقات من ذاكرة التخزين المؤقت. تكون بعض ذاكرات التخزين المؤقت مخصّصة لمستخدم واحد، وبعضها مخصّص لمستخدمين متعدّدين. يتحكّم الخادم في بعض هذه الإعدادات، ويحدّدها المستخدم في بعض الحالات، ويحدّدها الوسطاء في بعض الحالات الأخرى.
- ذاكرات التخزين المؤقت للمتصفّح هذه الذاكرات المؤقتة مملوكة لمستخدم واحد ومخصّصة له، ويتم تنفيذها في متصفّح الويب الخاص به. وتعمل هذه الميزة على تحسين الأداء من خلال تجنُّب جلب الردّ نفسه عدّة مرات.
- الخادم الوكيل المحلي: قد يكون المستخدم قد ثبَّت هذا التطبيق، ولكن يمكن أيضًا أن يديره وسطاء: شركته أو مؤسسته أو مزوّد خدمة الإنترنت. غالبًا ما تخزِّن الخوادم الوكيلة المحلية استجابة واحدة لعدة مستخدمين، ما يشكّل ذاكرة تخزين مؤقت "عامة". تؤدي الخوادم الوكيلة المحلية عدة دورٍ.
- ذاكرة التخزين المؤقت لخادم المصدر أو شبكة توصيل المحتوى (CDN) يتم التحكّم في ذلك من خلال الخادم. يهدف ذاكرة التخزين المؤقت للخدمة الخادم المصدر إلى تقليل الضغط على الخدمة الخادم المصدر من خلال تخزين الردّ نفسه لمستخدِمين متعدّدين. تتشابه أهداف شبكة توصيل المحتوى (CDN)، ولكنّها منتشرة في جميع أنحاء العالم ويتم إسنادها إلى أقرب مجموعة من المستخدمين لتقليل وقت الاستجابة.

2. تمنع طبقة المقابس الآمنة الوسطاء من تخزين موارد HTTPS مؤقتًا.
يستخدم العديد من المستخدمين بشكل منتظم وكلاء مُعدّين محليًا، سواء لأغراض الوصول (مثل مشاركة اتصال مُقيَّد) أو فحص الفيروسات أو لأغراض منع فقدان البيانات. تُجري ذاكرة التخزين المؤقت الوسيطة اعتراضًا باستخدام بروتوكول أمان طبقة النقل (TLS).
غالبًا ما يتم تثبيت ذاكرة تخزين مؤقتة وسيطة على محطات عمل موظفي الشركة. تم ضبط متصفّحات الويب على الوثوق بشهادات الخادم الوكيل المحلي.
في النهاية، قد تخزِّن هذه الخوادم الوكيلة المحلية بعض موارد HTTPS.
آلية عمل ذاكرة التخزين المؤقت لبروتوكول HTTP
- يُسمح بشكل ضمني باستخدام ذاكرة التخزين المؤقت للموارد تلقائيًا.
- يتألّف مفتاح التخزين المؤقت الأساسي من عنوان URL وطريقة التخزين المؤقت. (عنوان URL، الطريقة)
- مفتاح التخزين المؤقت الثانوي هو
العناوين المضمّنة في العنوان
Vary
. يشيرVary: Cookie
إلى أنّ الردّ يعتمد علىCookie
. - يمنح العنوان
Cache-Control
إمكانية التحكّم بدقة أكبر.
اتّخاذ الإجراءات المقترَحة لموقعك الإلكتروني
على مطوّري المواقع الإلكترونية ذات القيمة العالية، والتي تشمل المواقع الإلكترونية التي تجذب عددًا كبيرًا من الزيارات والمواقع الإلكترونية التي تتفاعل مع المعلومات الشخصية التعريفية، اتّخاذ إجراءات لحماية المواقع الآن.
تحدث أكبر مخاطر عند اختلاف إمكانية الوصول إلى أحد الموارد استنادًا إلى ملفات تعريف الارتباط. قد تعرض ذاكرة التخزين المؤقت الوسيطة ردًا تم طلبه باستخدام ملفات تعريف الارتباط لطلب لم يتم طلبه في حال عدم اتّخاذ أي إجراء وقائي.
ننصحك باتّباع إحدى الخطوات التالية:
- منع الوسائط من تخزين المورد مؤقتًا اضبط
Cache-Control: private
. - اضبط مفتاح ملف تخزين مؤقت ثانوي مناسب.
إذا كان الردّ يختلف بسبب ملفات تعريف الارتباط، ما قد يحدث عندما تخزِّن ملفّ تعريف الارتباط بيانات الاعتماد، اضبط القيمة
Vary: Cookie
.
على وجه الخصوص، غيِّر السلوك التلقائي: حدِّد دائمًا Cache-Control
أو
Vary
.
اعتبارات أخرى
هناك أنواع أخرى مشابهة من الهجمات التي تستخدم ذاكرة التخزين المؤقت لبروتوكول HTTP، ولكنّها تعتمد على آلية مختلفة عن آلية عزل مصادر البيانات المختلفة. على سبيل المثال، يصف "جاك" أرشيبالد بعض الهجمات في مقالة كيفية الفوز في CORS.
وتتصدّى بعض متصفّحات الويب لهجمات حجب الخدمة هذه من خلال تقسيم ذاكرة التخزين المؤقت لبروتوكول HTTP، وذلك تبعًا لما إذا تم طلب استجابة المورد باستخدام بيانات الاعتماد أم لا. اعتبارًا من عام 2022، يقسّم Firefox ذاكرة التخزين المؤقت، في حين لا يفعل Chrome وSafari ذلك. قد يقسّم Chrome ملف التخزين المؤقت العميق في المستقبل. يُرجى العلم أنّ هذه الهجمات مختلفة ومكملة لقسمة البيانات حسب مصدر المستوى الأعلى.
حتى إذا كان من الممكن تخفيف هذه المشكلة في متصفّحات الويب، ستظل المشكلة موجودة في ذاكرات التخزين المؤقت للخادم الوكيل المحلي. لذلك، ما زلنا نقترح عليك اتّباع الاقتراحات الواردة أعلاه.
صورة العنوان مقدمة من بن باتنسون على Unsplash.