Hai lỗ hổng trong GRUB2 cho phép bạn vượt qua bảo vệ Khởi động an toàn UEFI

Thông tin đã được tiết lộ về hai lỗ hổng trong bộ tải khởi động GRUB2, có thể dẫn đến việc thực thi mã khi sử dụng các phông chữ được thiết kế đặc biệt và xử lý các chuỗi Unicode nhất định. Các lỗ hổng có thể được sử dụng để vượt qua cơ chế khởi động được xác minh của UEFI Secure Boot.

Các lỗ hổng được xác định:

  • CVE-2022-2601 - Lỗi tràn bộ đệm trong hàm grub_font_construct_glyph() khi xử lý các phông chữ được thiết kế đặc biệt ở định dạng pf2, xảy ra do tính toán sai tham số max_glyph_size và việc phân bổ vùng bộ nhớ rõ ràng là nhỏ hơn mức cần thiết để chứa các glyph.
  • CVE-2022-3775 Lỗi ghi ngoài giới hạn xảy ra khi hiển thị một số chuỗi Unicode bằng phông chữ có kiểu dáng đặc biệt. Vấn đề nằm ở mã xử lý phông chữ và nguyên nhân là do thiếu kiểm tra thích hợp để đảm bảo rằng chiều rộng và chiều cao của glyph phù hợp với kích thước của bitmap có sẵn. Kẻ tấn công có thể tạo đầu vào theo cách khiến phần đuôi của dữ liệu được ghi ra bên ngoài bộ đệm được phân bổ. Cần lưu ý rằng mặc dù việc khai thác lỗ hổng rất phức tạp nhưng việc đưa vấn đề vào quá trình thực thi mã vẫn không bị loại trừ.

Bản sửa lỗi đã được xuất bản dưới dạng bản vá. Tình trạng loại bỏ lỗ hổng trong các bản phân phối có thể được đánh giá trên các trang này: Ubuntu, SUSE, RHEL, Fedora, Debian. Để khắc phục sự cố trong GRUB2, chỉ cập nhật gói là chưa đủ; bạn cũng sẽ cần tạo chữ ký số nội bộ mới và cập nhật trình cài đặt, bộ tải khởi động, gói hạt nhân, chương trình cơ sở fwupd và lớp shim.

Hầu hết các bản phân phối Linux đều sử dụng một lớp miếng đệm nhỏ được Microsoft ký điện tử để khởi động được xác minh ở chế độ Khởi động an toàn UEFI. Lớp này xác minh GRUB2 bằng chứng chỉ riêng, cho phép các nhà phát triển phân phối không có mọi bản cập nhật kernel và GRUB được Microsoft chứng nhận. Các lỗ hổng trong GRUB2 cho phép bạn đạt được việc thực thi mã của mình ở giai đoạn sau khi xác minh miếng đệm thành công, nhưng trước khi tải hệ điều hành, hãy tham gia vào chuỗi tin cậy khi chế độ Khởi động an toàn được kích hoạt và giành toàn quyền kiểm soát quá trình khởi động tiếp theo, bao gồm tải một hệ điều hành khác, sửa đổi hệ thống các thành phần của hệ điều hành và bỏ qua tính năng bảo vệ Lockdown.

Để chặn lỗ hổng mà không thu hồi chữ ký số, các bản phân phối có thể sử dụng cơ chế SBAT (UEFI Secure Boot Advanced Targeting), cơ chế được hỗ trợ cho GRUB2, shim và fwupd trong hầu hết các bản phân phối Linux phổ biến. SBAT được phát triển cùng với Microsoft và liên quan đến việc thêm siêu dữ liệu bổ sung vào các tệp thực thi của các thành phần UEFI, bao gồm thông tin về nhà sản xuất, sản phẩm, thành phần và phiên bản. Siêu dữ liệu được chỉ định được chứng nhận bằng chữ ký số và có thể được đưa riêng vào danh sách các thành phần được phép hoặc bị cấm đối với Khởi động an toàn UEFI.

SBAT cho phép bạn chặn việc sử dụng chữ ký số cho số phiên bản thành phần riêng lẻ mà không cần phải thu hồi khóa cho Secure Boot. Việc chặn lỗ hổng thông qua SBAT không yêu cầu sử dụng danh sách thu hồi chứng chỉ UEFI (dbx), nhưng được thực hiện ở cấp độ thay thế khóa nội bộ để tạo chữ ký và cập nhật GRUB2, shim và các tạo phẩm khởi động khác do các bản phân phối cung cấp. Trước khi giới thiệu SBAT, việc cập nhật danh sách thu hồi chứng chỉ (dbx, Danh sách thu hồi UEFI) là điều kiện tiên quyết để chặn hoàn toàn lỗ hổng bảo mật, vì kẻ tấn công, bất kể hệ điều hành được sử dụng, đều có thể sử dụng phương tiện có khả năng khởi động với phiên bản GRUB2 cũ dễ bị tấn công, được chứng nhận bằng chữ ký số, để xâm phạm UEFI Secure Boot .

Nguồn: opennet.ru

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