เวอร์ชันแรก (v1.0.0) ของ out-of-tree ซึ่งเป็นชุดเครื่องมือสำหรับการพัฒนาและทดสอบช่องโหว่และโมดูลเคอร์เนล Linux ได้รับการเผยแพร่
นอกแผนผังช่วยให้คุณดำเนินการตามปกติบางอย่างได้โดยอัตโนมัติเพื่อสร้างสภาพแวดล้อมสำหรับการดีบักโมดูลเคอร์เนลและการหาประโยชน์ สร้างสถิติความน่าเชื่อถือของการหาประโยชน์ และยังให้ความสามารถในการรวมเข้ากับ CI (การรวมอย่างต่อเนื่องอย่างต่อเนื่อง) ได้อย่างง่ายดาย
โมดูลเคอร์เนลหรือการใช้ประโยชน์แต่ละรายการได้รับการอธิบายโดยไฟล์ .out-of-tree.toml ซึ่งระบุข้อมูลเกี่ยวกับสภาพแวดล้อมที่ต้องการและข้อจำกัด (หากเป็นการใช้ประโยชน์) ในการดำเนินการต่อหน้าการบรรเทาความปลอดภัยบางประการ
ชุดเครื่องมือยังช่วยให้คุณระบุเวอร์ชันเคอร์เนลเฉพาะที่ได้รับผลกระทบจากช่องโหว่ (โดยใช้คำสั่ง --guess) และยังสามารถใช้เพื่อลดความซับซ้อนในการค้นหาแบบไบนารีสำหรับคอมมิตเฉพาะได้อีกด้วย
ด้านล่างนี้คือรายการการเปลี่ยนแปลงตั้งแต่เวอร์ชัน v0.2
เพิ่มโดย
-
ปรับใช้ความสามารถในการจำกัดจำนวนเคอร์เนลที่สร้างขึ้น (ออโตเจนเคอร์เนลนอกแผนผัง) (ตามคำอธิบายใน .out-of-tree.toml) และตรวจสอบการรัน (ม้านั่งนอกแผนผัง) โดยใช้ —max= พารามิเตอร์เอ็กซ์
-
คำสั่ง genall ใหม่ ซึ่งช่วยให้คุณสร้างเคอร์เนลทั้งหมดสำหรับการแจกจ่ายและเวอร์ชันเฉพาะได้
-
ขณะนี้บันทึกทั้งหมดถูกจัดเก็บไว้ในฐานข้อมูล sqlite3 ใช้คำสั่งสำหรับการสืบค้นแบบง่ายๆ ที่จำเป็นบ่อย รวมถึงการส่งออกข้อมูลไปยัง json และ markdown
-
ดำเนินการคำนวณความน่าจะเป็นของการดำเนินการที่ประสบความสำเร็จ (ตามการเปิดตัวครั้งก่อน)
-
ความสามารถในการบันทึกผลลัพธ์บิลด์ (พารามิเตอร์ --dist ใหม่สำหรับคำสั่ง pew นอกแผนผัง)
-
รองรับการสร้างข้อมูลเมตาสำหรับเคอร์เนลที่ติดตั้งบนระบบโฮสต์ รวมถึงการสร้างบนโฮสต์โดยตรง
-
รองรับเคอร์เนลของบุคคลที่สาม
-
ขณะนี้สภาพแวดล้อมการดีบักนอกแผนผังจะค้นหาสัญลักษณ์การดีบักบนระบบโฮสต์โดยอัตโนมัติ
-
เพิ่มความสามารถในการจัดการการบรรเทาความปลอดภัยด้วยการเปิด/ปิดการใช้งานแฟล็ก KASLR, SMEP, SMAP และ KPTI ระหว่างการดีบัก
-
เพิ่มพารามิเตอร์ --threads=N ให้กับคำสั่งการทดสอบ pew นอกแผนผัง ซึ่งสามารถใช้เพื่อระบุจำนวนเธรดที่จะสร้าง/รัน และทดสอบช่องโหว่และโมดูลเคอร์เนล
-
ความสามารถในการตั้งค่าแท็กที่จะบันทึกไว้ในบันทึกแล้วสามารถนำมาใช้ในการคำนวณสถิติได้
-
เพิ่มความสามารถในการระบุเวอร์ชันเคอร์เนลโดยไม่ต้องใช้นิพจน์ทั่วไป
-
คำสั่ง pack ใหม่ใช้สำหรับการทดสอบช่องโหว่และโมดูลเคอร์เนลในไดเร็กทอรีย่อยจำนวนมาก
-
ในการกำหนดค่า (.out-of-tree.toml) สำหรับช่องโหว่และโมดูลเคอร์เนล ได้มีการเพิ่มความสามารถในการปิดใช้งาน KASLR, SMEP, SMAP และ KPTI รวมทั้งระบุจำนวนคอร์และหน่วยความจำที่ต้องการ
-
ตอนนี้รูปภาพ (rootfs) จะถูกโหลดโดยอัตโนมัติในขณะที่เคอร์เนล autogen กำลังทำงานอยู่ ไม่จำเป็นต้องใช้ bootstrap อีกต่อไป
-
รองรับเคอร์เนล CentOS
การเปลี่ยนแปลง
-
ตอนนี้ หากไม่มีอิมเมจ (rootfs) สำหรับเวอร์ชันที่ต้องการของการแจกจ่าย นอกแผนผังจะพยายามใช้อิมเมจของเวอร์ชันที่ใกล้เคียงที่สุด ตัวอย่างเช่น อิมเมจ Ubuntu 18.04 สำหรับ Ubuntu 18.10
-
ตอนนี้การทดสอบโมดูลเคอร์เนลจะไม่ถือว่าล้มเหลวหากขาดหายไป (ไม่มีการทดสอบ - ไม่มีข้อผิดพลาด!)
-
ตอนนี้อยู่นอกแผนผังจะส่งคืนรหัสข้อผิดพลาดเชิงลบหากอย่างน้อยหนึ่งขั้นตอน (สร้าง เรียกใช้หรือทดสอบ) บนคอร์ใด ๆ ล้มเหลว
-
โปรเจ็กต์ได้เปลี่ยนไปใช้โมดูล Go โดยตอนนี้แนะนำให้ใช้การสร้างด้วย GO111MODULE=on
-
เพิ่มการทดสอบเริ่มต้น
-
ตอนนี้ Test.sh จะถูกใช้เป็นค่าเริ่มต้น หากแอสเซมบลีใน ${TARGET__test ไม่ได้ถูกนำไปใช้ใน Makefile
-
บันทึกเคอร์เนลจะไม่ถูกล้างอีกต่อไปก่อนที่จะรันโมดูลเคอร์เนลหรือการหาประโยชน์ การหาประโยชน์บางส่วนใช้การรั่วไหลของฐานเคอร์เนลใน dmesg เพื่อเลี่ยงผ่าน KASLR ดังนั้นการล้างข้อมูลอาจทำให้ตรรกะที่นำไปใช้ของการหาประโยชน์เสียหาย
-
ขณะนี้ qemu/kvm ใช้ความสามารถทั้งหมดของโปรเซสเซอร์โฮสต์
ลบออก
-
โรงงานเคอร์เนล ถูกลบออกอย่างสมบูรณ์เนื่องจากการใช้งานการสร้างเคอร์เนลโดยยึดตาม Dockerfiles ที่อัปเดตแบบค่อยเป็นค่อยไป
-
bootstrap ไม่ได้ทำอะไรอย่างอื่น คำสั่งจะถูกลบออกในรุ่นถัดไป
แก้ไขแล้ว
-
บน macOS ไม่จำเป็นต้องเรียกใช้ GNU coreutils อีกต่อไป
-
ไฟล์ชั่วคราวถูกย้ายไปยัง ~/.out-of-tree/tmp/ เนื่องจากข้อผิดพลาดในการติดตั้งภายใน docker ในบางระบบ
ที่มา: linux.org.ru