Làm cách nào để giảm thiểu lỗ hổng Spectre và Meltdown trên các hệ thống Linux?


34

Các nhà nghiên cứu bảo mật đã công bố trên Project Zero một lỗ hổng mới gọi là Spectre và Meltdown cho phép một chương trình đánh cắp thông tin từ bộ nhớ của các chương trình khác. Nó ảnh hưởng đến kiến ​​trúc Intel, AMD và ARM.

Lỗ hổng này có thể được khai thác từ xa bằng cách truy cập trang web JavaScript. Chi tiết kỹ thuật có thể được tìm thấy trên trang web redhat , nhóm bảo mật Ubuntu .

Rò rỉ thông tin thông qua các cuộc tấn công kênh bên thực hiện đầu cơ (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 aka Spectre và Meltdown)

Nó đã được phát hiện ra rằng một lớp tấn công kênh bên mới tác động đến hầu hết các bộ xử lý, bao gồm cả bộ xử lý của Intel, AMD và ARM. Cuộc tấn công cho phép các quá trình không gian người dùng độc hại đọc bộ nhớ kernel và mã độc trong khách để đọc bộ nhớ hypanneror. Để giải quyết vấn đề, sẽ cần cập nhật cho kernel Ubuntu và bộ vi xử lý. Những cập nhật này sẽ được công bố trong Thông báo bảo mật Ubuntu trong tương lai khi chúng có sẵn.

Ví dụ triển khai trong JavaScript

Là một bằng chứng về khái niệm, mã JavaScript đã được viết rằng, khi chạy trong trình duyệt Google Chrome, cho phép JavaScript đọc bộ nhớ riêng từ quá trình chạy.

Hệ thống của tôi dường như bị ảnh hưởng bởi lỗ hổng bóng ma. Tôi đã biên soạn và thực hiện bằng chứng khái niệm này ( spectre.c).

Thông tin hệ thống:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

Làm cách nào để giảm thiểu lỗ hổng Spectre và Meldown trên các hệ thống Linux?

Đọc thêm: Sử dụng Meltdown để đánh cắp mật khẩu trong thời gian thực .

Cập nhật

Sử dụng Spectre & Meltdown Checkersau khi chuyển sang 4.9.0-5phiên bản kernel theo câu trả lời @Carlos Pasqualini vì bản cập nhật bảo mật có sẵn để giảm thiểu cve-2017-5754 trên debian Stretch:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Cập nhật ngày 25 tháng 1 năm 2018

Các spectre-meltdown-checkerkịch bản được chính thức đóng gói bằng debian, nó có sẵn cho Debian Stretch qua kho backports, Buster và Sid.

Cập nhật ngày 22/05/2018

Cửa hàng đầu cơ bỏ qua (SSB) - còn được gọi là Biến thể 4

Các hệ thống có bộ vi xử lý sử dụng thực thi đầu cơ và thực thi đầu cơ bộ nhớ đọc trước khi biết địa chỉ của tất cả các lần ghi bộ nhớ trước có thể cho phép tiết lộ thông tin trái phép cho kẻ tấn công có quyền truy cập người dùng cục bộ thông qua phân tích kênh bên.

Đăng ký hệ thống Rogue Đọc (RSRE) - còn được gọi là Biến thể 3a

Các hệ thống có bộ vi xử lý sử dụng thực thi đầu cơ và thực hiện đọc đầu cơ các thanh ghi hệ thống có thể cho phép tiết lộ trái phép các tham số hệ thống cho kẻ tấn công có quyền truy cập người dùng cục bộ thông qua phân tích kênh bên.

Chỉnh sửa ngày 27 tháng 7 năm 2018

NetSpectre: Đọc bộ nhớ tùy ý qua mạng

Trong bài báo này, chúng tôi trình bày NetSpectre, một cuộc tấn công mới dựa trên biến thể Spectre 1, không yêu cầu mã do kẻ tấn công kiểm soát trên thiết bị đích, do đó ảnh hưởng đến hàng tỷ thiết bị. Tương tự như một cuộc tấn công Spectre cục bộ, cuộc tấn công từ xa của chúng tôi yêu cầu sự hiện diện của tiện ích Spectre trong mã của mục tiêu. Chúng tôi cho thấy rằng các hệ thống chứa các tiện ích Spectre cần thiết trong giao diện mạng hoặc API bị lộ có thể bị tấn công bằng cuộc tấn công Spectre từ xa chung của chúng tôi, cho phép đọc bộ nhớ tùy ý qua mạng. Kẻ tấn công chỉ gửi một loạt các yêu cầu được tạo ra cho nạn nhân và đo thời gian phản hồi để rò rỉ một giá trị bí mật từ bộ nhớ của nạn nhân.



1
Tôi đã xóa thẻ Debian để cho phép Q này áp dụng cho tất cả Linux (theo tiêu đề); hoàn nguyên nếu đó là ý định của bạn chỉ tập trung vào điều này trên Debian.
Jeff Schaller

Câu trả lời:


12

Alan Cox đã chia sẻ một liên kết từ blog của AMD: https://www.amd.com/en/cor merg / speculation-execut

Biến thể thứ nhất: Giới hạn kiểm tra giới hạn

Được giải quyết bằng các bản cập nhật phần mềm / HĐH được cung cấp bởi các nhà cung cấp và nhà sản xuất hệ thống. Tác động hiệu quả không đáng kể dự kiến.

Biến thể hai: Mục tiêu tiêm

Sự khác biệt trong kiến ​​trúc AMD có nghĩa là có nguy cơ khai thác biến thể này gần như bằng không. Tính dễ bị tổn thương đối với Biến thể 2 cho đến nay vẫn chưa được chứng minh trên bộ xử lý AMD.

Biến thể thứ ba: Tải dữ liệu bộ nhớ cache Rogue

Lỗ hổng AMD không do sự khác biệt về kiến ​​trúc AMD.

Mặc dù vậy, sẽ rất tốt nếu có xác nhận về tuyên bố của AMD bởi bên thứ ba.

'Giảm thiểu' trên các hệ thống bị ảnh hưởng, sẽ yêu cầu kernel mới và khởi động lại, nhưng trên nhiều bản phân phối chưa có các gói được phát hành với các bản sửa lỗi:

Debian:

Các nguồn thông tin khác tôi tìm thấy:


12
Cả một loạt thông tin AMD sẽ không giúp được người hỏi có CPU là Intel Core.
JdeBP

4
Đối với nhân Linux, hãy xem bài đăng của Greg Kroah-Hartman: kroah.com/log/blog/2018/01/06/meltdown-status
alanc

Theo các trang debian được liên kết ở trên (và các trang được liên kết trong đó), có vẻ như các bản vá kernel sẽ được phân phối khi các nhà cung cấp có trách nhiệm xuất bản microcode của họ. Tuy nhiên, từ security-tracker.debian.org/tracker/CVE-2017-5754 (bản sửa lỗi duy nhất cho đến nay) có vẻ như các bản sửa lỗi chỉ được cung cấp cho các bản phát hành ổn định và không ổn định. Có ai biết nếu chúng ta có thể mong đợi các bản sửa lỗi cho old Ổn định ("jessie") không? Tôi đã không thể tìm thấy bất kỳ tuyên bố nào của Debian hoặc nhóm Bảo mật Debian về vấn đề này ...
Shevek

11

Ngày 27 tháng 1 năm 2018 Intel Microcode phá vỡ một số hệ thống

Bản cập nhật Intel Microcode 2018-01-08 để giải quyết các lỗ hổng bảo mật phân nhánh thực thi đầu cơ đã phá vỡ một số hệ thống. Điều này ảnh hưởng đến nhiều hệ thống Ubuntu từ ngày 8 tháng 1 đến ngày 21 tháng 1. Vào ngày 22 tháng 1 năm 2018, Ubuntu đã phát hành một bản cập nhật đưa lại Microcode cũ hơn từ 2017-07-07.

Nếu bạn gặp vấn đề với các bản cập nhật, hãy cài đặt lại Ubuntu và tắt các bản cập nhật trong khoảng thời gian từ 2018-01-08 đến 2018-01-22, bạn có thể muốn thử lại bản cập nhật tự động của Ubuntu.

Ngày 16 tháng 1 năm 2018 cập nhật Spectre trong 4.14,14 và 4.9.77

Nếu bạn đang chạy các phiên bản Kernel 4.14.13 hoặc 4.9.76 như tôi thì không cần cài đặt 4.14.144.9.77khi chúng ra mắt trong một vài ngày để giảm thiểu lỗ hổng bảo mật Spectre. Tên của bản sửa lỗi này là Retpoline và không có hiệu năng nghiêm trọng được suy đoán trước đây:

Greg Kroah-Hartman đã gửi các bản vá mới nhất cho các bản phát hành Linux 4.9 và 4.14, hiện bao gồm hỗ trợ Retpoline.

X86_FEATURE_RETPOLINE này được bật cho tất cả các CPU AMD / Intel. Để được hỗ trợ đầy đủ, bạn cũng cần xây dựng kernel bằng trình biên dịch GCC mới hơn có chứa hỗ trợ -mindirect-Branch = thunk-extern. Các thay đổi GCC đã hạ cánh trong GCC 8.0 ngày hôm qua và đang trong quá trình có khả năng được chuyển ngược lại thành GCC 7.3.

Những người muốn vô hiệu hóa hỗ trợ Retpoline có thể khởi động các hạt nhân được vá bằng noretpoline .

Không cần đi sâu vào chi tiết về JavaScript ở đây là làm thế nào để tránh ngay lỗ hổng Meltdown (và kể từ ngày 10 tháng 1 năm 2018, bảo vệ Spectre)

Cập nhật ngày 12 tháng 1 năm 2018

Bảo vệ ban đầu khỏi Spectre là ở đây và sẽ được cải thiện trong vài tuần và tháng tới.

Hạt nhân Linux 4.14.13, 4.9.76 LTS và 4.4.111 LTS

Từ bài viết này của Softpedia :

Các hạt nhân Linux 4.14.13, 4.9.76 LTS và 4.4.111 LTS hiện có sẵn để tải xuống từ kernel.org và chúng bao gồm nhiều bản sửa lỗi hơn cho lỗ hổng bảo mật Spectre, cũng như một số hồi quy từ Linux 4.14.12, 4.9 .75 LTS và 4.4.110 hạt nhân LTS được phát hành tuần trước, như một số vấn đề nhỏ được báo cáo.

Các vấn đề này dường như đã được khắc phục ngay bây giờ, do đó, an toàn khi cập nhật các hệ điều hành dựa trên Linux của bạn lên các phiên bản kernel mới được phát hành ngày hôm nay, bao gồm nhiều bản cập nhật x86, một số bản sửa lỗi PA-RISC, s390 và PowerPC (PPC), các cải tiến khác nhau để trình điều khiển (Intel i915, crypto, IOMMU, MTD) và các thay đổi lõi và lõi thông thường.

Nhiều người dùng đã gặp sự cố với các bản cập nhật Ubuntu LTS vào ngày 4 tháng 1 năm 2018 và ngày 10 tháng 1 năm 2018. Tôi đã sử dụng 4.14.13trong một vài ngày mà không gặp bất kỳ sự cố nào tuy nhiên YMMV .


Cập nhật ngày 7 tháng 1 năm 2018

Greg Kroah-Hartman đã viết một bản cập nhật trạng thái về lỗ hổng bảo mật Meltdown và Spectre Linux Kernel ngày hôm qua. Một số người có thể gọi anh ta là người đàn ông mạnh thứ hai trong thế giới Linux ngay bên cạnh Linus. Bài viết đề cập đến các hạt nhân ổn định (được thảo luận dưới đây) và các hạt nhân LTS mà phần lớn người dùng Ubuntu có.


Linux Kernels 4.14.11, 4.9.74, 4.4.109, 3.16.52 và 3.2.97 Bản vá lỗi Meltdown

Từ bài viết này :

Người dùng được khuyến khích cập nhật hệ thống của họ ngay lập tức

Ngày 4 tháng 1 năm 2018 01:42 GMT · Bởi Marius Nestor

Các nhà bảo trì hạt nhân Linux Greg Kroah-Hartman và Ben Hutchings đã phát hành các phiên bản mới của loạt nhân Linux 4.14, 4.9, 4.4, 3.16, 3.18 và 3.12 LTS (Hỗ trợ dài hạn) dường như vá một trong hai lỗ hổng bảo mật quan trọng ảnh hưởng đến hiện đại nhất bộ xử lý.

Các hạt nhân Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91 và 3.2.97 hiện có sẵn để tải xuống từ trang web kernel.org và người dùng được khuyến khích cập nhật các bản phân phối GNU / Linux của họ cho các phiên bản mới này nếu chúng chạy bất kỳ chuỗi kernel nào ngay lập tức. Tại sao phải cập nhật? Bởi vì họ rõ ràng đã vá một lỗ hổng nghiêm trọng được gọi là Meltdown.

Như đã báo cáo trước đó, Meltdown và Spectre là hai khai thác ảnh hưởng đến gần như tất cả các thiết bị được cung cấp bởi bộ xử lý hiện đại (CPU) được phát hành trong 25 năm qua. Vâng, điều đó có nghĩa là hầu hết tất cả các điện thoại di động và máy tính cá nhân. Meltdown có thể bị khai thác bởi một kẻ tấn công không có đặc quyền để lấy thông tin nhạy cảm được lưu trữ trong bộ nhớ kernel.

Bản vá cho lỗ hổng Spectre vẫn còn trong công trình

Mặc dù Meltdown là một lỗ hổng nghiêm trọng có thể làm lộ dữ liệu bí mật của bạn, bao gồm cả mật khẩu và khóa mã hóa, Spectre thậm chí còn tệ hơn và không dễ khắc phục. Các nhà nghiên cứu bảo mật nói rằng nó sẽ ám ảnh chúng ta trong một thời gian khá dài. Spectre được biết là khai thác kỹ thuật thực thi đầu cơ được sử dụng bởi các CPU hiện đại để tối ưu hóa hiệu suất.

Cho đến khi lỗi Spectre cũng được vá, chúng tôi khuyên bạn ít nhất nên cập nhật các bản phân phối GNU / Linux của mình lên bất kỳ phiên bản kernel Linux mới phát hành nào. Vì vậy, tìm kiếm kho phần mềm của bản phân phối yêu thích của bạn để cập nhật kernel mới và cài đặt nó càng sớm càng tốt. Đừng đợi đến khi quá muộn, hãy làm ngay bây giờ!


Tôi đã sử dụng Kernel 4.14.10 trong một tuần nên việc tải xuống và khởi động Ubuntu Mainline Kernel phiên bản 4.14.11 không phải là vấn đề quá đáng lo ngại đối với tôi.

Người dùng Ubuntu 16.04 có thể thoải mái hơn với các phiên bản kernel 4.4.109 hoặc 4.9.74 được phát hành cùng lúc với 4.14.11.

Nếu các bản cập nhật thường xuyên của bạn không cài đặt phiên bản Kernel mà bạn mong muốn, bạn có thể thực hiện theo cách thủ công sau đây Hỏi câu trả lời Ubuntu: https://askubfox.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-phiên bản / 879920 # 879920


4.14.12 - Thật là một sự khác biệt mỗi ngày

Chưa đầy 24 giờ sau câu trả lời ban đầu của tôi, một bản vá đã được phát hành để sửa phiên bản kernel 4.14.11 mà chúng có thể đã vội vã xuất hiện. Nâng cấp lên 4.14.12 được khuyến nghị cho tất cả người dùng 4.14.11. Greg-KH nói :

Tôi đang thông báo phát hành kernel 4.14.12.

Tất cả người dùng của dòng kernel 4.14 phải nâng cấp.

Có một vài vấn đề nhỏ vẫn được biết đến với bản phát hành này mà mọi người đã gặp phải. Hy vọng rằng chúng sẽ được giải quyết vào cuối tuần này, vì các bản vá chưa rơi vào cây của Linus.

Để bây giờ, như mọi khi, xin vui lòng kiểm tra trong môi trường của bạn.

Nhìn vào bản cập nhật này, không có nhiều dòng mã nguồn được thay đổi.


1
Giải pháp tồn tại cho Meltdown bây giờ, có sẵn thông qua apt-get dist-upgrade.
luchonacho

1
Trên điện thoại của tôi bây giờ nhưng cập nhật trên LTS khiến kernel hoảng loạn vào ngày 1/10/2018. Xem Hỏi Ubuntu.
WinEunuuchs2Unix

1
May mắn thay, tôi đã cập nhật nó với 109 (108 cho kernel hoảng loạn). Vì vậy, không có vấn đề đó. Nó hoạt động tốt.
luchonacho

1
@ WinEunuuchs2Unix có một bản cập nhật ở đây USN-3531-2: Hồi quy mã vi mô của Intel
GAD3R

1
@ GAD3R Cảm ơn bạn rất nhiều vì liên kết. Nó giúp tôi đăng câu trả lời trong Hỏi Ubuntu có thể giúp nhiều người: Askubfox.com/questions/998471/ mẹo
WinEunuuchs2Unix

6

Lỗ hổng này có thể được khai thác từ xa bằng cách truy cập trang web JavaScript.

Thật. Vì vậy, một giảm thiểu hợp lý là vô hiệu hóa JavaScript trong các trình duyệt web của bạn hoặc sử dụng các trình duyệt web không hỗ trợ JavaScript.

Hầu hết các trình duyệt hỗ trợ JavaScript đều có cài đặt để vô hiệu hóa nó. Ngoài ra, nếu bạn muốn duy trì danh sách trắng các trang web hoặc tên miền cho phép JavaScript, thì có nhiều tiện ích bổ sung khác nhau có thể hỗ trợ, chẳng hạn như uBlock OriginNoScript .

NB Nên đi mà không nói rằng vô hiệu hóa / hạn chế JavaScript không phải là giảm thiểu duy nhất của bạn . Bạn cũng nên xem lại (và có thể áp dụng) mọi sửa lỗi kernel có liên quan và các cập nhật bảo mật khác sau khi chúng được viết, kiểm tra và xuất bản. Trên các bản phân phối Debian có nguồn gốc từ, lệnh sử dụng như sudo apt update , sudo apt list-upgradable, và sudo apt upgrade.

Cập nhật: đừng tin lời tôi. Alan Cox nói nhiều như nhau:

Điều bạn cần quan tâm về thời gian lớn là javascript vì việc khai thác có thể được javascript sử dụng từ xa trên các trang web để đánh cắp nội dung từ bộ nhớ hệ thống của bạn. ... Hãy xem xét những thứ như Adblockers và tiện ích mở rộng như noscript có thể ngăn chặn rất nhiều rác đang chạy ở nơi đầu tiên. Làm điều đó càng sớm càng tốt. Khi cập nhật hệ điều hành xuất hiện áp dụng chúng. ( Nguồn )


5
Xin lỗi, mặc dù điều này giúp chống lại attac, nhưng không có JS, bạn sẽ không thể để lại câu trả lời ở đây. Lời khuyên này tương tự như "ngừng sử dụng Internet" (năm 2018).
Moritz Cả

4
@MoritzBoth, rất may, nhiều trang web hoạt động tốt mà không cần JS. Đáng buồn thay, StackExchange không yêu cầu JS để đăng, như bạn chỉ ra. Đó là một thiếu sót (nghiêm trọng!) Trong SE :(
sampablokuper

3
Đối với FireFox, một noScript như addon có thể giúp giảm việc sử dụng JavaScript trên các trang web đáng ngờ - mặc dù những thay đổi gần đây do FF Quantum (V57) mang lại đã ném một viên đá rất lớn vào toàn bộ nhóm addon FF ...
SlySven

2
Kể từ khi phát hành Lượng tử, tôi đã chuyển sang Mặt trăng nhạt, vì lý do này chính xác. Hoạt động với tôi thực sự tốt, bao gồm NoScript và Cookie Masters (từng là Cookie Monster).
Murphy

2
@MoritzBoth Tôi thực sự không nghĩ rằng việc vô hiệu hóa số tiền JS để "ngừng sử dụng web", ít hơn nhiều là "ngừng sử dụng internet". Tuy nhiên, đây là thời điểm tuyệt vời để nâng cao nhận thức về các vấn đề đi kèm với sự phụ thuộc phổ biến vào JS từ một số nhà cung cấp nội dung web.
Tobia Tesan

5

Thực tế là điều này có thể khai thác bằng JavaScript không phải là điểm chính và không phải là mối quan tâm chính (mặc dù đây là vấn đề chính vì cách này có thể dễ dàng thực thi mã từ xa trên hệ thống của bạn, nhưng đây không phải là duy nhất cách này có thể xảy ra).

Bạn không nên tập trung vào Javascript và / hoặc trình duyệt của bạn. Lý tưởng nhất, CPU của bạn nên được vá. Thật không may, đối với hầu hết các làn sóng lỗi hiện tại, điều này dường như không thể xảy ra. Debian, cùng với tất cả các bên cung cấp hệ điều hành khác, do đó, chỉ có một cách khả thi khác là đề xuất một CPU không hoàn hảo: họ buộc hệ thống phải khắc phục lỗi trong CPU. Những bản vá đó không khắc phục được vấn đề. Thay vào đó, HĐH che giấu chúng tốt nhất có thể từ bất kỳ chương trình nào mà người dùng chạy trên máy (và do đó, cũng là trình duyệt của bạn).

Ẩn này là công việc tính toán thêm, và do đó hiệu suất hệ thống tổng thể của bạn sẽ thấp hơn không có. Thấp hơn bao nhiêu phụ thuộc rất nhiều vào chính xác những gì các chương trình đó làm.

Với ý nghĩ đó, hãy quay lại câu hỏi của bạn: những gì bạn có thể làm để bảo vệ hệ thống Debian của mình là cài đặt các bản cập nhật bảo mật. Tôi tin tưởng rằng Debian sẽ làm mọi thứ có thể trong ánh sáng của những lỗi này để chạy Debian một cách an toàn nhất có thể bất chấp các lỗi CPU vốn có.

Tất cả các loại công ty lớn đã làm việc về vấn đề này, và rất nhiều chuyên gia về phần cứng và Linux. Tôi không muốn tuyệt đối kìm hãm bạn khỏi việc tự mình thử điều gì đó hoặc cố gắng giúp đỡ nỗ lực chung. Tuy nhiên, nếu bảo mật của bạn và khắc phục kịp thời là tất cả những gì bạn quan tâm, thì rất có thể họ sẽ tìm ra giải pháp tốt hơn trong thời gian ngắn hơn bạn, bắt đầu ngay bây giờ để tự mình xem xét vấn đề này.

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.