Bagaimana cara mengurangi kerentanan Spectre dan Meltdown pada sistem Linux?


34

Peneliti keamanan telah menerbitkan di Project Zero kerentanan baru yang disebut Specter and Meltdown yang memungkinkan program untuk mencuri informasi dari memori program lain. Ini mempengaruhi arsitektur Intel, AMD dan ARM.

Kekurangan ini dapat dieksploitasi dari jarak jauh dengan mengunjungi situs web JavaScript. Rincian teknis dapat ditemukan di situs web redhat , tim keamanan Ubuntu .

Informasi Kebocoran melalui serangan sisi saluran eksekusi spekulatif (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 alias Spectre and Meltdown)

Ditemukan bahwa serangan samping saluran kelas baru berdampak pada sebagian besar prosesor, termasuk prosesor dari Intel, AMD, dan ARM. Serangan itu memungkinkan proses userspace jahat untuk membaca memori kernel dan kode berbahaya di tamu untuk membaca memori hypervisor. Untuk mengatasi masalah ini, pembaruan untuk kernel Ubuntu dan mikrokode prosesor akan diperlukan. Pembaruan ini akan diumumkan di Pemberitahuan Keamanan Ubuntu di masa mendatang begitu tersedia.

Contoh Implementasi dalam JavaScript

Sebagai bukti konsep, kode JavaScript ditulis bahwa, ketika dijalankan di browser Google Chrome, memungkinkan JavaScript untuk membaca memori pribadi dari proses di mana ia berjalan.

Sistem saya tampaknya dipengaruhi oleh kerentanan momok. Saya telah menyusun dan menjalankan proof-of-concept ( spectre.c) ini.

Sistem Informasi:

$ 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

Bagaimana cara mengurangi kerentanan Spectre dan Meldown pada sistem Linux?

Bacaan lebih lanjut: Menggunakan Meltdown untuk mencuri kata sandi secara real time .

Memperbarui

Menggunakan Spectre & Meltdown Checkersetelah beralih ke 4.9.0-5versi kernel berikut @Carlos Pasqualini menjawab karena pembaruan keamanan tersedia untuk mengurangi cve-2017-5754 pada 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)

Perbarui 25 Jan 2018

The spectre-meltdown-checkerScript secara resmi dikemas dengan debian, tersedia untuk Debian Peregangan melalui backports repositori, Buster dan Sid.

Perbarui 05/22/2018

Bypass Store Spekulatif (SSB) - juga dikenal sebagai Varian 4

Sistem dengan mikroprosesor yang memanfaatkan eksekusi spekulatif dan eksekusi spekulatif dari memori yang dibaca sebelum alamat semua penulisan memori sebelumnya diketahui dapat memungkinkan pengungkapan informasi tanpa izin kepada penyerang dengan akses pengguna lokal melalui analisis saluran samping.

Rogue System Register Read (RSRE) - juga dikenal sebagai Variant 3a

Sistem dengan mikroprosesor yang memanfaatkan eksekusi spekulatif dan yang melakukan pembacaan spekulatif register sistem dapat memungkinkan pengungkapan parameter sistem yang tidak sah kepada penyerang dengan akses pengguna lokal melalui analisis saluran samping.

Edit 27 Juli 2018

NetSpectre: Baca Memori Sewenang-wenang melalui Jaringan

Dalam makalah ini, kami menyajikan NetSpectre, serangan baru berdasarkan Spectre varian 1, tidak memerlukan kode yang dikendalikan penyerang pada perangkat target, sehingga mempengaruhi miliaran perangkat. Mirip dengan serangan Spectre lokal, serangan jarak jauh kami memerlukan kehadiran gadget Spectre dalam kode target. Kami menunjukkan bahwa sistem yang mengandung gadget Spectre yang diperlukan dalam antarmuka jaringan yang terbuka atau API dapat diserang dengan serangan Spectre jarak jauh generik kami, memungkinkan untuk membaca memori sewenang-wenang melalui jaringan. Penyerang hanya mengirim serangkaian permintaan kepada korban dan mengukur waktu respons untuk membocorkan nilai rahasia dari ingatan korban.



1
Saya menghapus tag Debian untuk memungkinkan Q ini berlaku untuk semua Linux (sesuai judulnya); kembalikan jika niat Anda untuk memfokuskan ini hanya pada Debian.
Jeff Schaller

Jawaban:


12

Alan Cox membagikan tautan dari blog AMD: https://www.amd.com/en/corporate/speculative-execution

Varian Satu: Batas Periksa Bypass

Diselesaikan oleh pembaruan perangkat lunak / OS agar disediakan oleh vendor dan produsen sistem. Dampak kinerja yang dapat diabaikan diharapkan.

Varian Dua: Injeksi Target Cabang

Perbedaan dalam arsitektur AMD berarti ada hampir nol risiko eksploitasi varian ini. Kerentanan terhadap Varian 2 belum ditunjukkan pada prosesor AMD hingga saat ini.

Varian Tiga: Load Cache Data Nakal

Nol kerentanan AMD karena perbedaan arsitektur AMD.

Akan lebih baik untuk memiliki konfirmasi pernyataan AMD ini oleh pihak ketiga.

'Mitigasi' pada sistem yang terkena dampak, akan membutuhkan kernel baru dan reboot, tetapi pada banyak distribusi belum ada paket yang dirilis dengan perbaikan:

Debian:

Sumber informasi lain yang saya temukan:


12
Sejumlah besar informasi AMD tidak akan membantu penanya yang CPU-nya adalah Intel Core.
JdeBP

4
Untuk kernel Linux, lihat posting Greg Kroah-Hartman: kroah.com/log/blog/2018/01/06/meltdown-status
alanc

Menurut halaman debian yang ditautkan di atas (dan halaman yang ditautkan di dalamnya) nampaknya patch kernel akan didistribusikan ketika vendor yang bertanggung jawab menerbitkan mikrokode mereka. Namun, dari security-tracker.debian.org/tracker/CVE-2017-5754 (satu-satunya yang diperbaiki sejauh ini) tampaknya perbaikan hanya tersedia untuk rilis yang stabil dan tidak stabil. Adakah yang tahu kalau kita bisa mengharapkan perbaikan untuk oldstable ("jessie")? Saya belum dapat menemukan pernyataan dari Debian atau tim Keamanan Debian mengenai masalah ini ...
Shevek

11

27 Januari 2018 Intel Microcode memecah beberapa sistem

The Intel Microcode Perbarui 2018/01/08 untuk mengatasi eksekusi spekulatif bercabang lubang keamanan pecah beberapa sistem. Ini mempengaruhi banyak sistem Ubuntu dari 8 Januari hingga 21 Januari. Pada 22 Januari 2018 Ubuntu merilis pembaruan yang mengembalikan Microcode lama dari 2017-07-07.

Jika Anda mengalami masalah dengan pembaruan, instal ulang Ubuntu dan matikan pembaruan antara 2018-01-08 dan 2018-01-22 Anda mungkin ingin mencoba pembaruan otomatis Ubuntu lagi.

16 Januari 2018 memperbarui Specter di 4.14.14 dan 4.9.77

Jika Anda sudah menjalankan versi Kernel 4.14.13 atau 4.9.76 seperti saya, ini adalah hal yang sulit untuk diinstal 4.14.14dan 4.9.77ketika mereka keluar dalam beberapa hari untuk mengurangi lubang keamanan Spectre. Nama perbaikan ini adalah Retpoline dan tidak memiliki performa hebat yang diperkirakan sebelumnya:

Greg Kroah-Hartman telah mengirimkan tambalan terbaru untuk rilis poin Linux 4.9 dan 4.14, yang sekarang termasuk dukungan Retpoline.

X86_FEATURE_RETPOLINE ini diaktifkan untuk semua CPU AMD / Intel. Untuk dukungan penuh Anda juga perlu membangun kernel dengan kompiler GCC baru yang berisi -mindirect-branch = dukungan thunk-extern. Perubahan GCC mendarat di GCC 8.0 kemarin dan sedang dalam proses porting kembali ke GCC 7.3.

Mereka yang ingin menonaktifkan dukungan Retpoline dapat mem-boot kernel yang ditambal dengan noretpoline .

Tanpa memasukkan rincian JavaScript di sini adalah cara untuk segera menghindari lubang Meltdown (dan pada 10 Januari 2018, Spectre protection)

Pembaruan 12 Januari 2018

Perlindungan awal dari Specter ada di sini dan akan ditingkatkan dalam beberapa minggu dan bulan mendatang.

Kernel Linux 4.14.13, 4.9.76 LTS, dan 4.4.111 LTS

Dari artikel Softpedia ini :

Kernel Linux 4.14.13, 4.9.76 LTS, dan 4.4.111 LTS sekarang tersedia untuk diunduh dari kernel.org, dan mereka menyertakan lebih banyak perbaikan terhadap kerentanan keamanan Specter, serta beberapa regresi dari Linux 4.14.12, 4.9 .75 LTS, dan 4.4.110 kernel LTS dirilis minggu lalu, karena beberapa melaporkan masalah kecil.

Masalah-masalah ini tampaknya sudah diperbaiki sekarang, jadi aman untuk memperbarui sistem operasi berbasis Linux Anda ke versi kernel baru yang dirilis hari ini, yang mencakup lebih banyak pembaruan x86, beberapa perbaikan PA-RISC, s390, dan PowerPC (PPC), berbagai perbaikan untuk driver (Intel i915, crypto, IOMMU, MTD), dan perubahan kernel inti dan mm yang biasa.

Banyak pengguna memiliki masalah dengan pembaruan Ubuntu LTS pada tanggal 4 Januari 2018 dan 10 Januari 2018. Saya telah menggunakan 4.14.13selama beberapa hari tanpa masalah namun YMMV .


7 Januari 2018 pembaruan

Greg Kroah-Hartman menulis pembaruan status pada lubang keamanan Kernel Meltdown dan Specter Linux kemarin. Beberapa mungkin memanggilnya orang paling kuat kedua di dunia Linux tepat di sebelah Linus. Artikel ini membahas kernel stabil (dibahas di bawah) dan kernel LTS yang dimiliki sebagian besar pengguna Ubuntu.


Kernel Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, dan 3.2.97 Patch Meltdown Flaw

Dari artikel ini :

Pengguna didesak untuk segera memperbarui sistem mereka

4 Jan 2018 01:42 GMT · Oleh Marius Nestor

Pemelihara kernel Linux Greg Kroah-Hartman dan Ben Hutchings telah merilis versi baru dari Linux 4.14, 4.9, 4.4, 3.16, 3.18, dan 3.12 seri kernel LTS (Long Term Support) yang tampaknya menambal salah satu dari dua kelemahan keamanan kritis yang mempengaruhi paling modern pengolah.

Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91, dan 3.2.97 kernel sekarang tersedia untuk diunduh dari situs kernel.org, dan pengguna didesak untuk memperbarui distribusi GNU / Linux mereka ke versi baru ini jika mereka menjalankan salah satu dari seri kernel tersebut dengan segera. Mengapa memperbarui? Karena mereka tampaknya menambal kerentanan kritis yang disebut Meltdown.

Seperti yang dilaporkan sebelumnya, Meltdown dan Specter adalah dua eksploitasi yang mempengaruhi hampir semua perangkat yang ditenagai oleh prosesor modern (CPU) yang dirilis dalam 25 tahun terakhir. Ya, itu berarti hampir semua ponsel dan komputer pribadi. Meltdown dapat dieksploitasi oleh penyerang tidakrivil untuk secara jahat memperoleh informasi sensitif yang disimpan dalam memori kernel.

Kerentanan Patch untuk Spectre masih dalam pengerjaan

Walaupun Meltdown adalah kerentanan serius yang dapat mengekspos data rahasia Anda, termasuk kata sandi dan kunci enkripsi, Specter bahkan lebih buruk, dan itu tidak mudah untuk diperbaiki. Peneliti keamanan mengatakan itu akan menghantui kita selama beberapa waktu. Spectre diketahui mengeksploitasi teknik eksekusi spekulatif yang digunakan oleh CPU modern untuk mengoptimalkan kinerja.

Sampai bug Spectre juga ditambal, sangat disarankan agar Anda setidaknya memperbarui distribusi GNU / Linux Anda ke versi kernel Linux yang baru dirilis. Jadi cari repositori perangkat lunak dari distro favorit Anda untuk pembaruan kernel baru dan instal sesegera mungkin. Jangan tunggu sampai terlambat, lakukan sekarang!


Saya telah menggunakan Kernel 4.14.10 selama seminggu sehingga mengunduh dan mem-boot Ubuntu Mainline Kernel versi 4.14.11 tidak terlalu menjadi masalah bagi saya.

Pengguna Ubuntu 16.04 mungkin lebih nyaman dengan versi kernel 4.4.109 atau 4.9.74 yang dirilis bersamaan dengan 4.14.11.

Jika pembaruan rutin Anda tidak menginstal versi Kernel yang Anda inginkan, Anda dapat melakukannya secara manual dengan mengikuti ini Tanya jawab Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-versi / 879920 # 879920


4.14.12 - Apa perbedaan dalam sehari

Kurang dari 24 jam setelah jawaban awal saya, sebuah patch dirilis untuk memperbaiki versi kernel 4.14.11 yang mungkin telah mereka buru-buru. Upgrade ke 4.14.12 direkomendasikan untuk semua pengguna 4.14.11. Greg-KH mengatakan :

Saya mengumumkan rilis kernel 4.14.12.

Semua pengguna seri 4.14 kernel harus memutakhirkan.

Ada beberapa masalah kecil yang masih diketahui dengan rilis ini bahwa orang telah mengalami. Semoga mereka akan diselesaikan akhir pekan ini, karena tambalan belum mendarat di pohon Linus.

Untuk saat ini, seperti biasa, silakan coba di lingkungan Anda.

Melihat pembaruan ini tidak banyak baris kode sumber yang diubah.


1
Solusi ada untuk Meltdown sekarang, tersedia melalui apt-get dist-upgrade.
luchonacho

1
Di ponsel saya sekarang tetapi pembaruan pada LTS menyebabkan panik kernel pada 1/10/2018. Lihat Tanya Ubuntu.
WinEunuuchs2Unix

1
Untungnya saya memperbaruinya dengan 109 (108 memberikan panik kernel). Jadi tidak ada masalah itu. Ini bekerja dengan baik.
luchonacho

1
@ WinEunuuchs2Unix ada pembaruan di sini USN-3531-2: Intel Microcode regression
GAD3R

1
@ GAD3R Terima kasih banyak atas tautannya. Ini membantu saya mengirim jawaban di Tanya Ubuntu yang dapat membantu banyak orang: askubuntu.com/questions/998471/…
WinEunuuchs2Unix

6

Kekurangan ini dapat dieksploitasi dari jarak jauh dengan mengunjungi situs web JavaScript.

Memang. Jadi, satu mitigasi yang masuk akal adalah dengan menonaktifkan JavaScript di peramban web Anda, atau menggunakan peramban web yang tidak mendukung JavaScript.

Sebagian besar browser yang mendukung JavaScript memiliki pengaturan untuk menonaktifkannya. Atau, jika Anda ingin mempertahankan daftar putih situs atau domain yang memungkinkan JavaScript, maka ada berbagai add-on yang dapat membantu, seperti uBlock Origin dan NoScript .

NB Seharusnya tanpa mengatakan bahwa menonaktifkan / membatasi JavaScript tidak hanya menjadi milik Anda mitigasi Anda. Anda juga harus meninjau (dan mungkin menerapkan) perbaikan kernel yang relevan dan pembaruan keamanan lainnya setelah itu ditulis, diuji dan diterbitkan. Pada distribusi Debian diturunkan, digunakan perintah seperti sudo apt update , sudo apt list-upgradable, dan sudo apt upgrade.

Memperbarui: jangan terima kata-kata saya untuk itu. Alan Cox mengatakan hal yang sama:

Yang perlu Anda perhatikan adalah waktu javascript karena exploit dapat digunakan dari jarak jauh oleh javascript di halaman web untuk mencuri barang-barang dari memori sistem Anda. ... pertimbangkan hal-hal seperti Adblockers dan ekstensi seperti noscript yang dapat menghentikan banyak sampah yang berjalan. Lakukan secepat mungkin. Ketika pembaruan OS muncul, terapkan. ( Sumber )


5
Maaf, meskipun ini membantu melawan attac, tanpa JS, Anda tidak akan bisa meninggalkan jawabannya di sini. Nasihat ini mirip dengan "berhenti menggunakan Internet" (tahun 2018).
Moritz Keduanya

4
@MoritzBoth, untungnya, banyak situs berfungsi dengan baik tanpa JS. Sayangnya, StackExchange memang membutuhkan JS untuk diposkan, seperti yang Anda tunjukkan. Itu adalah kekurangan (serius!) Di SE :(
sampablokuper

3
Untuk FireFox, noScript seperti addon mungkin membantu mengurangi penggunaan JavaScript di situs yang meragukan - meskipun perubahan terbaru yang dibawa oleh FF Quantum (V57) telah melemparkan batu yang sangat besar ke seluruh kumpulan addon FF ...
SlySven

2
Sejak rilis Quantum saya telah beralih ke Pale Moon, untuk alasan ini. Bekerja dengan baik untuk saya, termasuk NoScript dan Cookie Master (Cookie Monster sekali).
Murphy

2
@MoritzBoth Saya benar-benar tidak berpikir bahwa menonaktifkan jumlah JS untuk "berhenti menggunakan web", apalagi "berhenti menggunakan internet". Namun, ini adalah saat yang tepat untuk meningkatkan kesadaran tentang masalah yang datang dengan ketergantungan universal pada JS dari beberapa penyedia konten web.
Tobia Tesan

5

Fakta bahwa ini dapat dieksploitasi menggunakan JavaScript bukanlah poin utama, dan seharusnya tidak menjadi perhatian utama (meskipun ini adalah yang utama karena cara ini kode jarak jauh dapat dengan mudah dieksekusi di sistem Anda, tetapi ini bukan satu-satunya cara ini bisa terjadi).

Fokus Anda seharusnya tidak terletak pada Javascript dan / atau browser Anda. Idealnya, CPU Anda harus ditambal. Sayangnya, untuk sebagian besar gelombang bug saat ini hal ini tampaknya tidak mungkin dilakukan. Debian, bersama-sama semua pihak penyedia OS lainnya akan pergi dengan satu-satunya cara lain yang mungkin untuk merekomendasikan CPU yang tidak cacat: mereka memaksa sistem untuk memperbaiki bug di CPU. Tambalan itu tidak memperbaiki masalah. Alih-alih, OS menyembunyikannya sebaik mungkin dari program apa pun yang dijalankan pengguna di mesin (dan karenanya, juga browser Anda).

Persembunyian ini adalah pekerjaan komputasi ekstra, dan dengan demikian kinerja sistem Anda secara keseluruhan akan lebih rendah daripada tanpa. Seberapa jauh lebih rendah sangat tergantung pada apa yang sebenarnya dilakukan program-program itu.

Dengan mengingat hal itu kembali ke pertanyaan Anda: apa yang dapat Anda lakukan untuk melindungi sistem Debian Anda adalah menginstal pembaruan keamanan. Saya percaya bahwa Debian akan melakukan segala yang mungkin mengingat bug ini untuk menjalankan Debian seaman mungkin terlepas dari kekurangan CPU yang melekat.

Semua jenis perusahaan besar sudah menangani masalah ini, begitu juga banyak perangkat keras dan guru Linux. Saya tidak ingin benar-benar menahan Anda dari mencoba sesuatu sendiri atau mencoba membantu upaya umum. Namun, jika keamanan Anda sendiri dan perbaikan tepat waktu adalah yang Anda minati, maka kemungkinan besar mereka akan menemukan solusi yang lebih baik dalam waktu yang lebih singkat daripada Anda, mulai sekarang untuk melihat sendiri ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.