2 điểm bởi GN⁺ 2024-08-23 | 1 bình luận | Chia sẻ qua WhatsApp

Định nghĩa SBAT(Secure Boot Advanced Targeting)

  • Khi UEFI Secure Boot lần đầu được đưa ra đặc tả, tất cả các bên liên quan đều có phần hơi ngây thơ
  • Mô hình bảo mật cơ bản của Secure Boot là mọi mã chạy trong môi trường đặc quyền ở cấp độ kernel đều phải được xác minh trước khi thực thi
  • Nó bao gồm cách vô hiệu hóa các thành phần đã ký khi phát hiện lỗ hổng
  • Tuy nhiên, mọi bản phân phối Linux hoạt động trong hệ sinh thái Secure Boot đều tự tạo binary bootloader của riêng mình, nên khi xác định có lỗ hổng thì có rất nhiều binary cần phải vô hiệu hóa
  • Không gian có thể lưu trữ hash bị giới hạn, vì vậy SBAT đã được phát triển

Cách SBAT hoạt động

  • Mọi thành phần quan trọng trong chuỗi khởi động đều khai báo một thế hệ bảo mật được chứa trong binary đã ký
  • Khi một lỗ hổng được xác định và khắc phục, thế hệ đó sẽ được tăng lên
  • Có thể xác định thế hệ tối thiểu thông qua bản cập nhật
  • Thành phần khởi động sẽ kiểm tra mục tiếp theo trong chuỗi, so sánh tên và số thế hệ với thông tin được lưu trong biến firmware để quyết định có thực thi hay không
  • Thay vì vô hiệu hóa hàng loạt hash riêng lẻ, có thể đẩy một bản cập nhật duy nhất để tuyên bố rằng các phiên bản grub có thế hệ bảo mật thấp hơn một số cụ thể là không đáng tin cậy

Nguyên nhân của sự cố gần đây

  • Microsoft đã phát hành một bản cập nhật Windows để không còn tin cậy các phiên bản grub có thế hệ bảo mật thấp hơn một mức nhất định
  • Lý do là các phiên bản grub đó có lỗ hổng bảo mật thực sự có thể làm tổn hại chuỗi Secure Boot của Windows
  • Vấn đề là một số bản phân phối Linux vẫn chưa cung cấp phiên bản grub với phiên bản bảo mật mới
  • Ý định của Microsoft là chỉ áp dụng cập nhật SBAT cho các hệ thống chỉ có Windows, nhưng điều này đã không hoạt động như dự định

Tóm tắt

  • Microsoft đã đẩy bản cập nhật Windows để ngăn việc dùng các phiên bản grub dễ bị tấn công nhằm tấn công Windows
  • Bản cập nhật này được thiết kế để không áp dụng cho hệ thống dual-boot, nhưng điều đó đã bị bỏ qua
  • Một số bản phân phối Linux đã không cập nhật mã grub và thế hệ bảo mật SBAT
  • Kết quả là một số người dùng không thể khởi động hệ thống của mình

Bên nào đáng bị trách

  • Microsoft lẽ ra nên thử nghiệm nhiều hơn để nhận diện chính xác các cấu hình dual-boot
  • Nhưng các bản phân phối cung cấp bootloader đã ký cũng phải cập nhật chúng và cập nhật cả thế hệ bảo mật
  • Vì điều này tạo ra một vector có thể bị dùng để tấn công hệ điều hành khác

Kết luận

  • Thật đáng tiếc khi những người dùng cuối đột nhiên không thể khởi động hệ điều hành họ muốn lại trở thành nạn nhân
  • Đây là điều tuyệt đối không nên xảy ra
  • Dù cảm thấy UEFI Secure Boot không mang lại nhiều lợi ích cho phần lớn người dùng cuối, nhưng cũng không ai muốn chỉ sau khi sự cố xảy ra mới biết rằng mình đã cần nó, nên tôi đồng cảm với lựa chọn bật mặc định của Microsoft
  • Ngoại trừ nỗ lực thất bại trong việc tránh áp dụng bản cập nhật trên hệ thống dual-boot, tôi đồng cảm với lựa chọn của Microsoft

Ý kiến của GN⁺

  • Sự việc này cho thấy việc cân bằng giữa bảo mật và trải nghiệm người dùng khó đến mức nào
  • Cả Microsoft lẫn các bản phân phối Linux đều đang cố gắng hết sức để bảo vệ người dùng, nhưng trong quá trình đó trải nghiệm người dùng có thể bị hy sinh
  • Với những người dùng hệ thống dual-boot, khả năng gặp các vấn đề như vậy sẽ cao hơn
  • Vì vậy, người dùng dual-boot cần giữ cả hai hệ điều hành ở phiên bản mới nhất và cập nhật thường xuyên
  • Về lâu dài, có lẽ sẽ cần sự hợp tác và điều phối tốt hơn giữa cộng đồng Linux và Windows

1 bình luận

 
GN⁺ 2024-08-23
Ý kiến trên Hacker News
  • Một tập gần đây của Linux Unplugged đã đề cập cách dùng TPM để thiết lập chuỗi tin cậy cho quy trình khởi động Linux, và việc dùng Clevis khá thú vị
  • Ý định của Microsoft là Windows Update chỉ áp dụng bản cập nhật SBAT cho các hệ thống chỉ chạy Windows, còn các cấu hình dual boot sẽ vẫn dễ bị tổn thương cho đến khi bản phân phối đã cài cập nhật grub và tự phát hành bản cập nhật SBAT
    • Nếu đọc thứ tự khởi động EFI thì có lẽ sẽ ghi rất rõ là cần khởi động shim trước, nên tôi tự hỏi đã có gì sai xảy ra
    • Tôi cũng tự hỏi liệu đây có phải là trường hợp trong cấu hình dual boot khi người dùng dùng menu firmware để chọn Linux hoặc Windows hay không
    • Vấn đề này có vẻ là một bản sửa hợp lý từ phía Microsoft, nhưng khâu truyền thông thì không tốt
  • Tôi rất ghét thông báo lỗi khi shim hoặc kiểm tra bảo mật Secure Boot thông thường thất bại; giá mà nó cho biết chính xác cái gì đã lỗi và cách khắc phục
  • Tôi nghĩ một trong những lý do MS bắt buộc TPM 2.0 và triển khai cập nhật SBAT là vì tồn tại mã độc ở cấp độ rootkit trên diện rộng
  • Về thực tế của dual boot, 10 năm trước trên Win7/8/10 có rất nhiều vấn đề với suspend-to-hiberfile.sys và các bản cập nhật làm hỏng grub
    • Từ 10 năm trước tôi đã quyết định chỉ dùng Linux, và khi cần thì dùng VM hoặc một máy dự phòng riêng
    • Kể từ đó tôi đã học cách thiết lập Secure Boot thành công cho bản phân phối, tinh chỉnh hiệu năng và passthrough của QEMU, và còn chạy được VM macOS trên QEMU
    • Việc phải cập nhật vài tháng một lần để giữ XCode hoạt động thì phiền thật, nhưng nhìn chung tôi vẫn hài lòng
  • Chẳng phải việc đầu tiên khi cài Linux là tắt Secure Boot sao?
  • Câu hỏi chính là grub bị từ chối có phải hoàn toàn chưa được vá hay không, hay là bản phân phối đã vá nhưng không cập nhật "thế hệ bảo mật"
    • Tôi rất tò mò về cách MS đã cố phát hiện dual boot, và hy vọng ai đó (giỏi hơn) sẽ đảo ngược phần đó trong bản cập nhật
  • Lý do Microsoft làm hỏng các hệ thống dual boot là để không cung cấp một vector có thể tấn công các hệ điều hành khác, và điều này là một sự vi phạm khế ước xã hội
  • Tôi tự hỏi liệu điều này có cản trở việc gỡ Windows khỏi hệ thống và cài Linux hay không, hoặc nếu cài Windows thì mô-đun TPM có bị ô nhiễm vĩnh viễn không
  • Tôi tự hỏi có thể cập nhật grub từ Windows hay không, hay chỉ cần tắt Secure Boot, khởi động vào Linux, nâng cấp rồi bật lại là đủ
  • Lập trường của MS trong việc chặn các bản cài grub cũ dễ bị tổn thương có vẻ hợp lý, nhưng tôi chỉ dùng Windows cho game và một phần mềm legacy duy nhất, và dùng không có kết nối mạng
    • Khoảnh khắc bạn cho phép Windows Update chạy thì mọi thứ đều phó mặc cho may rủi
    • Việc MS di chuyển các khóa registry và giở trò với người dùng để ép buộc "telemetry" (ML để quét quảng cáo và dữ liệu hành vi) cũng đã nói lên đủ nhiều rồi
    • Ngay cả trên Windows Pro chuyện này vẫn xảy ra, và tôi đang dùng Win 10