Chromium Chronicle #9: ClusterFuzz

ตอนที่ 9: โดย Adrian Taylor ใน Mountain View (ธันวาคม 2019)
ตอนก่อนหน้า

คุณอาจพบว่าระบบขอให้คุณแก้ไขข้อบกพร่องด้านความปลอดภัยที่มีลําดับความสําคัญสูงที่ค้นพบ ClusterFuzz สิ่งนี้คืออะไร คุณควรให้ความสำคัญกับข้อบกพร่องเหล่านี้อย่างจริงจังไหม คุณจะ ความช่วยเหลือ

โฟลว์ชาร์ตแบบ Fuzzing

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 พบข้อขัดข้อง ก็จะพยายาม ลดกรอบการทดสอบอินพุตและแบ่งครึ่งเพื่อค้นหาการกระทำที่เป็นการละเมิด พบอะไรมากมาย...

คุณช่วยในเรื่องต่อไปนี้ได้

  • หวาดระแวงเกี่ยวกับอายุการใช้งานของวัตถุและ เกินจำนวนเต็ม
  • เพิ่ม Fuzzer ใหม่ โดยเฉพาะเมื่อคุณประมวลผลข้อมูลที่ไม่น่าเชื่อถือหรือ IPC (โปรดดู ลิงก์ด้านล่าง มักจะ < โค้ด 20 บรรทัด)
  • แก้ไขข้อบกพร่องที่รายงานใน ClusterFuzz: การประเมินระดับความรุนแรงของปัญหานี้สามารถเชื่อถือได้เนื่องจาก เมื่อพิจารณาจากการแสวงหาประโยชน์ในโลกแห่งความเป็นจริง: แม้แต่ Single Byte Over ช่วยให้เรียกใช้โค้ดที่กำหนดเอง ผู้โจมตี

แหล่งข้อมูล

  • การทดสอบ Fazz ใน Chromium: วิธีเพิ่ม Fuzzer ใหม่ลงใน ClusterFuzz สำหรับรูปแบบข้อมูลใหม่ หรือเพียงเพราะคุณต้องการเครดิต ค้นหาคำหยาบคายที่น่ากลัว
  • การอัปเดตโปรแกรม Chrome Fuzzer และฮาวทู: Fuzzer ยังมีผล ที่เขียนโดยผู้เขียนภายนอก ฟังประสบการณ์ของพวกเขาและความสะดวก ก็สามารถเริ่มต้นใช้งานได้