19/7/2019

مدونة المطور: تحليل الثغرات

في مدونة المطورين هذه سنتطرق إلى الثغرات وكيف قمنا بحلها وماذا يعني هذا الحل للثغرات المقبلة.

الإطار الزمني

11-12 مايو

  • في بداية مايو، ظهر ثلاث ثغرات في مجتمع Rainbow Six Siege؛ وهي ثغرة درع Clash وثغرة الكلايمور وثغرة الدروع القابلة للنشر. 
  • وبينما راقب الفريق الموقف في عطلة نهاية الأسبوع، كان من الواضح أن هذا الأمر كان أولويتنا.

13 مايو

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

15 مايو

  • اجتمعت قيادات مشروع Rainbow Six Siege لمناقشة الثغرات. كان علينا تحديد حجم الثغرات وتأثيرها في اللعبة من خلال البيانات.

16 مايو

  • صباح يوم 16، بعد مراجعة البيانات، قررنا تعطيل Clash والكلايمور والدروع القابلة للنشر.
  • أوقفت العديد من الفرق عملها المعتاد لتستكشف خيارات لصناعة ونشر حل قد يعطل Clash والكلايمور والدروع القابلة للنشر.
  • بدأنا في اختبار كل الحلول الممكنة عند اكتمالها. وحددنا خمسة طرق محتملة للتعامل مع المشكلة، نجحنا في إيجاد حل في محاولتنا الأخيرة بعد العديد من الإخفاقات.

17 مايو

  • بعد نجاح جولتين من الاختبارات، فعّلنا المحولات التي عطلت Clash والكلايمور والدروع القابلة للنشر كخطوة طارئة أولى.

24 مايو

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

يونيو

  • بعد عدة أسابيع، ظهرت بلاغات عن ثغرات من جديد.
  • مع ذلك، ومع وجود المحولات بالفعل، تمكنا من اتخاذ ردود أفعال سريعة تجاه البلاغات الجديدة وتعطيل Clash وIQ.
  • في ذلك الوقت، انتهى الفريق بالفعل من الإصلاح الكامل والعملي لمنع حدوث الثغرات. أظهرت الاختبارات الداخلية نتائج إيجابية ولكن كان علينا نقله إلى الخادم التجريبي أولا من أجل إجراء اختبار واسع النطاق قبل أن ننشره بشكل مباشر.

يونيو-يوليو

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

المحولات + الإجراءات الأمنية

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

قرار إزالة العملاء وتعديل الأدوات ليس سهلا. علينا احترام الوقت والمجهود الذي بذله اللاعبين في فتح هذه المحتويات في اللعبة، كما يجب أن نكون على دراية بالتأثير الكبير لإزالة آليات بارزة لأسلوب اللعب على بيئة لعب Rainbow Six Siege. مع ذلك وبالنظر للوضع، شعرنا أن انتظار إصلاح كامل ليس حلا مقبولا. كان علينا التخلص من الثغرات وتسوية أسلوب اللعب بأسرع وقت وبأفضل طريقة للاعبين.

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

ما هو الترتيب الشامل؟

كل العملاء والأجهزة والقنابل والدروع والكاميرات والجدران والنباتات في Rainbow ما هي إلا عناصر. يرسل كل عنصر في Rainbow Six Siege رسالة (حزمة) إلى الخادم عند إجراء أي حركة. على سبيل المثال، عندما تستخدم جهازك، سيرسل عميلك رسالة "أقوم بتجهيز جهازي" و"أستخدم جهازي" بالترتيب. في الوقت نفسه، يرسل جهازك أيضا رسائل إلى الخادم مثل "تم تفعيل الجهاز" و"تم استخدام الجهاز". يرسل الخادم هذه الرسائل إلى اللاعبين الآخرين في المباراة الخاصة بك.

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

كان حلنا للمشكلة، الترتيب الشامل الذي يعدل محرك الشبكة لترتيب كل الرسائل وتنظيمها. يتم إرسال الرسائل مكررة أيضا لضمان إرسال البيانات بشكل موثوق. والآن، هذا يعني أن كل مباراة ستتسلم الترتيب نفسه للرسائل وسيكون الاستنساخ متزامنا عند كل لاعب.

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

معنى ذلك بالمستقبل

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

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

زوروا القنوات الاجتماعية الأخرى

facebook icontwitter iconyoutube icontwitch icon