Chromium Chronicle #9: ClusterFuzz

قسمت 9: توسط آدریان تیلور در Mountain View (دسامبر، 2019)
قسمت های قبلی

ممکن است متوجه شوید که از شما خواسته شده است که اشکالات امنیتی با اولویت بالا کشف شده توسط ClusterFuzz را برطرف کنید. چیست؟ آیا باید آن اشکالات را جدی بگیرید؟ چگونه میتوانی کمک کنی؟

نمودار جریان فازی

ClusterFuzz ورودی را به Chrome تغذیه می کند و خرابی ها را تماشا می کند. برخی از ساخت‌های Chrome دارای بررسی‌های اضافی فعال هستند، برای مثال AddressSanitizer ، که به دنبال خطاهای ایمنی حافظه می‌گردد.

ClusterFuzz اجزا را بر اساس محل خرابی تخصیص می دهد و شدت را بر اساس نوع خرابی و اینکه آیا در یک فرآیند sandbox شده اتفاق افتاده است اختصاص می دهد . به‌عنوان مثال، استفاده از پشته‌ها پس از آزاد شدن از شدت بالایی برخوردار خواهد بود، مگر اینکه در فرآیند مرورگر باشد، که در این صورت بسیار مهم است (بدون ماسه‌بازی برای محدود کردن تأثیر!):

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 ها یا از اشکالات ارسال شده خارجی تولید می کند. برخی از fuzzer ها توسط libFuzzer تغذیه می شوند که ورودی را برای افزایش پوشش کد توسعه می دهد. برخی گرامر زبان ورودی تبدیل شده به protobufs را درک می کنند. هنگامی که ClusterFuzz یک خرابی را پیدا کرد، سعی می کند تا مورد تست ورودی را به حداقل برساند و حتی برای یافتن ارتکاب متخلف دو نیم می کند . خیلی پیدا میکنه...

شما می توانید کمک کنید:

  • در مورد طول عمر اشیا و سرریز اعداد صحیح پارانویا باشید.
  • fuzzer های جدید اضافه کنید، به خصوص زمانی که داده های غیرقابل اعتماد یا IPC را پردازش می کنید (پیوندهای زیر را ببینید، اغلب کمتر از 20 خط کد).
  • رفع اشکالات گزارش شده توسط ClusterFuzz: به اکتشافی های شدت آن می توان اعتماد کرد زیرا بر اساس قابلیت بهره برداری در دنیای واقعی است : حتی یک سرریز بایت منجر به اجرای کد دلخواه توسط یک مهاجم شده است.

منابع

  • تست فاز در Chromium : چگونه می‌توان fuzzer‌های جدیدی را برای قالب‌های داده جدید به ClusterFuzz اضافه کرد، یا فقط به این دلیل که اعتبار یافتن vuln‌های عالی را می‌خواهید.
  • به‌روزرسانی برنامه Chrome Fuzzer و نحوه انجام آن : Fuzzers نیز توسط مشارکت‌کنندگان خارجی نوشته می‌شود. در مورد تجربه آنها بشنوید و بدانید که چگونه می توان شروع به کار کرد.