เรานำเสนอ Kasper ซึ่งเป็นเครื่องสแกนแกดเจ็ตการดำเนินการเชิงคาดเดาสำหรับเคอร์เนล Linux Kasper ใช้นโยบายการวิเคราะห์ความเสียหายเพื่อสร้างแบบจำลองผู้โจมตีที่สามารถใช้ประโยชน์จากช่องโหว่ของซอฟต์แวร์/ฮาร์ดแวร์ตามอำเภอใจบนเส้นทางชั่วคราวเพื่อควบคุมข้อมูล (เช่น ผ่านการนวดหน่วยความจำหรือ LVI) เข้าถึงความลับ (เช่น ผ่านนอกขอบเขตหรือการใช้งานหลัง เข้าถึงได้ฟรี) และรั่วไหลความลับเหล่านี้ (เช่น ผ่านช่องทางแอบแฝงที่ใช้แคช ใช้ MDS หรือตามการโต้แย้งตามพอร์ต) แม้ว่าเคอร์เนลจะแข็งแกร่งขึ้นอย่างมากต่อการโจมตีแบบชั่วคราว แต่ Kasper ก็พบอุปกรณ์หลายร้อยรายการที่ยังไม่สามารถบรรเทาลงได้ คุณสามารถหาเอกสารฉบับเต็มได้ ที่นี่
ติดตั้งการพึ่งพา รวมถึง go-task ในฐานะผู้ดำเนินการงาน:
sudo apt install build-essential clang-11 lld-11 libelf-dev qemu-system-x86 bison flex golang libssl-dev cmake debootstrap python3-pexpect socat ninja-build ccache
sudo sh -c "$(curl -ssL https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
เริ่มต้น / อัปเดตโมดูลย่อย git (จะใช้เวลาสักครู่ในการรันครั้งแรก):
task update
สร้าง initramfs และดิสก์อิมเมจที่จะใช้กับ syzkaller:
task initramfs:create
task syzkaller:create-image
กำหนดค่าและสร้าง LLVM ด้วยการสนับสนุน Kasper:
task llvm:config llvm:build
สร้าง syzkaller ด้วยการสนับสนุนของ Kasper:
คำเตือน : เวอร์ชันของ syzkaller ที่เราใช้ใช้งานได้กับ golang 1.15 เท่านั้น (เราใช้ golang 1.15.15)!
task syzkaller:build
กำหนดค่าและสร้างเคอร์เนล Linux ที่พัฒนาโดย Kasper:
task kernel:config build kernel:bzImage
ทดสอบว่าเคอร์เนลที่มีเครื่องมือทำงานอย่างถูกต้อง:
task qemu:test
ฟัซเคอร์เนลที่มีเครื่องมือ:
task syzkaller:run-nobench
หากต้องการรวมแกดเจ็ตและดำเนินการประเมิน โปรดตรวจสอบ kasper-results