LinuxシステムのSpectreおよびMeltdownの脆弱性を緩和する方法は?


34

セキュリティ研究者は、Project Zeroで、Specter and Meltdownと呼ばれる新しい脆弱性を公​​開しました。これにより、プログラムは他のプログラムの記憶から情報を盗むことができます。Intel、AMD、およびARMアーキテクチャに影響します。

この欠陥は、JavaScript Webサイトにアクセスすることによりリモートで悪用される可能性があります。技術的な詳細は、redhatウェブサイトUbuntuセキュリティチームで見つけることができます。

投機的実行サイドチャネル攻撃による情報漏洩(CVE-2017-5715、CVE-2017-5753、CVE-2017-5754別名SpecterおよびMeltdown)

新しいクラスのサイドチャネル攻撃は、Intel、AMD、ARMのプロセッサを含むほとんどのプロセッサに影響を与えることが発見されました。この攻撃により、悪意のあるユーザースペースプロセスがカーネルメモリを読み取り、ゲストの悪意のあるコードがハイパーバイザーメモリを読み取ることができます。この問題に対処するには、Ubuntuカーネルとプロセッサマイクロコードの更新が必要になります。これらのアップデートは、利用可能になった後のUbuntuセキュリティ通知で発表されます。

JavaScriptでの実装例

概念実証として、JavaScriptコードが作成され、Google Chromeブラウザーで実行すると、JavaScriptが実行プロセスからプライベートメモリを読み取ることができます。

私のシステムは、幽霊の脆弱性の影響を受けているようです。この概念実証(spectre.c)をコンパイルして実行しました。

システムインフォメーション:

$ 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

LinuxシステムのSpectreおよびMeldownの脆弱性を緩和する方法は?

さらに読む:Meltdownを使用して、リアルタイムでパスワードを盗みます

更新

debian Stretchのcve-2017-5754を緩和するセキュリティアップデートが利用可能であるため、@ Carlos Pasqualiniの回答に続いSpectre & Meltdown Checker4.9.0-5カーネルバージョンに切り替えた後を使用します。

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)

2018年1月25日更新

このspectre-meltdown-checkerスクリプトはdebianによって公式にパッケージ化されており、バックポートリポジトリであるBusterおよびSidを通じてDebian Stretchで利用できます

アップデート 05/22/2018

投機的ストアバイパス(SSB)–バリアント4とも呼ばれます

すべての以前のメモリ書き込みのアドレスが知られる前にメモリ読み取りの投機的実行と投機的実行を利用するマイクロプロセッサを備えたシステムは、サイドチャネル分析を介してローカルユーザーアクセスを持つ攻撃者への情報の不正開示を許可する可能性があります。

Rogue System Register Read(RSRE)–バリアント3aとも呼ばれます

投機的実行を利用し、システムレジスタの投機的読み取りを実行するマイクロプロセッサを搭載したシステムは、サイドチャネル分析を介してローカルユーザーアクセスを持つ攻撃者にシステムパラメータを不正に開示する可能性があります。

2018年7月27日編集

NetSpectre:ネットワーク経由で任意のメモリを読み取る

このホワイトペーパーでは、Spectreバリアント1に基づく新しい攻撃であるNetSpectreを紹介します。これは、ターゲットデバイスで攻撃者が制御するコードを必要とせず、数十億のデバイスに影響を与えます。ローカルのSpectre攻撃と同様に、リモート攻撃では、ターゲットのコード内にSpectreガジェットが存在する必要があります。公開されたネットワークインターフェースまたはAPIに必要なSpectreガジェットを含むシステムは、一般的なリモートSpecter攻撃で攻撃され、ネットワーク経由で任意のメモリを読み取ることができることを示します。攻撃者は、巧妙に作成された一連の要求を被害者に送信するだけで、応答時間を測定して被害者の記憶から秘密の値を漏らします。



1
Debianタグを削除して、このQをすべてのLinuxに適用できるようにしました(タイトルどおり)。Debianのみにこれを集中させることがあなたの意図である場合、元に戻します。
ジェフシャラー

回答:


12

Alan Coxは、AMDのブログからリンクを共有しました:https : //www.amd.com/en/corporate/speculative-execution

バリアント1:境界チェックのバイパス

システムベンダーおよびメーカーが利用できるようにするソフトウェア/ OSの更新によって解決されます。パフォーマンスへの影響はごくわずかです。

バリエーション2:ブランチターゲットインジェクション

AMDアーキテクチャの違いは、この亜種が悪用されるリスクがほぼゼロであることを意味します。バリアント2の脆弱性は、これまでにAMDプロセッサーで実証されていません。

バリエーション3:不正なデータキャッシュの負荷

AMDアーキテクチャの違いによるゼロAMD脆弱性。

ただし、これらのAMDの声明を第三者が確認することをお勧めします。

影響を受けるシステムの「緩和」には、新しいカーネルと再起動が必要ですが、多くのディストリビューションでは、修正を含むまだリリースされていないパッケージがあります。

Debian:

私が見つけた他の情報源:


12
AMDの情報は、CPUがIntel Coreである質問者には役に立たないでしょう。
JdeBP

4
Linuxカーネルについては、Greg Kroah-Hartmanの投稿を参照してください:kroah.com/log/blog/2018/01/06/meltdown-status
alanc

上記のリンクされたdebianページ(およびそこにリンクされているページ)によると、責任のあるベンダーがマイクロコードを公開すると、カーネルパッチが配布されるようです。ただし、security-tracker.debian.org / tracker / CVE-2017-5754(これまでに修正された唯一のもの)からは、安定版と不安定版のリリースにのみ修正が提供されているようです。旧安定版(「jessie」)の修正を期待できるかどうかは誰にもわかりませんか?この問題に関するDebianまたはDebianセキュリティチームからの声明を見つけることができませんでした...
Shevek

11

2018年1月27日Intel Microcodeは一部のシステムを破壊します

投機的実行分岐セキュリティホールに対処するためのIntel Microcode Update 2018-01-08は、一部のシステムを破壊しました。これにより、1月8日から1月21日まで多くのUbuntuシステムが影響を受けました。2018年1月22日に、Ubuntuは2017-07-07から古いマイクロコードを戻す更新プログラムをリリースしました。

アップデートで問題が発生し、Ubuntuを再インストールし、2018年1月8日から2018年1月22日の間にアップデートをオフにした場合は、Ubuntu自動アップデートを再度試してください。

2018年1月16日、4.14.14および4.9.77のSpectreを更新

私はそれをインストールするには非常に簡単だんだように、あなたはすでにカーネルのバージョン4.14.13または4.9.76を実行している場合4.14.144.9.77、彼らはスペクターのセキュリティホールを軽減するために、数日中に出てくるとき。この修正の名前はRetpolineであり、以前に推測された深刻なパフォーマンスヒットはありません。

Greg Kroah-HartmanがLinux 4.9および4.14ポイントリリースの最新パッチを送信しました。これには現在、Retpolineサポートが含まれています。

このX86_FEATURE_RETPOLINEは、すべてのAMD / Intel CPUで有効です。完全にサポートするには、-mindirect-branch = thunk-externサポートを含む新しいGCCコンパイラでカーネルを構築する必要もあります。GCCの変更は、昨日GCC 8.0に上陸し、GCC 7.3にバックポートされる可能性があります。

Retpolineサポートを無効にしたい場合は、パッチを適用したカーネルをnoretpolineで起動できます。

ここでJavaScriptの詳細に入ることなく、メルトダウンホールをすぐに回避する方法があります(2018年1月10日現在、Spectre保護)

2018年1月12日更新

Spectreからの初期保護はここにあり、今後数週間および数か月で改善されます。

Linuxカーネル4.14.13、4.9.76 LTS、および4.4.111 LTS

このSoftpediaの記事から:

Linuxカーネル4.14.13、4.9.76 LTS、および4.4.111 LTSがkernel.orgからダウンロードできるようになりました。これらには、Spectreセキュリティ脆弱性に対するさらなる修正と、Linux 4.14.12、4.9からの回帰が含まれています。先週リリースされた.75 LTSおよび4.4.110 LTSカーネルは、いくつかのマイナーな問題を報告したためです。

これらの問題は現在修正されているように見えるので、Linuxベースのオペレーティングシステムを本日リリースされた新しいカーネルバージョンに更新しても安全です。これには、x86アップデート、PA-RISC、s390、ドライバ(Intel i915、暗号、IOMMU、MTD)、および通常のmmおよびコアカーネルの変更。

多くのユーザーが2018年1月4日と2018年1月10日にUbuntu LTSの更新に4.14.13問題がありました。YMMVでも問題なく数日間使用しています。


2018年1月7日更新

Greg Kroah-Hartmanは昨日、MeltdownとSpectre Linux Kernelのセキュリティホールに関する最新状況を書いています。ある人は、彼をLinuxの世界で2番目に強力な人で、Linusのすぐ隣にいると呼ぶかもしれません。この記事では、安定したカーネル(以下で説明します)およびUbuntuユーザーの大半が持っているLTSカーネルについて説明しています。


Linuxカーネル4.14.11、4.9.74、4.4.109、3.16.52、および3.2.97パッチのメルトダウンの欠陥

この記事から:

ユーザーはすぐにシステムを更新するように促されます

2018年1月4日01:42 GMT・マリウスネストル

LinuxカーネルのメンテナーであるGreg Kroah-HartmanとBen Hutchingsは、最新のLinuxに影響を与える2つの重大なセキュリティ上の欠陥の1つにパッチを当てるLinux 4.14、4.9、4.4、3.16、3.18、3.12 LTS(Long Term Support)カーネルシリーズの新しいバージョンをリリースしましたプロセッサ。

Linux 4.14.11、4.9.74、4.4.109、3.16.52、3.18.91、および3.2.97カーネルがkernel.org Webサイトからダウンロードできるようになりました。ユーザーはGNU / Linuxディストリビューションを更新することをお勧めしますこれらのカーネルシリーズのいずれかをすぐに実行する場合、これらの新しいバージョンに。更新する理由 明らかに、Meltdownと呼ばれる重大な脆弱性にパッチを当てているためです。

前述のように、MeltdownとSpectreは、過去25年間にリリースされた最新のプロセッサー(CPU)を搭載したほぼすべてのデバイスに影響を与える2つのエクスプロイトです。はい、それはほとんどすべての携帯電話とパソコンを意味します。メルトダウンは、権限のない攻撃者が悪用して、カーネルメモリに保存されている機密情報を悪用する可能性があります。

まだ進行中のSpectre脆弱性に対するパッチ

Meltdownは、パスワードや暗号化キーなどの秘密データを公開する可能性がある重大な脆弱性ですが、Specterはさらに悪化し、修正するのは簡単ではありません。セキュリティ研究者は、かなりの期間、それが私たちを悩ませると言います。Spectreは、パフォーマンスを最適化するために最新のCPUで使用される投機的実行手法を活用することが知られています。

Spectreのバグにもパッチが適用されるまで、少なくともGNU / Linuxディストリビューションを新しくリリースされたLinuxカーネルバージョンにアップデートすることを強くお勧めします。お気に入りのディストリビューションのソフトウェアリポジトリで新しいカーネルアップデートを検索し、できるだけ早くインストールしてください。手遅れになるまで待ってはいけません、今すぐやってください!


カーネル4.14.10を1週間使用していたので、Ubuntu Mainline Kernelバージョン4.14.11をダウンロードして起動することはあまり気になりませんでした。

Ubuntu 16.04ユーザーは、4.14.11と同時にリリースされた4.4.109または4.9.74カーネルバージョンの方が快適かもしれません。

定期的な更新で希望するカーネルバージョンがインストールされない場合は、Ubuntuの質問への回答に従って手動で実行できます:https : //askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version / 879920#879920


4.14.12-1日がもたらす違い

最初の回答から24時間以内に、4.14.11カーネルバージョンを修正するためのパッチがリリースされました。4.14.11へのアップグレードは、4.14.11のすべてのユーザーに推奨されます。Greg-KHのコメント

4.14.12カーネルのリリースを発表しています。

4.14カーネルシリーズのすべてのユーザーはアップグレードする必要があります。

このリリースには、人々が遭遇したいくつかの小さな問題がまだ知られています。パッチがLinusのツリーに到達していないため、今週の週末に解決されることを願っています。

今のところ、いつものように、環境でテストしてください。

この更新を見ると、ソースコードの行はほとんど変更されていません。


1
現在、Meltdownのソリューションがありますapt-get dist-upgrade
ルチョナチョ

1
現在、私の電話では、LTSの更新により、2018年1月10日にカーネルパニックが発生します。Ubuntuに尋ねるを参照してください。
WinEunuuchs2Unix

1
幸いなことに、109に更新しました(108はカーネルパニックになります)。したがって、その問題はありませんでした。正常に動作します。
ルチョナチョ

1
@ WinEunuuchs2UnixここにアップデートがありますUSN-3531-2:インテルマイクロコード回帰
-GAD3R

1
@ GAD3Rリンクありがとうございます。:それは私が多くの人々を助けることができるのUbuntu ASKで答えポスト助けるaskubuntu.com/questions/998471/...
WinEunuuchs2Unix

6

この欠陥は、JavaScript Webサイトにアクセスすることでリモートで悪用される可能性があります。

確かに。そのため、賢明な軽減策の1つは、WebブラウザーでJavaScriptを無効にするか、JavaScriptをサポートしないWebブラウザーを使用することです。

JavaScriptをサポートするほとんどのブラウザーには、JavaScriptを無効にする設定があります。あるいは、JavaScriptを許可するサイトまたはドメインのホワイトリストを維持したい場合、uBlock OriginNoScriptなど、支援できるさまざまなアドオンがあります

注意JavaScriptの無効化/制限だけが軽減策ではないことは言うまでもありません。関連するカーネル修正およびその他のセキュリティ更新プログラムを作成、テスト、および公開したら、それらを追加で確認(およびおそらく適用)する必要があります。Debianの派生ディストリビューションでは、使用することは、コマンドのような sudo apt updatesudo apt list-upgradablesudo apt upgrade

更新:それについて私の言葉を受け入れないでください。アラン・コックスは同じことを言っています。

悪用がウェブページ上のJavaScriptによってリモートで使用されてシステムメモリからデータを盗むことができるため、大きな時間を気にする必要があるのはjavascriptです。... Adblockerやnoscriptのような拡張機能のようなものを考えてみてください。そもそも大量のジャンクの実行を止めることができます。できるだけ早くそれを行います。OSアップデートが表示されたら、それらを適用します。(ソース


5
申し訳ありませんが、これは攻撃に対して役立ちますが、JSがなければ、ここに答えを残せなかったでしょう。このアドバイスは、「インターネットの使用をやめる」(2018年)に似ています。
モリッツ両方

4
@MoritzBoth、ありがたいことに、多くのサイトはJSなしでうまく機能します。残念ながら、StackExchangeでは、投稿にJSが必要であることが指摘されています。それはSEの(深刻な!)欠点です:(
sampablokuper

3
Firefox用NoScriptのアドオンなどのかもしれないのヘルプが怪しげなサイトではJavaScriptの使用量を減らすために- FF量子(V57)によってもたらされる最近の変化は、全体のFFのアドオンプールに非常に大きな石をlobbedたが...
SlySven

2
Quantumのリリース以来、まさにこの理由でPale Moonに切り替えました。NoScriptやCookie Masters(一度はCookie Monster)を含む、私にとっては非常にうまく機能しています。
マーフィー

2
@MoritzBoth私、JSを無効にすることは「Webの使用をやめる」こととはまったく思わず、「インターネットの使用をやめる」言いません。ただし、これは、一部の WebコンテンツプロバイダーからのJSへの普遍的な依存に伴う問題に関する意識を高める絶好の機会です。
トビアテサン

5

JavaScriptを使用してこれを悪用できるという事実は主要なポイントではなく、主要な関心事でもないはずです(ただし、この方法はリモートコードをシステムで簡単に実行できるため、これが唯一の問題ではありませんが、これが起こる方法)。

Javascriptやブラウザに焦点を合わせるべきではありません。理想的には、CPUにパッチを適用する必要があります。残念ながら、現在の多くのバグでは、これは不可能であると思われます。Debianは、他のすべてのOS提供者が協力して、欠陥のないCPUを推奨する以外の唯一の可能な方法になります。CPUのバグを回避するようシステムに強制します。これらのパッチは問題を解決しません。代わりに、OSは、ユーザーがマシン(およびブラウザー)で実行するすべてのプログラムから可能な限りそれらを隠します。

この非表示は余分な計算作業であるため、システム全体のパフォーマンスはそうでない場合よりも低くなります。どれだけ低くなるかは、それらのプログラムが正確に何をするかに大きく依存する可能性があります。

それを念頭に置いて、あなたの質問に戻ってください:Debianシステムを保護するためにできることは、セキュリティアップデートをインストールすることです。私は、これらのバグに照らして、Debianが本質的なCPUの欠陥にもかかわらずDebianを可能な限り安全に実行するために可能なすべてを行うと信じています。

あらゆる種類の大企業がすでにこの問題に取り組んでおり、多数のハードウェアとLinuxの達人も同様です。自分で何かを試したり、一般的な努力を助けようとすることを絶対に妨げたくありません。しかし、あなた自身のセキュリティとタイムリーな修正があなたが興味を持っているすべてであるなら、彼らはあなたよりも短い時間でより良い解決策を見つけるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.