Mặc dù hỗ trợ Intel Shadow Stack đã xuất hiện kể từ CPU Tiger Lake như một phần của Công nghệ thực thi luồng điều khiển (CET) của Intel, nhưng cuối cùng đối với nhân Linux 6.4, tính năng bảo mật này đã được bật với nhân Linux chính.
Các kỹ sư của Intel Linux từ lâu đã nghiên cứu hỗ trợ ngăn xếp bóng như một phần của CET. Phần khác của CET, Theo dõi nhánh gián tiếp, đã được ngược dòng trở lại trong Linux 5.18.
Chức năng ngăn xếp bóng tối của Intel dành cho Linux 6.4 là bảo vệ địa chỉ trả về để chống lại các cuộc tấn công lập trình hướng trả về (ROP). Các CPU AMD mới nhất cũng cung cấp chức năng Shadow Stack tương thích với việc triển khai của Intel.
Kỹ sư lâu năm của Intel Linux Dave Hansen đã gửi yêu cầu kéo x86/shstk vào thứ Hai vì cuối cùng đã giới thiệu tính năng này. Anh ấy giải thích trong tin nhắn đó:
Vui lòng kéo x86/shstk cho 6.4. Đây là hỗ trợ Shadow Stack đã được chờ đợi từ lâu. Đây là tính năng bảo mật phần cứng được mong đợi nhất trong một thời gian dài. Cả AMD và Intel đều có triển khai (tương thích). Nó đã có mặt ở phía Intel kể từ các CPU thế hệ thứ 11, nhưng nó đã gặp một số trục trặc trong quá trình thực hiện và hơi chậm trễ.
Phần khó nhất của toàn bộ vấn đề này (IMNHO) là các ngăn xếp bóng tối tồn tại trong một khu vực màu xám cho phép. Một ngăn xếp bóng tối PTE có nghĩa đen là Viết=0, nhưng một số hướng dẫn _can_ ghi vào nó. Các PTE cũng không thể ở dạng chỉ đọc nên chúng không thể là COW’d. Họ là những kẻ lập dị.
Các quyền Write=0,Dirty=1 PTE cũng có nghĩa là bit bẩn không thể được sử dụng tự do như trước. Hai điều đó kết hợp với nhau để tạo ra một lượng lớn quản lý PTE.
Một vài điều nữa bạn nên biết:
1. Có một lượng khuấy lõi mm không hề nhỏ. Nó nhận được rất nhiều lời khen ngợi từ mm folks và tôi hy vọng điều đó không gây ngạc nhiên cho Andrew. Chúng thêm đối số VMA vào pte_mkwrite(). Có một người dùng mới trong đống của Andrew sẽ cần được sửa chữa trước khi người dùng này được hợp nhất với cây mm.
2. Đã có một số vấn đề bất thường về khả năng tương thích không gian người dùng với ngăn xếp bóng tối. Mặc dù việc chuyển sang các giá trị arch_prctl() mới đã giúp ích, nhưng chúng tôi vẫn có thể hình dung các tình huống mà mã cũ này có thể cắn chúng tôi. Kế hoạch là cố gắng cấm bất kỳ ứng dụng có vấn đề nào sử dụng ngăn xếp bóng tối nếu có bất kỳ điều gì xảy ra trong thực tế. Rõ ràng chúng ta nên cảnh giác với những điều này.
3. Điều này mâu thuẫn với mã LAM sắp có ở x86/mm. Tôi sẽ thảo luận về độ phân giải khi tôi gửi x86/mm.
Khi viết bài này, Linus Torvalds vẫn chưa nhận hỗ trợ Shadow Stack hoặc đưa ra bất kỳ nhận xét nào về danh sách gửi thư. Chúng ta sẽ xem liệu tất cả có ổn không khi Linus sử dụng tính năng này cho Linux 6.4 hoặc liệu anh ấy có đặt trước các nhận xét ở trên hay không. Hy vọng rằng tính năng bảo mật Intel/AMD này để giúp chống lại các cuộc tấn công ROP cuối cùng sẽ được hợp nhất.