Raspberry Pi có dễ bị khai thác bởi Spectre hay Meltdown không?


58

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?


1
Theo các nhà nghiên cứu: Hiện tại, vẫn chưa rõ liệu bộ xử lý ARM và AMD có bị ảnh hưởng bởi Meltdown hay không.
Janghou

1
Có một ví dụ là bạn có thể đánh cắp mật khẩu bằng Javascript trong trình duyệt (Chrome / Firefox).
Janghou

4
@ alex2003super: Đừng sợ hãi. Mặc dù quy mô của các thiết bị bị ảnh hưởng là đáng kinh ngạc, nhưng tỷ lệ bạn thực sự bị ảnh hưởng bởi vấn đề này theo bất kỳ cách nào là khá thấp. Và ngay cả khi họ không, việc bối rối sẽ không giúp ích gì. :)
Cuộc đua nhẹ nhàng với Monica

1
Có vẻ như chúng không dễ bị tổn thương, đây là một bài viết gần đây về chủ đề raspberrypi.org/blog/
Khăn

5
Bạn có thể thấy bài đăng này thú vị: raspberrypi.org/blog/
Lần

Câu trả lời:


61

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à:

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.


Tôi tự hỏi nếu những thay đổi đối với nhân Linux được yêu cầu trên các kiến ​​trúc khác sẽ được đẩy ra các phiên bản Linux chạy trên Raspberry Pi? Giả sử những thay đổi này sẽ làm chậm hệ thống nên có thể RP sẽ bị ảnh hưởng ngay cả khi các bản vá không cần thiết.
Bobby Durrett

4
Bản vá kernel phát hiện bộ xử lý nào nó đang chạy và tự động vô hiệu hóa nếu nó không phải là một mô hình bị ảnh hưởng. Ngoài ra, các hạt nhân cho Raspberry Pi (và hầu hết các máy tính bảng đơn khác) được chế tạo riêng cho phần cứng có sẵn và không có lý do gì để các nhà bảo trì đưa vào hoặc kích hoạt bản vá trong câu hỏi.
Perkins

1
@BulkDurrett, Meltdown thay đổi thành kernel đang nằm trong phần dành riêng cho x86 của cơ sở mã. Các thay đổi liên quan đến Spectre ở khắp mọi nơi, nhưng hầu hết chúng đều nằm trong các phần dành riêng cho bộ xử lý của mã hoặc được trình biên dịch xử lý. Một số bit, chẳng hạn như thay đổi cấu trúc của mã mạng, có thể bị rò rỉ vào Pi, nhưng hầu hết trong số chúng sẽ không.
Đánh dấu

Cảm ơn các ý kiến. Thật thú vị khi nghĩ về phần nào của mã nhân Linux là bộ xử lý cụ thể. Tôi đoán với một hệ điều hành chạy trên nhiều loại CPU khác nhau, bạn phải làm tốt việc phân tách mã dành riêng cho từng bộ xử lý.
Bobby Durrett

22

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.


10

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.


" 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. " Làm thế nào để bạn làm điều này mà không cần thực hiện đầu cơ?
Peter Taylor

@PeterTaylor các CPU ARM này có bộ dự báo nhánh và do đó, chúng có thực thi đầu cơ. Những gì họ đang thiếu là thực hiện không theo thứ tự.
juhist

Chúng được ghi lại để tìm nạp lệnh đầu cơ, nhưng đó không phải là thực thi đầu cơ. Đó là một điểm công bằng rằng vẫn có thể sử dụng nó như một lời sấm truyền.
Peter Taylor

Ngay cả tìm nạp đầu cơ có thể là đủ, vì sẽ có một sự khác biệt nhỏ nhưng có thể đo được độ trễ.
juhist

Linux đã thêm ngẫu nhiên địa chỉ kernel; bạn không thể dự đoán địa chỉ của một chi nhánh.
MSalters
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.