Các lỗ hổng trong hệ thống con eBPF của nhân Linux

Một lỗ hổng (CVE-2021-29154) đã được xác định trong hệ thống con eBPF, cho phép bạn chạy các trình xử lý để theo dõi, phân tích hoạt động của các hệ thống con và quản lý lưu lượng, được thực thi bên trong nhân Linux trong một máy ảo đặc biệt với JIT, cho phép một lỗ hổng người dùng cục bộ để đạt được việc thực thi mã của họ ở cấp kernel. Sự cố xuất hiện cho đến khi phát hành phiên bản 5.11.12 (bao gồm) và vẫn chưa được khắc phục trong các bản phân phối (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Bản sửa lỗi có sẵn dưới dạng bản vá.

Theo các nhà nghiên cứu đã xác định được lỗ hổng, họ có thể phát triển một nguyên mẫu khai thác hoạt động cho các hệ thống x32 64 và 86 bit, mà người dùng không có đặc quyền có thể sử dụng. Tuy nhiên, Red Hat lưu ý rằng mức độ nghiêm trọng của sự cố phụ thuộc vào việc người dùng có thể truy cập được lệnh gọi hệ thống eBPF hay không. Ví dụ: trên RHEL và hầu hết các bản phân phối Linux khác ở cấu hình mặc định, lỗ hổng có thể bị khai thác nếu BPF JIT được bật và người dùng có quyền CAP_SYS_ADMIN. Để khắc phục, bạn nên tắt BPF JIT bằng lệnh: echo 0 > /proc/sys/net/core/bpf_jit_enable

Sự cố xảy ra do lỗi tính toán offset cho các lệnh rẽ nhánh trong quá trình tạo mã máy của trình biên dịch JIT. Đặc biệt, khi tạo hướng dẫn rẽ nhánh, nó không tính đến việc phần bù có thể thay đổi sau khi vượt qua giai đoạn tối ưu hóa. Lỗ hổng này có thể được sử dụng để tạo mã máy bất thường và thực thi nó ở cấp kernel.

Đáng chú ý là đây không phải là lỗ hổng duy nhất trong hệ thống con eBPF gần đây. Vào cuối tháng 2020, hai lỗ hổng nữa đã được xác định trong kernel (CVE-27170-2020, CVE-27171-XNUMX), khiến có thể sử dụng eBPF để vượt qua lớp bảo vệ chống lại các lỗ hổng lớp Spectre, cho phép xác định nội dung của bộ nhớ kernel là kết quả của việc tạo điều kiện cho việc thực hiện một số hoạt động mang tính suy đoán . Cuộc tấn công Spectre yêu cầu sự hiện diện của một chuỗi lệnh nhất định trong mã đặc quyền dẫn đến việc thực thi các hướng dẫn mang tính suy đoán. Trong eBPF, người ta đã tìm ra một số cách để tạo ra các hướng dẫn như vậy thông qua các thao tác với các chương trình BPF được truyền đi để thực thi.

Lỗ hổng CVE-2020-27170 xảy ra do thao tác con trỏ trong trình xác minh BPF khiến các hoạt động suy đoán truy cập vào một khu vực bên ngoài ranh giới vùng đệm. Lỗ hổng CVE-2020-27171 có liên quan đến lỗi tràn số nguyên khi làm việc với con trỏ, dẫn đến truy cập suy đoán vào dữ liệu bên ngoài bộ đệm. Những sự cố này đã được khắc phục trong các bản phát hành kernel 5.11.8, 5.10.25, 5.4.107, 4.19.182 và 4.14.227, đồng thời cũng được đưa vào các bản cập nhật kernel cho hầu hết các bản phân phối Linux. Các nhà nghiên cứu đã chuẩn bị một nguyên mẫu khai thác cho phép người dùng không có đặc quyền trích xuất dữ liệu từ bộ nhớ kernel.

Nguồn: opennet.ru

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