ในขณะที่การสนับสนุน Intel Shadow Stack มีมาตั้งแต่ซีพียู Tiger Lake ซึ่งเป็นส่วนหนึ่งของเทคโนโลยี Control-flow Enforcement Technology (CET) ของ Intel ในที่สุดสำหรับเคอร์เนล Linux 6.4 คุณลักษณะความปลอดภัยนี้ถูกเปิดใช้งานด้วยเคอร์เนล Linux แบบเมนไลน์
วิศวกรของ Intel Linux ทำงานเกี่ยวกับการสนับสนุน shadow stack มาเป็นเวลานานโดยเป็นส่วนหนึ่งของ CET ส่วนอื่นๆ ของ CET, Indirect Branch Tracking, อัปสตรีมกลับมาใน Linux 5.18
ฟังก์ชัน shadow stack ของ Intel สำหรับ Linux 6.4 คือการป้องกันที่อยู่ส่งกลับเพื่อป้องกันการโจมตีจากโปรแกรมที่เน้นการส่งกลับ (ROP) ซีพียู AMD รุ่นล่าสุดยังมีฟังก์ชัน Shadow Stack ที่เข้ากันได้กับการใช้งานของ Intel
Dave Hansen วิศวกร Intel Linux ที่ทำงานมานานส่ง คำขอดึง x86/shstk ในวันจันทร์เพื่อเปิดตัวฟีเจอร์นี้ในที่สุด เขาอธิบายในข้อความว่า
โปรดดึง x86/shstk สำหรับ 6.4 นี่คือการสนับสนุน Shadow Stack ที่รอคอยมานาน เป็นคุณสมบัติด้านความปลอดภัยของฮาร์ดแวร์ที่เป็นที่ต้องการอย่างสูงมาอย่างยาวนาน ทั้ง AMD และ Intel มีการใช้งาน (ที่เข้ากันได้) มีการนำเสนอในฝั่ง Intel ตั้งแต่ซีพียูรุ่นที่ 11 แต่ก็มีสะดุดบ้างเล็กน้อยระหว่างทางและค่อนข้างช้า
ส่วนที่ยากที่สุดของสิ่งทั้งหมดนี้ (IMNHO) คือชุดเงามีอยู่ในพื้นที่สีเทาของการอนุญาต shadow stack PTE เขียนตามตัวอักษรว่า Write=0 แต่คำสั่งบางอย่าง _can_ เขียนลงไป นอกจากนี้ PTE ไม่สามารถอ่านได้อย่างเดียว ดังนั้นจึงไม่สามารถเป็น COW’d ได้ พวกเขาเป็นลูกบอลที่แปลกประหลาด
สิทธิ์ Write=0,Dirty=1 PTE หมายความว่าไม่สามารถใช้บิตสกปรกได้อย่างอิสระเหมือนเมื่อก่อน ทั้งสองสิ่งนี้รวมกันเพื่อสร้างการจัดการ PTE ในปริมาณที่พอเหมาะ
สิ่งอื่นๆ ที่คุณควรทราบ:
1. มีการปั่นแกน mm ในปริมาณที่ไม่สำคัญ มีคนจำนวนมากและฉันหวังว่าแอนดรูว์จะไม่แปลกใจ สิ่งเหล่านี้เพิ่มอาร์กิวเมนต์ VMA ให้กับ pte_mkwrite() มีผู้ใช้ใหม่ในกองของ Andrew ซึ่งจะต้องได้รับการแก้ไขก่อนที่จะรวมเข้ากับแผนผัง mm
2. มีปัญหาความเข้ากันได้ของ userspace กับ shadow stacks ที่ผิดปกติ ในขณะที่การย้ายไปยังค่าใหม่ arch_prctl() ช่วยได้ เรายังคงมองเห็นสถานการณ์ที่โค้ดเก่านี้อาจกัดเราได้ แผนนี้พยายามแบนแอปที่มีปัญหาจากการใช้ shadow Stack หากมีสิ่งใดเกิดขึ้นในทางปฏิบัติ เห็นได้ชัดว่าเราควรระวังสิ่งเหล่านี้
3. ซึ่งขัดแย้งกับรหัส LAM ซึ่งมีหน่วยเป็น x86/มม. ฉันจะพูดถึงความละเอียดเมื่อฉันส่ง x86/mm.
ในขณะที่เขียน Linus Torvalds ยังไม่ได้รับการสนับสนุน Shadow Stack หรือแสดงความคิดเห็นใดๆ ในรายชื่อผู้รับจดหมาย เราจะดูว่าทุกอย่างเรียบร้อยดีหรือไม่ที่ Linus ดึงคุณลักษณะนี้สำหรับ Linux 6.4 หรือหากเขามีการจองไว้ตามความคิดเห็นด้านบน หวังว่าคุณลักษณะด้านความปลอดภัยของ Intel/AMD ที่ช่วยป้องกันการโจมตี ROP จะถูกรวมเข้าด้วยกันในที่สุด