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ể thấy yêu cầu khắc phục các lỗi bảo mật có mức độ ưu tiên cao mà ClusterFuzz phát hiện. Giải pháp này là gì? Bạn có nên nghiêm túc xem xét những lỗi này không? Bạn có thể giúp gì cho tôi không?

Sơ đồ quy trình mờ

Nhập nguồn cấp dữ liệu ClusterFuzz vào Chrome và đồng hồ để xử lý sự cố. Một số bản dựng Chrome đó có bật chế độ kiểm tra bổ sung, chẳng hạn như AddressSanitizer để 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à liệu sự cố đó có xảy ra trong quy trình 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ừ phi nó nằm trong quá trình trình duyệt. Trong trường hợp này, vùng nhớ khối xếp rất quan trọng (không có hộp cát để hạn chế tác động!):

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 qua các trình kiểm thử mờ hoặc từ các lỗi được gửi bên ngoài. Một số trình kiểm thử mờ được libFuzzer hỗ trợ. Hàm này sẽ phát triển đầu vào để 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 một 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í là tách đôi để tìm hoạt động xác nhận vi phạm. Công cụ này tìm thấy rất nhiều...

Bạn có thể giúp:

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

Tài nguyên