UEFIshimbootloaderkerneleach stage verifies the nextunsigned binary → boot refused

Khởi động an toàn

11 đọc tối thiểuBảo vệ

Trước khi hệ điều hành của bạn tải, một số lớp mã sẽ thực thi - phần sụn, bộ nạp khởi động, hạt nhân. Mỗi cái đều là một mục tiêu tấn công tiềm năng. Khởi động an toàn là chuỗi xác minh mật mã để đảm bảo chỉ có mã được ký và phê duyệt mới chạy khi khởi động. Nó lặng lẽ ngăn chặn một loại phần mềm độc hại tiền hệ điều hành đã từng tàn phá và hiện nay rất hiếm.

Toàn bộ nội dung bài viết được cung cấp bằng tiếng Anh bên dưới.

Secure Boot là tính năng UEFI xác minh chữ ký mật mã trên mọi thành phần được thực thi trong khi khởi động, từ chối chạy bất kỳ thứ gì không được ký bởi khóa đáng tin cậy. Nó bảo vệ chống lại các bootkit và rootkit cố tải trước khi hệ điều hành có thể tự bảo vệ.

Chuỗi khởi động

A PC hiện đại khởi động qua nhiều giai đoạn:

  1. UEFI firmware — thay thế BIOS cũ, chạy đầu tiên từ chip flash SPI trên bo mạch chủ
  2. Bootloader — Trình quản lý khởi động Windows, GRUB, systemd-boot hoặc shim
  3. Kernel — Windows, Linux, macOS (XNU) hoặc các loại khác
  4. Init / không gian người dùng — dịch vụ, trình điều khiển, daemons

Không có Khởi động an toàn, phần mềm độc hại đã giành được quyền quản trị một lần có thể thay thế bộ tải khởi động để đảm bảo nó tải ở mỗi lần khởi động tiếp theo trước khi bất kỳ phần mềm chống vi-rút nào có thể phát hiện ra. Các bộ khởi động như Mebroot (2007), Olmasco (2010) và Khảm Regressor (2020) đã sử dụng chính xác kỹ thuật này.

Cách khởi động an toàn hoạt động

Phần sụn UEFI chứa cơ sở dữ liệu về các khóa công khai đại diện cho những người ký đáng tin cậy. Khi tải bộ nạp khởi động, phần sụn sẽ xác minh chữ ký của nó đối với các phím đó. Nếu chữ ký không hợp lệ hoặc vắng mặt và tệp không có trong cơ sở dữ liệu danh sách trắng, chương trình cơ sở sẽ từ chối chạy nó và quá trình khởi động không thành công.

Các khóa là:

  • PK (Khóa nền tảng) — gốc. Thông thường, chìa khóa của nhà sản xuất phần cứng. Kiểm soát ai có thể cập nhật các khóa khác.
  • KEK (Khóa trao đổi khóa) — khóa được ủy quyền để cập nhật DB và DBX.
  • DB (Cơ sở dữ liệu chữ ký) — danh sách nhị phân và khóa ký được phép.
  • DBX (Chữ ký bị cấm) Cơ sở dữ liệu) - các tệp nhị phân và khóa bị chặn rõ ràng. Được cập nhật khi phát hiện bộ tải khởi động đã biết bị xâm phạm.

Khóa ký UEFI của Microsoft hầu như có trong DB của mọi PC khi xuất xưởng. Bộ tải khởi động Các dấu hiệu của Microsoft được cho phép phổ biến; bộ tải khởi động được ký bởi các CA khác yêu cầu các mục nhập DB rõ ràng.

Linux và shim

Hầu hết các bản phân phối Linux đều cung cấp một bộ tải khởi động nhỏ có tên shim, có chữ ký của Microsoft. Shim là thành phần Linux duy nhất được Secure Boot tin cậy trước. Đến lượt nó, nó xác nhận bộ tải khởi động phân phối thực tế (GRUB) và kernel dựa vào các khóa mà bản phân phối nhúng. Chuỗi ba lớp này cho phép Linux hoạt động với Secure Boot mà không yêu cầu mọi bản phân phối phải đàm phán độ tin cậy khóa UEFI với mọi nhà cung cấp phần cứng.

Đối với những người dùng muốn có toàn quyền, bạn có thể thay thế PK bằng khóa riêng của mình và tự mình ký mọi thứ. Yêu cầu kiến ​​thức sâu hơn về Linux nhưng cung cấp độ tin cậy khởi động hoàn toàn khép kín.

Bộ khởi động BlackLotus và những gì nó dạy

Vào năm 2023, bộ khởi động BlackLotus là phần mềm độc hại được ghi nhận công khai đầu tiên vượt qua Khởi động an toàn một cách tự nhiên. Nó khai thác một lỗ hổng đã biết nhưng chưa được vá (CVE-2022-21894, "Baton Drop") trong bộ tải khởi động của Microsoft. Bộ nạp khởi động đã được ký và tin cậy; lỗ hổng này cho phép kẻ tấn công chạy mã đánh bại các lần kiểm tra Khởi động an toàn tiếp theo.

Cách khắc phục: thu hồi bộ tải khởi động dễ bị tấn công bằng cách thêm hàm băm của nó vào DBX. Việc triển khai rất phức tạp vì việc đẩy các bản cập nhật DBX tới hàng tỷ PC tiềm ẩn rủi ro về khả năng tương thích. Microsoft đã xử lý vấn đề này dần dần cho đến năm 2023-2024.

Secure Boot và TPM cùng nhau

Secure Boot ngăn mã trái phép chạy. TPM ghi lại những gì đã chạy qua Thanh ghi cấu hình nền tảng. Sự kết hợp này cung cấp measured boot — bản ghi có thể chứng minh chính xác những gì đã tải, có thể xác minh được bằng các dịch vụ từ xa để chứng thực tình trạng thiết bị.

BitLocker tích hợp với cả hai: mã hóa ổ đĩa được niêm phong với TPM, chỉ giải phóng khóa nếu Khởi động an toàn hoàn thành bình thường và PCR khớp. Sửa đổi bộ nạp khởi động, ngay cả khi có chữ ký hợp lệ và BitLocker yêu cầu khôi phục.

Hạn chế

  • Không bảo vệ sau khi khởi động. Khi hệ điều hành đang chạy, phần mềm độc hại có đủ đặc quyền có thể thực hiện công việc của nó. Khởi động an toàn là biện pháp bảo vệ trong thời gian khởi động.
  • Phụ thuộc vào tính toàn vẹn của kho khóa. Kẻ tấn công có quyền truy cập vật lý đôi khi có thể đưa khóa vào DB. Việc triển khai của nhà cung cấp có mức độ kháng cự khác nhau.
  • Không tự xác thực phần sụn. Phần sụn UEFI là thứ đang thực hiện xác thực. UEFI bị xâm phạm là trường hợp lỗi gốc tin cậy. Intel Boot Guard, AMD Platform Secure Boot và các giải pháp tương tự mở rộng sự tin cậy vào phần sụn.
  • Ma sát tương thích. Một số công cụ cũ, cấu hình khởi động kép và các thiết lập bất thường không hoạt động tốt với Khởi động an toàn. Hầu hết người dùng sẽ không nhận thấy; một số trường hợp sử dụng cụ thể nên làm.

Bạn có nên tắt nó đi không?

Đối với người dùng thông thường: không. Khả năng bảo vệ là có thật, ít va chạm và Windows 11 yêu cầu điều đó. Các bản phân phối Linux hỗ trợ rộng rãi Secure Boot thông qua shim. Lý do để vô hiệu hóa nó tồn tại (hạt nhân tùy chỉnh mà không cần đăng nhập lại, một số tình huống ảo hóa nhất định, khả năng tương thích phần cứng rất cũ) nhưng chúng mang tính thích hợp và đánh đổi bảo mật thực sự để lấy sự tiện lợi nhỏ.

Câu hỏi thường gặp

Linux có hoạt động với Secure Boot không?
Hầu hết các bản phân phối chính đều có - Ubuntu, Fedora, Debian, openSUSE đều gửi các miếng chêm có chữ ký hoạt động ngay lập tức. Một số bản phân phối nhỏ hơn và bản dựng tùy chỉnh yêu cầu đăng ký khóa thủ công. Arch Linux yêu cầu thiết lập nhiều hơn nhưng được hỗ trợ đầy đủ.
Sự khác biệt giữa Khởi động an toàn và Khởi động được xác minh là gì?
Khái niệm chung giống nhau, hệ sinh thái khác nhau. Khởi động an toàn là tiêu chuẩn UEFI/PC. Khởi động đã xác minh tương đương với Android (và thuật ngữ Apple sử dụng cho các phần của khởi động macOS Big Sur+). Thuật ngữ của ChromeOS cũng là Verify Boot. Tất cả các chữ ký mật mã chuỗi từ phần sụn đến hạt nhân.
Tôi có thể cài đặt Windows 11 mà không cần Khởi động an toàn không?
Chính thức là không - nó là bắt buộc. Các cách giải quyết không chính thức vẫn tồn tại nhưng Microsoft cho biết chúng sẽ không được hỗ trợ lâu dài và có thể bị hỏng khi cập nhật. Đối với mục đích thực tế, Windows 11 = Khởi động an toàn = TPM 2.0.
Secure Boot có phải là cửa hậu cho Microsoft không?
Khóa ký UEFI của Microsoft được tin cậy trên toàn cầu; các tệp nhị phân của Microsoft chạy trên mọi PC khởi động an toàn. Đó là đòn bẩy nhưng không hẳn là cửa sau — Microsoft không nhìn thấy dữ liệu của bạn, không đẩy mã vào máy của bạn bên ngoài Windows Update. Mối quan ngại về mặt kiến ​​trúc (một bên có thẩm quyền ký kết rộng rãi) là có thật nhưng tác động thực tế còn hạn chế.
Điều gì xảy ra trong quá trình cập nhật BIOS với Secure Boot?
Các bản cập nhật chương trình cơ sở đều được ký và xác minh. Cơ sở hạ tầng ký kết tách biệt với DB thời gian khởi động; các nhà cung cấp có thể tung ra các bản cập nhật chương trình cơ sở mà không cần dừng khởi động. Người dùng BitLocker có thể thấy lời nhắc khôi phục sau khi cập nhật chương trình cơ sở lớn do số đo chuỗi khởi động đã thay đổi.
Giải thích về Khởi động an toàn: Cách máy tính của bạn xác minh hệ điều hành trước khi chạy