Có hai lỗ hổng bảo mật nghiêm trọng mới được phát hiện là Spectre và Meltdown .
Raspberry Pi có dễ bị tổn thương đối với Spectre và / hoặc Meltdown không?
Có hai lỗ hổng bảo mật nghiêm trọng mới được phát hiện là Spectre và Meltdown .
Raspberry Pi có dễ bị tổn thương đối với Spectre và / hoặc Meltdown không?
Câu trả lời:
Theo chính ARM , các lõi xử lý được sử dụng trong tất cả các model trước Pi 4 không dễ bị tấn công .
Phần lớn các bộ xử lý Arm không bị ảnh hưởng bởi bất kỳ biến thể nào của cơ chế đầu cơ kênh phụ này. Một danh sách dứt khoát của tập hợp con nhỏ của bộ xử lý được thiết kế Arm dễ bị ảnh hưởng có thể được tìm thấy dưới đây. [xem liên kết cho bảng]
Các lõi xử lý được sử dụng bởi Pis cũ là:
Pi 1 và Zero (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2 và Pi 3 : ARM Cortex-A53
Không có lõi nào ở trên được liệt kê là dễ bị tổn thương trước bất kỳ phiên bản nào của cuộc tấn công (trên thực tế, chúng không được liệt kê vì không có lỗ hổng nào được biết đến đối với các cuộc tấn công này).
Các Raspberry Pi 4 sử dụng Cortex-A72 , mà được liệt kê như dễ bị tổn thương với các biến thể 1, 2, 3a và 4. Như đã nêu trong Là Raspberry Pi 4 dễ bị khai thác Spectre? , Raspbian chứa các giảm thiểu phần mềm đối với các lỗ hổng này, vì vậy rủi ro khai thác sẽ thấp. Các hệ điều hành khác có thể không chứa các giảm thiểu thích hợp và trong khi ARM cho biết giảm thiểu phần cứng đã được phát hành cho Cortex-A72, không rõ liệu điều này có được áp dụng cho Pi 4 hay không.
Lưu ý rằng Biến số 1 và 2 (CVE-2017-5753 và CVE-2017-5715) được gọi là Spectre và Biến thể 3 (CVE-2017-5754) và 3a (một cuộc tấn công liên quan được điều tra bởi ARM) được gọi là Meltdown . Do đó, không có thiết bị Raspberry Pi nào trước Pi 4 được cho là dễ bị tổn thương với Spectre hoặc Meltdown.
Pi (tất cả các phiên bản) không dễ bị tấn công.
Cả Spectre và Meltdown đều yêu cầu thực hiện không theo thứ tự. Các Cortex-A7 được sử dụng trong Pi đầu 2 và A53 Cortex sử dụng trong Pi sau 2 và Pi 3 là một kiến trúc chặt chẽ trong trật tự. Các ARM11 được sử dụng trong Pi 1 là một phần out-of-trật tự, nhưng không phải trong một cách mà cho phép Spectre hoặc Meltdown để làm việc.
ARM xác nhận điều này : chỉ một tập hợp con rất hạn chế của bộ xử lý ARM có phần cứng khiến chúng dễ bị tổn thương trước Spectre, một tập hợp con thậm chí còn hạn chế hơn dễ bị Meltdown và tin rằng tất cả chúng đều cho phép giảm thiểu mối đe dọa.
Tôi muốn cung cấp khác nhau của tôi về điều này.
Về Meltdown, đó là một lỗ hổng rất cụ thể trong một số bộ xử lý, vì vậy nếu ARM nói rằng CPU trong Raspberry Pi không dễ bị tổn thương thì có lẽ nó có thể được tin cậy.
Tuy nhiên, Spectre là một lỗ hổng tổng quát hơn. Cho đến nay, chỉ có hai biến thể đã được chứng minh nhưng tôi khá chắc chắn có nhiều biến thể hơn. Lỗi trong CPU là trạng thái bộ dự báo nhánh không bị xóa khi thực hiện chuyển đổi ngữ cảnh và trạng thái bộ dự báo nhánh đó được lập chỉ mục bởi các bit thứ tự thấp của địa chỉ lệnh nhánh và hoàn toàn không được gắn thẻ. Vì vậy, bạn có thể có hai nhánh chia sẻ cùng một trạng thái dự đoán nhánh, thậm chí qua các ranh giới quá trình.
Tôi rất tự tin rằng CPU trong tất cả các mô hình Raspberry Pi tương tự như thực tế tất cả các CPU khác ngoài đó, bộ dự đoán nhánh chỉ là một mảng lớn của các bộ đếm bão hòa 2 bit (được lấy mạnh, lấy yếu, không được lấy, yếu không được thực hiện). Chỉ mục cho mảng này là các bit có thứ tự thấp của địa chỉ lệnh nhánh và không có thẻ và trạng thái dự đoán này không bao giờ bị xóa.
Bây giờ, nếu hai nhánh chia sẻ cùng một trạng thái dự đoán, bạn có thể đo lường cách mà một nhánh cụ thể đã thực hiện trong quá khứ gần đây. Sự rò rỉ thông tin của Spectre là như vậy! Nếu bạn có thể kích hoạt trình duyệt một cách đáng tin cậy để thực thi một số mã phân nhánh trên mật khẩu của bạn từ JavaScript và đo lường những cách mà các nhánh đã đi, bạn thực sự có thể trích xuất mật khẩu. Bây giờ đây là một ví dụ cực đoan, không ai có thể phân nhánh trên từng bit mật khẩu của bạn theo cách có thể được kích hoạt từ JavaScript, nhưng điều này chứng tỏ vấn đề.
Đừng tin tất cả những gì ARM nói. Điều ARM có nghĩa là có lẽ các khai thác mà Google đã phát triển không hoạt động trên các CPU ARM này. Điều đó không có nghĩa là họ sẽ trở nên bất khả xâm phạm với Spectre. Một số loại khai thác khác có thể làm việc.
Xem câu hỏi này: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-inocate-a-complete-spectre-fix và hiểu ý nghĩa của câu trả lời của nó. Mã JavaScript giả mạo đang chạy trong trình duyệt của bạn có thể do phép đo Spectre mà các nhánh khác trong quy trình đã đi. Ngay cả một hướng dẫn tuôn ra bộ dự báo nhánh sẽ không khắc phục được sự cố JavaScript lừa đảo này, trừ khi trình duyệt chủ động xóa bộ dự đoán nhánh trước khi chạy mã không tin cậy.
Spectre sẽ ở với chúng ta trong một thời gian rất, rất dài, vì bộ dự báo nhánh sử dụng 14 bit làm chỉ mục không được gắn thẻ với 18 bit còn lại của không gian địa chỉ 32 bit, vì sau đó sẽ cần 20 bit (bộ đếm bão hòa 2 bit , Thẻ 18 bit) thay vì chỉ 2 bit. Điều này sẽ nhân kích thước dự đoán chi nhánh với mười! Tôi hy vọng các nhà sản xuất CPU sẽ thêm một lệnh tuôn ra dự đoán nhánh hoạt động ngay cả trong không gian người dùng mà không có đặc quyền đặc biệt và hạt nhân sẽ sử dụng nó khi chuyển ngữ cảnh và không gian người dùng để sử dụng nó khi chạy mã JITed không tin cậy. Điều này sẽ khắc phục hầu hết các vấn đề về Spectre trong thực tế, nhưng trên lý thuyết, không phải tất cả chúng.