ตอนที่ 9: โดย Adrian Taylor ใน Mountain View (ธันวาคม 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 พบข้อขัดข้อง ก็จะพยายาม
ลดกรอบการทดสอบอินพุตและแบ่งครึ่งเพื่อค้นหาการกระทำที่เป็นการละเมิด
พบอะไรมากมาย...
คุณช่วยในเรื่องต่อไปนี้ได้
- หวาดระแวงเกี่ยวกับอายุการใช้งานของวัตถุและ เกินจำนวนเต็ม
- เพิ่ม Fuzzer ใหม่ โดยเฉพาะเมื่อคุณประมวลผลข้อมูลที่ไม่น่าเชื่อถือหรือ IPC (โปรดดู ลิงก์ด้านล่าง มักจะ < โค้ด 20 บรรทัด)
- แก้ไขข้อบกพร่องที่รายงานใน ClusterFuzz: การประเมินระดับความรุนแรงของปัญหานี้สามารถเชื่อถือได้เนื่องจาก เมื่อพิจารณาจากการแสวงหาประโยชน์ในโลกแห่งความเป็นจริง: แม้แต่ Single Byte Over ช่วยให้เรียกใช้โค้ดที่กำหนดเอง ผู้โจมตี
แหล่งข้อมูล
- การทดสอบ Fazz ใน Chromium: วิธีเพิ่ม Fuzzer ใหม่ลงใน ClusterFuzz สำหรับรูปแบบข้อมูลใหม่ หรือเพียงเพราะคุณต้องการเครดิต ค้นหาคำหยาบคายที่น่ากลัว
- การอัปเดตโปรแกรม Chrome Fuzzer และฮาวทู: Fuzzer ยังมีผล ที่เขียนโดยผู้เขียนภายนอก ฟังประสบการณ์ของพวกเขาและความสะดวก ก็สามารถเริ่มต้นใช้งานได้