الوصول إلى الشبكة الخاصة: تقديم الطلبات المسبقة

Titouan Rigoudy
Titouan Rigoudy
Yifan Luo
Yifan Luo

آخر الأخبار

  • ‫7 تموز (يوليو) 2022: تم تعديل الحالة الحالية وإضافة تعريف لمساحة عنوان IP.
  • ‫27 نيسان (أبريل) 2022: إعلان بشأن تعديل المخطط الزمني
  • 7 آذار (مارس) 2022: الإعلان عن العودة إلى الإصدار السابق بعد اكتشاف المشاكل في Chrome 98.

مقدمة

سيتوقف Chrome نهائيًا عن السماح بالوصول المباشر إلى نقاط نهاية الشبكة الخاصة من المواقع الإلكترونية العامة كجزء من مواصفات الوصول إلى الشبكة الخاصة (PNA).

سيبدأ Chrome بإرسال طلب التحقّق من CORS قبل أي طلب شبكة خاصة لمورد فرعي، ما يطلب إذنًا صريحًا من الخادم المستهدَف. سيحمل طلب التحقّق من الصحة هذا عنوانًا جديدًا، وهو Access-Control-Request-Private-Network: true، ويجب أن يحمل الاستجابة له عنوانًا متوافقًا، وهو Access-Control-Allow-Private-Network: true.

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

خطة الطرح

سيطرح Chrome هذا التغيير على مرحلتين لإتاحة الوقت للمواقع الإلكترونية لكي تلاحظ التغيير وتتكيّف معه وفقًا لذلك.

  1. في الإصدار 104 من Chrome:

    • تجارب Chrome عن طريق إرسال طلبات الاختبار المسبق قبل طلبات الموارد الفرعية للشبكة الخاصة.
    • لا تعرض حالات تعذُّر الفحص المُسبَق سوى تحذيرات في "أدوات مطوّري البرامج"، بدون أن تؤثر على طلبات الشبكة الخاصة.
    • يجمع Chrome بيانات التوافق ويتواصل مع أكبر المواقع الإلكترونية المتأثّرة.
    • نتوقع أن يكون هذا الإجراء متوافقًا على نطاق واسع مع المواقع الإلكترونية الحالية.
  2. في الإصدار 113 من Chrome على أقرب تقدير:

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

ما هو الوصول إلى الشبكة الخاصة (PNA)؟

الوصول الخاص إلى الشبكة (المعروف سابقًا باسم CORS-RFC1918) يحدّ من قدرة المواقع الإلكترونية على إرسال طلبات إلى خوادم على شبكات خاصة

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

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

كيفية تصنيف PNA لعناوين IP وتحديد شبكة خاصة

يتم تصنيف عناوين IP إلى ثلاث مساحات عناوين IP: - public - private - local

تحتوي مساحة عناوين IP المحلية على عناوين IP التي تكون إما عناوين IPv4 للرجوع إلى الجهاز نفسه (127.0.0.0/8) المحدّدة في القسم 3.2.1.3 من RFC1122 أو عناوين IPv6 للرجوع إلى الجهاز نفسه (::1/128) المحدّدة في القسم 2.5.3 من RFC4291.

تحتوي مساحة عناوين IP الخاصة على عناوين IP ذات معنى فقط داخل الشبكة الحالية، بما في ذلك 10.0.0.0/8 و172.16.0.0/12 و 192.168.0.0/16 المحدّدة في RFC1918، والعناوين المحلية الخاصة بالربط 169.254.0.0/16 المحدّدة في RFC3927، وعناوين البث الفريد لبروتوكول IPv6 المحلي fc00::/7 المحدّدة في RFC4193، وعناوين البث الفريد لبروتوكول IPv6 المحلية الخاصة بالربط fe80::/10 المحدّدة في القسم 2.5.6 من RFC4291 وعناوين IPv6 المُعاد توجيهها إلى IPv4 حيث يكون عنوان IPv4 المُعاد توجيهه خاصًا.

تحتوي مساحة عناوين IP العامة على جميع العناوين الأخرى غير المذكورة سابقًا.

يُعدّ عنوان IP المحلي أكثر خصوصية من عنوان IP الخاص الذي يُعدّ بدوره أكثر خصوصية من عنوان IP العام.

تكون الطلبات خاصة عندما ترسل شبكة أكثر توفّرًا طلبًا إلى
   شبكة أقل توفّرًا.
العلاقة بين الشبكات العامة والخاصة والمحلية في الوصول إلى الشبكة الخاصة (CORS-RFC1918)

اطّلِع على مزيد من المعلومات على نطلب ملاحظاتك بشأن المشاكل المتعلقة بمشاركة موارد عناوين URL التابعة للنطاق نفسه (CORS) على الشبكات الخاصة (RFC1918).

الطلبات التمهيدية

الخلفية

طلبات التحقّق من الإعداد هي آلية أدخلها معيار مشاركة الموارد المشتركة المنشأ (CORS) ويُستخدَم هذه الآلية لطلب الإذن من موقع إلكتروني مستهدَف قبل إرسال طلب HTTP إليه قد يكون له آثار جانبية. يضمن ذلك فهم الخادم المستهدَف لبروتوكول CORS ويقلل بشكل كبير من خطر هجمات CSRF.

يتم إرسال طلب الإذن باعتباره طلب HTTP OPTIONS مع عناوين طلبات CORS محدّدة تصف طلب HTTP القادم. يجب أن تتضمّن الاستجابة عناوين استجابة CORSمحددة توافق صراحةً على الطلب القادم.

مخطّط تسلسل يمثّل الفحص المُسبَق لبروتوكول مشاركة الموارد المشتركة المنشأ (CORS) يتم إرسال طلب HTTP OPTIONS إلى الهدف، ويعرض النتيجة 200 OK. بعد ذلك، يتم إرسال عنوان طلب CORS
   الذي يعرض عنوان استجابة CORS.

الميزات الجديدة في ميزة "الوصول إلى الشبكة الخاصة"

تمّ تقديم زوج جديد من عناوين الطلب والاستجابة لطلبات التحقّق من التوافق:

  • تم ضبط Access-Control-Request-Private-Network: true على جميع طلبات التحقّق من الصحة لـ PNA
  • يجب ضبط Access-Control-Allow-Private-Network: true على كل استجابات طلب PNA المبدئي.

يتم إرسال طلبات الطلب المبدئي بخصوص PNA لجميع طلبات الشبكة الخاصة، بغض النظر عن طريقة الطلب والوضع. ويتم إرسالها قبل الطلبات في وضع cors بالإضافة إلى وضع no-cors وجميع الأوضاع الأخرى. ويعود سبب ذلك إلى أنّه يمكن استخدام جميع طلبات الشبكة الخاصة في هجمات CSRF، بغض النظر عن وضع الطلب وما إذا كانت محتويات الردّ متاحة للمُشغِّل أم لا.

يتم أيضًا إرسال طلبات الطلب المسبق لبيانات PNA إذا كان عنوان IP المستهدفًا أكثر خصوصية من بادئ التشغيل. يختلف ذلك عن طلبات CORS العادية، حيث تكون طلبات الفحص المُسبَق مخصّصة فقط لطلبات مصادر مختلفة. تحمي طلبات الطلب المسبق لطلبات المصدر نفسه من هجمات إعادة ربط نظام أسماء النطاقات.

أمثلة

يعتمد السلوك الملحوظ على وضع الطلب.

وضع عدم سياسة مشاركة الموارد المتعددة المصادر (CORS)

لنفترض أنّ https://foo.example/index.html تضمّن <img src="https://bar.example/cat.gif" alt="dancing cat"/>، و bar.example يُحدّد على أنّه 192.168.1.1، وهو عنوان IP خاص وفقًا لمعيار RFC 1918.

يُرسِل Chrome أولاً طلب التحقّق من الصحة:

HTTP/1.1 OPTIONS /cat.gif
Origin: https://foo.example
Access-Control-Request-Private-Network: true

لنجاح هذا الطلب، يجب أن يستجيب الخادم بما يلي:

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Private-Network: true

بعد ذلك، سيرسل Chrome الطلب الفعلي:

HTTP/1.1 GET /cat.gif
...

يمكن للخادم الردّ عليها بشكلٍ طبيعي.

وضع سياسة مشاركة الموارد المتعددة المصادر (CORS)

لنفترض أنّ https://foo.example/index.html ينفِّذ التعليمة البرمجية التالية:

await fetch('https://bar.example/delete-everything', {
  method: 'PUT',
  credentials: 'include',
})

مرة أخرى، لنفترض أنّ bar.example يُحيل إلى 192.168.1.1.

يُرسِل Chrome أولاً طلب التحقّق من الصحة:

HTTP/1.1 OPTIONS /delete-everything
Origin: https://foo.example
Access-Control-Request-Method: PUT
Access-Control-Request-Credentials: true
Access-Control-Request-Private-Network: true

لكي ينجح هذا الطلب، يجب أن يردّ الخادم بما يلي:

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Methods: PUT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Private-Network: true

بعد ذلك، سيرسل Chrome الطلب الفعلي:

HTTP/1.1 PUT /delete-everything
Origin: https://foo.example

يمكن للخادم الردّ على الطلبات وفقًا لقواعد CORS المعتادة:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://foo.example

كيفية معرفة ما إذا كان موقعك الإلكتروني متأثرًا

بدءًا من الإصدار 104 من Chrome، إذا تم رصد طلب شبكة خاصة، سيتم إرسال طلب فحص مبدئي قبله. إذا تعذّر طلب التحقّق من التوافق هذا، سيظلّ الطلب النهائي مُرسَلاً، ولكن سيظهر تحذير في لوحة المشاكل في "أدوات المطوّر".

تحذير بشأن طلب التحقّق من التوافق تعذّر إكماله في لوحة &quot;مشاكل أدوات المطوّرين&quot; ينصّ ذلك على ما يلي:
   التأكّد من أنّ طلبات الوصول إلى الشبكة الخاصة لا يتم إجراؤها إلا على الموارد التي تسمح بها،
   بالإضافة إلى تفاصيل عن الطلب المحدّد والموارد المتأثرة المدرَجة

يمكن أيضًا عرض طلبات التحقّق من التوافق المتأثّرة وتحديد المشاكل فيها في لوحة الشبكة:

يؤدي طلب التحقّق من الصحة الذي تعذّر إكماله في لوحة &quot;الشبكة&quot; في DevTools للموقع الإلكتروني localhost
   إلى ظهور الحالة 501.

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

تعذّر إرسال طلب أوّلي غير صحيح قبل إجراء اختبار أوّلي ناجح في لوحة شبكة أدوات مطوّري البرامج.

لمراجعة ما يحدث في حال فرض نجاح عملية التحقّق من التشغيل، يمكنك تمرير الوسيطة التالية لسطر الأوامر، بدءًا من الإصدار 98 من Chrome:

--enable-features=PrivateNetworkAccessRespectPreflightResults

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

ما يجب فعله إذا كان موقعك الإلكتروني متأثرًا

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

يتوفّر لك حلّان:

  1. معالجة طلبات التحقّق من الصحة من جهة الخادم
  2. إيقاف عمليات التحقّق من عناوين IP الخاصة بالعملاء باستخدام سياسات المؤسسة

معالجة طلبات الفحص المُسبَق من جهة الخادم

عدِّل الخادم المستهدَف لأي عمليات جلب متأثرة لمعالجة طلبات التحقّق من الإعداد المسبق لـ PNA. أولاً، عليك توفير إمكانية استخدام طلبات التحقّق من CORS العادية في ملف تعريف الارتباط على المسارات المتأثرة. بعد ذلك، أضِف إمكانية استخدام عنوانَي استجابة جديدَين.

عندما يتلقّى خادمك طلبًا تمهيديًا (طلب OPTIONS يتضمّن عناوين CORS)، يجب أن يتحقّق الخادم من توفّر عنوان Access-Control-Request-Private-Network: true. إذا كان هذا الرأس موجودًا في الطلب، يجب أن يفحص الخادم رأس Origin و مسار الطلب بالإضافة إلى أي معلومات أخرى ذات صلة (مثل Access-Control-Request-Headers) للتأكّد من أنّه من الآمن السماح بالطلب. وعادةً ما يجب السماح بالوصول إلى مصدر واحد تحت سيطرتك.

بعد أن يقرر خادمك السماح بالطلب، من المفترض أن يستجيب بالرمز204 No Content (أو 200 OK) مع رؤوس CORS اللازمة وعنوان PNA الجديد. وتشمل هذه العناوين Access-Control-Allow-Origin و Access-Control-Allow-Private-Network: true، بالإضافة إلى عناوين أخرى حسب الحاجة.

يمكنك الرجوع إلى الأمثلة للاطّلاع على السيناريوهات الملموسة.

إيقاف عمليات التحقّق من الوصول إلى الشبكة الخاصة باستخدام سياسات المؤسسة

إذا كان لديك تحكّم إداري في المستخدمين، يمكنك إيقاف عمليات التحقّق من "الوصول إلى الشبكة الخاصة" باستخدام أي من السياستَين التاليتَين:

لمزيد من المعلومات، يُرجى الاطّلاع على التعرّف على إدارة سياسات Chrome.

أرسل لنا تعليقاتك

إذا كنت تستضيف موقعًا إلكترونيًا ضمن شبكة خاصة تتوقّع طلبات من الشبكات العامة، يهتم فريق Chrome بملاحظاتك وحالات الاستخدام. يُرجى إعلامنا عن طريق إرسال مشكلة في Chromium على crbug.com وضبط المكوِّن على Blink>SecurityFeature>CORS>PrivateNetworkAccess.

الخطوات التالية

في الخطوة التالية، سيوسّع Chrome عمليات التحقّق من الوصول إلى الشبكة الخاصة ليشمل عمال الويب: عمال مخصّصون وعمال مشترَكون وعمال خدمات. نهدف بشكلٍ مؤقت إلى بدء عرض التحذيرات في الإصدار 107 من Chrome.

بعد ذلك، سيوسّع Chrome عمليات التحقّق من الوصول إلى الشبكة الخاصة لتشمل عمليات التنقّل، بما في ذلك إطارات iframe والنوافذ المنبثقة. ونسعى مبدئيًا إلى بدء عرض التحذيرات في الإصدار 108 من Chrome.

وفي كلتا الحالتَين، سننفّذ الطرح على مراحل بشكل حذر، لمنح مطوّري الويب الوقت للتكيّف مع التغييرات وتقدير مخاطر التوافق.

شكر وتقدير

صورة الغلاف مقدمة من مارك أولسن على Unsplash.