Chromium Chronicle #9: ClusterFuzz

Tập 9: của Adrian Taylor ở Mountain View (Tháng 12 năm 2019)
Các tập trước

Bạn có thể được yêu cầu khắc phục các lỗi bảo mật có mức độ ưu tiên cao do ClusterFuzz. Giải pháp này là gì? Bạn có nên nghiêm túc xử lý những lỗi đó không? Làm cách nào để không?

Biểu đồ luồng mờ

ClusterFuzz cung cấp dữ liệu đầu vào cho Chrome và theo dõi các sự cố. Một vài trong số đó Các bản dựng Chrome được bật các chế độ kiểm tra bổ sung, ví dụ: AddressSanitizer, giúp tìm lỗi về an toàn của bộ nhớ.

ClusterFuzz chỉ định các thành phần dựa trên vị trí sự cố và chỉ định mức độ nghiêm trọng dựa trên loại sự cố và việc liệu sự cố đó có xảy ra trong môi trường hộp cát hay không . Ví dụ: một vùng nhớ khối xếp use-after-free sẽ có mức độ nghiêm trọng cao, trừ khi dữ liệu đó nằm trong tiến trình của trình duyệt, trong trường hợp đó thì rất quan trọng (không có hộp cát nào để giới hạn có ảnh hưởng gì!):

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 tạo dữ liệu đầu vào từ các trình kiểm thử mờ (fuzzer) hoặc từ các lỗi được gửi bên ngoài. Một số bộ kiểm thử mờ được libFuzzer hỗ trợ, phát triển dữ liệu đầu vào thành tăng mức độ sử dụng mã. Một số người hiểu được ngữ pháp của ngôn ngữ nhập được chuyển đổi thành protobufs. Sau khi tìm thấy sự cố, ClusterFuzz sẽ cố gắng giảm thiểu trường hợp kiểm thử đầu vào và thậm chí chia đôi để tìm cam kết vi phạm. Công cụ này tìm thấy rất nhiều...

Bạn có thể trợ giúp:

  • Hoang tưởng về vòng đời của đối tượng và bị tràn số nguyên.
  • Thêm bộ kiểm thử mờ mới, đặc biệt là khi bạn xử lý dữ liệu hoặc IPC không đáng tin cậy (xem bên dưới, thường < 20 dòng mã).
  • Sửa các lỗi do ClusterFuzz báo cáo: thông tin phỏng đoán mức độ nghiêm trọng có thể đáng tin cậy vì đều dựa trên khả năng khai thác trong thế giới thực: Ngay cả khi Tình trạng tràn một byte đã dẫn đến việc thực thi mã tuỳ ý bằng kẻ tấn công.

Tài nguyên