2 điểm bởi GN⁺ 2023-11-15 | 1 bình luận | Chia sẻ qua WhatsApp

Phát hiện một bí ẩn về CPU

  • Nếu bạn quan tâm đến các lỗi có thể xảy ra bên trong CPU hiện đại, hãy đọc tiếp.
  • Nếu bạn từng viết assembly x86, có lẽ bạn quen thuộc với lệnh rep movsb dùng để di chuyển bộ nhớ.
  • Sau khi thiết lập nguồn, đích, hướng và số đếm, bộ xử lý sẽ tự xử lý mọi chi tiết.

Diễn giải tiền tố lệnh

  • Một trong những đặc điểm của x86 là việc giải mã lệnh nói chung rất linh hoạt.
  • Ngay cả khi dùng các tiền tố vô nghĩa hoặc xung đột với tiền tố khác, trong đa số trường hợp chúng vẫn bị bỏ qua.
  • Trình biên dịch có thể dùng các tiền tố không cần thiết để khớp với ranh giới căn chỉnh mong muốn.

Tiền tố REX

  • i386 có 8 thanh ghi đa dụng, nên có thể chỉ định thanh ghi bằng 3 bit.
  • x86-64 bổ sung thêm 8 thanh ghi đa dụng, vì vậy cần nhiều bit hơn.
  • Tiền tố rex cho phép lệnh tiếp theo mượn thêm bit, nhờ đó có thể mã hóa 16 thanh ghi đa dụng.

Quy tắc mã hóa

  • Tiền tố rex làm tăng không gian khả dụng để mã hóa toán hạng.
  • Các tiền tố không cần thiết hoặc trùng lặp trong x86 phần lớn sẽ bị bỏ qua.
  • Lệnh rex.rxb rep movsb không có toán hạng nên các bit rex không mang ý nghĩa gì, và bộ xử lý sẽ bỏ qua tiền tố rex.

Fast Short Repeat Move (FSRM)

  • FSRM là tính năng mới được giới thiệu từ Ice Lake nhằm khắc phục nhược điểm của ERMS.
  • Với ERMS, phần khó của việc di chuyển chuỗi hiệu quả là căn chỉnh bộ đệm để dùng được thao tác lưu trữ rộng nhất có thể.
  • FSRM nhắm tới việc di chuyển nhanh hơn các chuỗi ngắn có độ dài từ 128 byte trở xuống.

Phát hiện

  • Bằng kỹ thuật kiểm chứng bộ xử lý Oracle Serialization, người ta kiểm tra xem hai biến thể của chương trình được sinh ngẫu nhiên có cho ra cùng một trạng thái cuối hay không.
  • Vào tháng 8, pipeline kiểm chứng đã phát hiện rằng khi thêm tiền tố rex.r dư thừa vào thao tác rep movs được tối ưu bằng FSRM, kết quả có thể trở nên không thể dự đoán.
  • Khi nhiều lõi cùng kích hoạt lỗi này, bộ xử lý được xác nhận là sẽ báo machine check exception rồi dừng lại.

Tái hiện

  • Kết quả nghiên cứu đã được công bố trong kho lưu trữ nghiên cứu bảo mật.
  • Có thể dùng công cụ icebreak để tái hiện lỗ hổng.
  • Trên hệ thống không bị ảnh hưởng sẽ không có đầu ra nào, nhưng trên hệ thống bị ảnh hưởng, mỗi lần tái hiện thành công sẽ in ra ..

Phân tích

  • Cách microcode hoạt động trên các hệ thống hiện đại được giữ kín, nên chỉ có thể đưa ra giả thuyết dựa trên quan sát.
  • Người ta suy đoán lỗi này khiến frontend tính sai kích thước của lệnh movsb, làm các mục theo sau trong ROB (reorder buffer) bị gắn với địa chỉ sai.

Câu hỏi

  • Có thể bạn sẽ đặt câu hỏi về những gì có thể làm được trong trạng thái “glitch” bất thường này.
  • Người ta biết rằng có thể làm hỏng trạng thái hệ thống đủ mức để gây ra lỗi machine check, và một luồng có thể ảnh hưởng tới việc thực thi của bộ xử lý anh em SMT.
  • Do không có cách gỡ lỗi việc thực thi μop, hiện chưa thể biết liệu có thể đạt được leo thang đặc quyền hay không.

Giải pháp

  • Intel đã phát hành microcode cập nhật cho tất cả các bộ xử lý bị ảnh hưởng.
  • Nhà cung cấp hệ điều hành hoặc BIOS của bạn có thể đã cung cấp bản cập nhật này.

Phương án thay thế

  • Nếu không thể cập nhật, có thể vô hiệu hóa fast strings thông qua thanh ghi đặc thù mô hình IA32_MISC_ENABLE.
  • Điều này gây sụt giảm hiệu năng đáng kể, vì vậy chỉ nên dùng khi thực sự cần thiết.

Ý kiến của GN⁺

Điểm quan trọng nhất của bài viết này là nó cho thấy đã phát hiện ra một trạng thái “glitch” bất ngờ có thể xảy ra trong CPU hiện đại, và từ đó chỉ ra khả năng phát sinh lỗ hổng bảo mật. Bài viết có thể hấp dẫn với các kỹ sư phần mềm, đồng thời góp phần nâng cao nhận thức về độ phức tạp của CPU và tính mong manh của hệ thống. Ngoài ra, nó cũng giúp hiểu rõ hơn cách những phát hiện như vậy có thể dẫn tới các mối đe dọa bảo mật thực tế, và nhấn mạnh tầm quan trọng của microcode đã được cập nhật.

1 bình luận

 
GN⁺ 2023-11-15
Ý kiến trên Hacker News
  • Nhóm của Konrad Magnusson đã phát hiện một vấn đề liên quan đến mimalloc.

    • Konrad Magnusson của Paradox Interactive đã tìm thấy một vấn đề liên quan đến mimalloc, và điều này có thể liên quan đến một lỗ hổng CPU mới do các nhà nghiên cứu của Google phát hiện.
  • Nhiều nhóm nghiên cứu trong Google đã phát hiện lỗi một cách độc lập.

    • Một số nhóm nghiên cứu trong Google, bao gồm nhóm silifuzz và nhóm Google Information Security Engineering, đã độc lập phát hiện cùng một lỗi.
  • Bộ xử lý báo cáo ngoại lệ kiểm tra máy và bị dừng.

    • Có đề cập đến hiện tượng bộ xử lý báo cáo ngoại lệ kiểm tra máy và ngừng hoạt động.
  • Nhận ra mình thiếu hiểu biết về phần cứng.

    • Tác giả nhận ra mình thiếu kiến thức về phần cứng và đặt câu hỏi vì sao cần các "tiền tố" để thay đổi cách lệnh hoạt động.
  • Gợi nhớ đến chẩn đoán của qemu khi gặp vấn đề repz ret.

    • Nhắc lại tình huống qemu từng chẩn đoán khi đối mặt với vấn đề repz ret.
  • Nhân viên của Intel và Google đều đã báo cáo vấn đề.

    • Intel bày tỏ sự cảm ơn tới nhân viên của mình và nhân viên Google vì đã nội bộ phát hiện và báo cáo vấn đề này.
  • Thú vị hơn bài viết của Google rất nhiều.

    • Bày tỏ rằng cuộc thảo luận này thú vị hơn nhiều so với bài viết của Google.
  • Đặt câu hỏi liệu có thể thiết kế CPU thực thi suy đoán thay vì thực thi tuần tự mà không gặp vấn đề bảo mật hay không.

    • Nêu nghi vấn về các vấn đề bảo mật có thể phát sinh khi thiết kế CPU không thực thi theo thứ tự mà thực thi suy đoán, đồng thời hỏi liệu trong tương lai có tiến tới hướng mỗi lõi A55 chạy độc lập một ứng dụng hay không.
  • Giải thích về thông báo bảo mật của Intel.

    • Thông báo bảo mật của Intel giải thích rằng có những chuỗi lệnh gây ra hành vi không mong muốn trên một số bộ xử lý Intel cụ thể, qua đó cho phép người dùng đã được xác thực gây leo thang đặc quyền, lộ lọt thông tin hoặc từ chối dịch vụ.