Reptar
(lock.cmpxchg8b.com)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 movsbdù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 movsbkhô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
Ý 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.
Nhiều nhóm nghiên cứu trong Google đã phát hiện lỗi một cách độc lập.
Bộ xử lý báo cáo ngoại lệ kiểm tra máy và bị dừng.
Nhận ra mình thiếu hiểu biết về phần cứng.
Gợi nhớ đến chẩn đoán của qemu khi gặp vấn đề repz ret.
repz ret.Nhân viên của Intel và Google đều đã báo cáo vấn đề.
Thú vị hơn bài viết của Google rất nhiều.
Đặ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.
Giải thích về thông báo bảo mật của Intel.