Lỗ hổng trong nhân Linux bị khai thác từ xa qua Bluetooth

Một lỗ hổng (CVE-2022-42896) đã được xác định trong nhân Linux. Lỗ hổng này có thể được sử dụng để tổ chức thực thi mã từ xa ở cấp nhân bằng cách gửi gói L2CAP được thiết kế đặc biệt qua Bluetooth. Ngoài ra, một vấn đề tương tự khác đã được xác định (CVE-2022-42895) trong trình xử lý L2CAP, có thể dẫn đến rò rỉ nội dung bộ nhớ kernel trong các gói có thông tin cấu hình. Lỗ hổng đầu tiên xuất hiện từ tháng 2014 năm 3.16 (kernel 2011) và lỗ hổng thứ hai kể từ tháng 3.0 năm 6.1.0 (kernel 6.0.8). Các lỗ hổng đã được xử lý trong các bản phát hành nhân Linux 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154, 5.15.78, XNUMX và XNUMX. Bạn có thể theo dõi các bản sửa lỗi trong các bản phân phối trên các trang sau: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Để chứng minh khả năng thực hiện một cuộc tấn công từ xa, các khai thác nguyên mẫu đã được xuất bản hoạt động trên Ubuntu 22.04. Để thực hiện cuộc tấn công, kẻ tấn công phải ở trong phạm vi Bluetooth—không cần ghép nối trước nhưng Bluetooth phải hoạt động trên máy tính. Đối với một cuộc tấn công, chỉ cần biết địa chỉ MAC của thiết bị nạn nhân là đủ, địa chỉ này có thể được xác định bằng cách đánh hơi hoặc trên một số thiết bị, được tính toán dựa trên địa chỉ MAC của Wi-Fi.

Lỗ hổng đầu tiên (CVE-2022-42896) xảy ra do truy cập vào vùng bộ nhớ đã được giải phóng (use-after-free) khi triển khai các hàm l2cap_connect và l2cap_le_connect_req - sau khi tạo kênh thông qua lệnh gọi lại new_connection, khóa chưa được đặt đối với nó, nhưng bộ hẹn giờ đã được đặt (__set_chan_timer ), khi hết thời gian chờ, gọi hàm l2cap_chan_timeout và xóa kênh mà không kiểm tra việc hoàn thành công việc với kênh trong hàm l2cap_le_connect*.

Thời gian chờ mặc định là 40 giây và người ta cho rằng điều kiện chạy đua không thể xảy ra với độ trễ như vậy, nhưng hóa ra là do một lỗi khác trong trình xử lý SMP, nên có thể thực hiện được lệnh gọi tức thời tới bộ hẹn giờ và đạt được điều kiện của cuộc đua. Sự cố trong l2cap_le_connect_req có thể dẫn đến rò rỉ bộ nhớ kernel và trong l2cap_connect, nó có thể dẫn đến ghi đè nội dung của bộ nhớ và thực thi mã của bộ nhớ. Kiểu tấn công đầu tiên có thể được thực hiện bằng Bluetooth LE 4.0 (kể từ năm 2009), kiểu thứ hai khi sử dụng Bluetooth BR/EDR 5.2 (kể từ năm 2020).

Lỗ hổng thứ hai (CVE-2022-42895) là do rò rỉ bộ nhớ còn sót lại trong hàm l2cap_parse_conf_req. Lỗ hổng này có thể được sử dụng để lấy thông tin từ xa về con trỏ tới cấu trúc hạt nhân bằng cách gửi các yêu cầu cấu hình được tạo đặc biệt. Hàm l2cap_parse_conf_req đã sử dụng cấu trúc l2cap_conf_efs, trong đó bộ nhớ được phân bổ không được khởi tạo trước và bằng cách điều khiển cờ FLAG_EFS_ENABLE, có thể đưa dữ liệu cũ từ ngăn xếp vào gói. Sự cố chỉ xuất hiện trên các hệ thống có kernel được xây dựng với tùy chọn CONFIG_BT_HS (bị tắt theo mặc định nhưng được bật trên một số bản phân phối, chẳng hạn như Ubuntu). Một cuộc tấn công thành công cũng yêu cầu đặt tham số HCI_HS_ENABLED thông qua giao diện quản lý thành true (không được sử dụng theo mặc định).

Nguồn: opennet.ru

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