CVE-2023-2163: Phát hiện và khắc phục lỗ hổng eBPF trong nhân Linux
Bối cảnh
- eBPF là công nghệ cho phép mở rộng chức năng của nhân Linux tại thời gian chạy mà không cần viết các mô-đun nhân phức tạp.
- Các chương trình eBPF được thực thi khi những sự kiện cụ thể xảy ra và phải được kiểm tra tính an toàn trước khi được nạp.
- Bộ xác minh (verifier) được cấu thành từ mã phức tạp, và đã phát hiện nhiều lỗ hổng trong đó.
- Google đã phát triển Buzzer, một fuzzer tự động kiểm toán bộ xác minh eBPF.
Chiến lược số học con trỏ của Buzzer
- Buzzer là một fuzzer mới dành cho eBPF, sử dụng chiến lược nhằm kích hoạt các lỗi logic.
- Chiến lược số học con trỏ gồm các bước sau:
- Tạo phần đầu để khởi tạo các thanh ghi bằng giá trị ngẫu nhiên
- Tạo các lệnh số học và nhảy ngẫu nhiên
- Chọn một thanh ghi ngẫu nhiên và thực hiện phép cộng với con trỏ tới một phần tử của eBPF map
- Ghi một giá trị ma thuật vào phần tử đó
Cắt tỉa đường đi trong eBPF
- Bộ xác minh eBPF có vai trò kiểm tra liệu chương trình có thể chạy an toàn hay không.
- Khi có câu lệnh điều kiện, nó mô phỏng mọi trạng thái có thể xảy ra.
- Khi có nhiều lệnh nhảy có điều kiện, nó sử dụng chiến lược cắt tỉa đường đi để cải thiện hiệu năng.
Lỗi
- CVE-2023-2163 đưa vào khái niệm "theo dõi chính xác" để làm cho việc cắt tỉa đường đi hiệu quả hơn.
- Lỗi phát sinh do bỏ qua việc thanh ghi
r9 góp phần vào tính chính xác của r6.
Khai thác
- Có thể lợi dụng CVE-2023-2163 để đạt được khả năng đọc/ghi tùy ý, từ đó thực hiện LPE và thoát khỏi container.
- Các bước chính:
- Đạt được khả năng đọc/ghi tùy ý
- Tìm thông tin xác thực của tiến trình và nâng quyền
Khắc phục
- Để khắc phục CVE-2023-2163, các thanh ghi không chính xác được đánh dấu là chính xác trong những phép toán ảnh hưởng tới các thanh ghi chính xác.
- Tác động tới hiệu năng vẫn chưa rõ ràng, nhưng không phát hiện thêm vấn đề nào khác.
Ý tưởng trong tương lai
- Việc bảo đảm an toàn cho các chương trình eBPF là khó khăn do độ phức tạp của quá trình xác minh.
- Google đang giải quyết vấn đề này thông qua Buzzer và hoan nghênh sự đóng góp từ cộng đồng mã nguồn mở.
Tóm tắt của GN⁺
- Bài viết này giải thích quá trình phát hiện và khắc phục lỗ hổng trong bộ xác minh eBPF.
- eBPF là công nghệ quan trọng trong nghiên cứu bảo mật nhân, nhưng việc bảo đảm an toàn cho nó không hề dễ.
- Google đã phát triển một fuzzer tên là Buzzer để tự động kiểm toán các lỗ hổng trong bộ xác minh eBPF.
- Bài viết hữu ích cho các nhà nghiên cứu bảo mật và nhà phát triển, đồng thời giúp ích trong việc bảo đảm an toàn cho các hệ thống phức tạp như eBPF.
- Các dự án có chức năng tương tự gồm những công cụ fuzzer khác liên quan đến eBPF.
Chưa có bình luận nào.