The Chromium Chronicle #9: ClusterFuzz

الحلقة التاسعة: أداء أدريان تايلور في ماونتن فيو (كانون الأول/ديسمبر 2019)
الحلقات السابقة

قد تجد أنه يُطلب منك إصلاح أخطاء الأمان ذات الأولوية العالية التي اكتشفتها ClusterFuzz. ما هي هذه الميزة؟ هل يجب أن تتعامل مع هذه الأخطاء على محمل الجد؟ كيف يمكنك مساعدة؟

رسم بياني انسيابي للضوء

إدخال خلاصات ClusterFuzz في Chrome ومتابعة الأعطال. بعض هذه الألعاب يتم تفعيل عمليات تحقّق إضافية في إصدارات Chrome، مثل AddressSanitizer، الذي يبحث عن أخطاء أمان الذاكرة.

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

class Foo {
  Widget* widget;
};

void Foo::Bar() {
  delete widget;
  ...
  widget->Activate();  // Bad in the renderer process, worse in the
                       // browser process. Obviously, real bugs are
                       // more subtle. Usually.

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

ويمكنك المساعدة في:

  • كن جنونيًا تجاه عمر الكائنات تجاوز عدد صحيح.
  • ويمكنك إضافة كلمات مرور جديدة، خاصةً عند معالجة بيانات غير موثوقة أو عناوين IPC غير موثوق بها (راجِع الروابط أدناه، وغالبًا < 20 سطرًا من الرمز).
  • إصلاح الأخطاء التي أبلغ عنها ClusterFuzz: يمكن الوثوق باستدلالاته الخطرة لأن أنها تستند إلى الاستغلال الحقيقي: حتى أدى تجاوز سعة البايت الواحد إلى تنفيذ عشوائي للرمز من خلال مهاجم.

الموارد

  • اختبار Fuzz في Chromium: كيفية إضافة أجهزة ضوء Fuzz جديدة إلى ClusterFuzz لتنسيقات البيانات الجديدة، أو لمجرد أنك تريد أن تنسب العثور على كائنات فضائية رائعة.
  • تحديث برنامج Chrome Fuzzer وإرشادات حول: مستخدمي Fuzzer أيضًا التي كتبها مساهمون خارجيون وتعرف على تجربتهم ومدى سهولة يمكنك الاستفادة منها للبدء.