พร้อมกับ โครงสร้างพื้นฐานแบบสนิมสำหรับคำขอดึง Linux 6.1 การดึงล่วงหน้าอีกรายการหนึ่งที่ส่งโดยผู้ดูแลเคอร์เนล Kees Cook สำหรับ Linux 6.1 คือการเปิดตัวการนำ”CFI”ของ Control Flow Integrity มาใช้สำหรับเคอร์เนล Linux เพื่อแทนที่โค้ดเดิมที่น้อยกว่าอุดมคติ

เคอร์เนล Linux รองรับการใช้งาน CFI ของ Clang ซึ่งขึ้นอยู่กับการสนับสนุน Clang LTO (Link Time Optimization) ที่เปิดใช้งานท่ามกลางคำเตือนอื่นๆ ในการสนับสนุน การใช้งาน Clang CFI นี้ถูกแทนที่ด้วยการใช้งาน”KCFI”ที่ใหม่กว่าของ Clang ที่ออกแบบมาสำหรับการใช้งานเคอร์เนลในใจและแก้ไขปัญหาปวดหัวก่อนหน้าเกี่ยวกับการใช้งาน Clang CFI ที่มีอยู่ คาดว่าจะรองรับ GCC สำหรับ KCFI ในอนาคต

จากการสนับสนุน Clang KCFI ใหม่สำหรับ Linux 6.1 Kees Cook สรุปได้ดังนี้:

สิ่งนี้มาแทนที่การรองรับก่อนหน้านี้สำหรับเครื่องมือวัด Control Flow Integrity (CFI) มาตรฐานของ Clang ซึ่งต้องมีเงื่อนไขพิเศษมากมาย (เช่น LTO) และวิธีแก้ไข การใช้งานในปัจจุบัน (“Kernel CFI”) นั้นเฉพาะสำหรับ C ซึ่งได้รับการออกแบบโดยตรงสำหรับเคอร์เนล Linux และใช้ประโยชน์จากคุณสมบัติทางสถาปัตยกรรม เช่น IBT ของ x86 ซีรีส์นี้ยังคงรองรับ arm64 และเพิ่มการรองรับ x86 คาดว่าจะรองรับสถาปัตยกรรม”ทั่วไป”เพิ่มเติมเร็วๆ นี้

รายละเอียดเพิ่มเติมผ่านทาง KCFI คำขอดึงที่ส่งเพื่อเตรียมพร้อมสำหรับหน้าต่างผสาน Linux 6.1 ที่ใกล้เข้ามา

KCFI ของ Clang (-fsanitize=kcf) เป็นรูปแบบการควบคุมความสมบูรณ์ของกระแสการควบคุมที่ส่งต่อสำหรับการโทรทางอ้อม KCFI ได้รับการออกแบบมาสำหรับโค้ดระดับต่ำ และน้ำยาฆ่าเชื้อนี้ได้รับการปรับปรุงใน LLVM ตั้งแต่ต้นปี การสนับสนุน KCFI นี้นำโดย Google ในช่วงหลายเดือนที่ผ่านมา

Categories: IT Info