Các bản vá được giới thiệu để ngẫu nhiên hóa địa chỉ ngăn xếp nhân Linux cho các cuộc gọi hệ thống

Kees Cook, cựu quản trị viên hệ thống của kernel.org và lãnh đạo Nhóm bảo mật Ubuntu, hiện đang làm việc tại Google về bảo mật Android và ChromeOS, đã xuất bản một bộ bản vá để ngẫu nhiên hóa các chênh lệch trong ngăn xếp kernel khi xử lý lệnh gọi hệ thống. Các bản vá cải thiện tính bảo mật của kernel bằng cách thay đổi vị trí của ngăn xếp, khiến các cuộc tấn công vào ngăn xếp trở nên khó khăn hơn và ít thành công hơn. Việc triển khai ban đầu hỗ trợ bộ xử lý ARM64 và x86/x86_64.

Ý tưởng ban đầu cho bản vá thuộc về dự án PaX RANDKSTACK. Vào năm 2019, Elena Reshetova, một kỹ sư của Intel, đã cố gắng tạo ra một triển khai ý tưởng này phù hợp để đưa vào nhân Linux chính. Sau đó, sáng kiến ​​này được thực hiện bởi Kees Cook, người đã trình bày một cách triển khai phù hợp với phiên bản chính của kernel. Các bản vá dự kiến ​​sẽ được đưa vào như một phần của bản phát hành 5.13. Chế độ này sẽ bị tắt theo mặc định. Để kích hoạt nó, tham số dòng lệnh kernel “randomize_kstack_offset=on/off” và cài đặt CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT được đề xuất. Chi phí cho việc kích hoạt chế độ này được ước tính là làm giảm hiệu suất khoảng 1%.

Bản chất của biện pháp bảo vệ được đề xuất là chọn độ lệch ngăn xếp ngẫu nhiên cho mỗi lệnh gọi hệ thống, điều này gây khó khăn cho việc xác định bố cục ngăn xếp trong bộ nhớ, ngay cả sau khi nhận được dữ liệu địa chỉ, vì lệnh gọi hệ thống tiếp theo sẽ thay đổi địa chỉ cơ sở của ngăn xếp. Không giống như triển khai PaX RANDKSTACK, trong các bản vá được đề xuất đưa vào kernel, việc ngẫu nhiên hóa không được thực hiện ở giai đoạn ban đầu (cpu_current_top_of_stack), mà sau khi thiết lập cấu trúc pt_regs, khiến không thể sử dụng các phương pháp dựa trên ptrace để xác định độ lệch ngẫu nhiên trong một cuộc gọi hệ thống kéo dài.

Nguồn: opennet.ru

Thêm một lời nhận xét