EntrySign: lỗ hổng ảnh hưởng đến bộ xử lý AMD Zen

Logo lỗ hổng EntrySign

Gần đây, Các kỹ sư của Google đã công bố chi tiết về một lỗ hổng nghiêm trọng được xác định là CVE-2024-56161. Được rửa tội dưới tên của Nhập Dấu Hiệu, thất bại này cho phép trốn tránh cơ chế xác minh chữ ký số trong quá trình cập nhật vi mã trên bộ xử lý AMD sử dụng bốn thế hệ đầu tiên của vi kiến ​​trúc Zen.

Nhập Dấu Hiệu ảnh hưởng đến nhiều loại bộ xử lý, cho phép kẻ tấn công bỏ qua các biện pháp kiểm soát bảo mật đảm bảo tính toàn vẹn của vi mã, có khả năng mở đường cho các sửa đổi độc hại vào hành vi của phần cứng.

Về lỗ hổng

Nguồn gốc của lỗ hổng này nằm ở việc sử dụng thuật toán AES-CMAC trong quá trình xác minh chữ ký số thay vì sử dụng hàm băm đáng tin cậy. AMD đã sử dụng thuật toán này để ký mã vi mô, sử dụng khóa RSA riêng tư và thêm khóa công khai vào bản vá.

Quá trình xác minh bao gồm việc bộ xử lý so sánh hàm băm của khóa công khai được nhúng trong quá trình sản xuất với hàm băm của khóa được chỉ định trong bản vá. Tuy nhiên, vì CMAC đã được sử dụng, thực ra không phải là hàm băm mà là mã xác thực khi truyền tin nhắn, một lỗ hổng bảo mật đã được phát hiện.

CMAC dựa trên thuật toán AES và sử dụng các hoạt động XOR để kết hợp các khối dữ liệu, nhưng vì không được thiết kế để chống va chạm nên nó cho phép kẻ tấn công biết khóa mã hóa tính toán các giá trị trung gian để bù cho những thay đổi trong đầu vào, giữ nguyên kết quả của hoạt động.

Cả Intel và AMD đều thiết kế các bộ lệnh vi mã dựa trên RISC độc đáo, cả hai đều không được ghi chép lại nhưng về mặt khái niệm thì tương tự như các bộ lệnh RISC khác như ARM hoặc RISC-V. Giống như phần mềm, việc triển khai phần cứng phức tạp một cách chính xác cũng là một thách thức; Trong lịch sử, điều này đã dẫn đến nhiều lỗi phổ biến, chẳng hạn như lỗi FDIV của Intel trong Pentium năm 1994.

AMD cung cấp một khóa mã hóa duy nhất cho AES-CMAC trong tất cả các bộ xử lý từ Zen 1 đến Zen 4, nghĩa là nếu ai đó trích xuất khóa này từ một CPU, họ có thể áp dụng nó cho tất cả các CPU khác. Trên thực tế, các nhà nghiên cứu đã phát hiện ra rằng các bộ xử lý này sử dụng một khóa đã biết, lấy từ ví dụ trong hướng dẫn NIST SP 800-38B.

Về mặt lý thuyết, điều này cho phép tạo ra các bản vá lỗi sai bằng cách thay thế khóa công khai của bản vá bằng khóa tạo ra cùng một hàm băm, và chọn va chạm cho chữ ký số. Những va chạm như vậy đạt được bằng cách thêm một khối dữ liệu ngẫu nhiên vào vi mã, do đó bản vá đã sửa đổi vẫn giữ nguyên chữ ký số gốc của AMD.

EntrySign, lỗ hổng CVE-2024-56161 cho phép kẻ tấn công vượt qua các biện pháp kiểm soát bảo mật

Để giải quyết vấn đề nàyĐể khám phá những cách mới để thao tác vi mã trong bộ xử lý AMD, các kỹ sư của Google Họ đã phát triển Zentool, một bộ sưu tập các công cụ kết hợp để kiểm tra bản vá vi mã, bao gồm việc tháo rời hạn chế, tạo các bản vá vi mã bằng cách sử dụng một lượng hạn chế kỹ thuật lắp ráp đảo ngược.

Zentool được thiết kế để tạo điều kiện thuận lợi cho việc phân tích và sửa đổi vi mã, cung cấp một loạt lệnh cho phép chỉnh sửa các tham số và thay thế hướng dẫn cho đến tải vi mã đã sửa đổi vào CPU và sửa chữ ký số của bản vá.

Ví dụ, lệnh "zentool edit" cho phép chỉnh sửa các tham số trong tệp vi mã, trong khi "zentool print" hiển thị thông tin chi tiết về cấu trúc bên trong của vi mã. Ngoài ra, «zentool load» sẽ tải vi mã vào CPU và «zentool resign» sẽ tính toán lại chữ ký số, có tính đến những thay đổi đã thực hiện. Ngoài ra, gói này còn bao gồm các tiện ích như mcas và mcop, cung cấp chức năng lắp ráp và dịch ngược để làm việc trực tiếp với vi mã.

Khả năng của Zentool cho phép các nhà phát triển chuẩn bị và áp dụng các bản vá lỗi của riêng họ trên bộ xử lý AMD Zen. Là một ví dụ minh họa, một bản vá đã được chuẩn bị để sửa đổi logic của lệnh RDRAND. Sau khi áp dụng bản vá này, lệnh RDRAND sẽ ngừng tạo chuỗi giả ngẫu nhiên và bắt đầu trả về số 4 một cách nhất quán, do đó chứng minh được sức mạnh của việc sửa đổi vi mã và thay đổi hành vi mong đợi của bộ xử lý.

điều đáng nói là Zentool đi kèm với hướng dẫn chi tiết về kiến ​​trúc vi mô RISC86 được sử dụng trong vi mã AMD, cũng như hướng dẫn giải thích cách tạo vi mã tùy chỉnh. Hướng dẫn này trình bày cách thiết kế các lệnh xử lý mới, sửa đổi hành vi của các lệnh hiện có và tải những thay đổi đó trực tiếp vào CPU.

Cuối cùng, nếu bạn muốn biết thêm về nó, bạn có thể tham khảo thông tin chi tiết trong liên kết theo dõi.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.