web-dev-qa-db-ja.com

MeltdownとSpectreパッチをチェックするSpeed 47のシェルスクリプト(spectre-meltdown-checker.sh)を個別に審査した人はいますか?

カーネルがSpecterとMeltdownにパッチされているかどうかをチェックするこのコードがあります。以下にあります: https://github.com/speed47/spectre-meltdown-checker

他のコメンテーターはそのメソッドの制限について話しましたが、rootとして実行しても安全かどうかについては誰も何も言わなかったのです。

誰かがこのスクリプトの安全性の側面を検討することはできますか?

システム構成の変更や、再起動後も存続する可能性のある変更など、これらの脆弱性のチェック以上のことを行いますか?

ありがとうございました

4
Grunt Smash

スクリプトは実際に、3つの脆弱性すべてについてカーネルの緩和策をチェックしています。現在、LTSシステムとUbuntu 17.10には、Meltdownの脆弱性に対する緩和策が用意されています。

Spectreの脆弱性の1つを特定するCプログラムがあります。プロセッサに脆弱性があるかどうかは、次の方法で確認できます。

wget https://Gist.githubusercontent.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6/raw/41bf9bd0e7577fe3d7b822bbae1fec2e818dcdd6/spectre.c

gcc spectre.c -o spectre -std=c99 -w -O0

./spectre

次の行が表示される場合:

Reading at malicious_x = 0xffffffffffdfebb8... Success: 0x54=’T’ score=7

その場合、プロセッサはSpectreの分岐予測に対して脆弱です。

このプログラムの実行に基づいて、Intel Atom第1世代、Core 2 Duo E8400、Core 2 Duo 4300は脆弱ではなく、Core i5 3230M、AMD Turion TL-56は脆弱であることを個人的にテストしました。

2
kukulo

まず、プロジェクトのgithubページからのいくつかの事実。これを書いている時点では、48人の貢献者と355人のフォークがいます。貢献者は、スクリプトの一部だけを見て、関心のある領域を変更した人かもしれませんが、ほとんどの場合、コードの貢献をするためにすべてを読んだことがあります。そのため、すでにかなりのレベルの審査が行われています。 355個のフォークもありますが、ボタンを1つ押して作成し、それを使用して目的を達成するだけです。

次に、スクリプトやソースコードのチェックにVirus Totalに依存しないでください。たぶんいつか、悪意のあるコンテンツをチェックするためにスクリプト/ソースコードを読むことができるAIが書かれますが、現時点では誰もそれらを自動的に検証する方法を実際に作っていません。アンチウイルスはバイナリ署名を探し、発見的手法を使用してバイナリファイルを分析する場合があります。アンチウイルスにソースコードまたはスクリプトを与えると、アンチウイルスはそれをテキストファイルとして解釈し、クリーンであることを通知します(誤ったセキュリティを作成します)。

最後に、4500行すべてを読み終えたところ、心配な点は見つかりませんでした。

完全な開示、私は自分自身が中間のbashスクリプトライターであると考えているだけで、これは非常に高度なスクリプトであり、今後のヒントやコツを共食いすることになるでしょう。私はそれに追いつくことができましたが、多くのことが起こっていたために何かを見逃している可能性があります。

ほとんどの操作には、カーネル、cpuid、カーネル構成、fs(ジョブに必要なパッチとカーネル情報に関連する部分)、およびcpuのmsrの読み取りが含まれます。一時フォルダーで発生し、出口のクリーンアップで削除される書き込み、抽出、ダンプ、および逆コンパイルをいくつか行います。インターネットを使用するのは、wgetを使用してgithubページからMCExtractorデータベースをダウンロードすることだけです。それは決して家にダイヤルしようとしません。

私はそれを読んでいるときに2つの注意事項を見つけました:1つ目は、CPUのモデル固有のレジスタ(msr)に2つの書き込みを行うことです(特にCPU設定が保存される場所です)。最初は不安でしたが、これらの書き込みを Intelが発表したガイドライン を使用して検証しました。書き込みは推奨パラメーターの範囲内です。

2番目の注意点は、スクリプトがMCExtractorというプロジェクトからSQLite3データベースをダウンロードする必要があることです。私はMCExtractorプロジェクトを知らず、そのソースコードを見ていません。このスクリプトを実行するためだけに別のプロジェクトを詳細に調べようとは思わなかったので、未知のソースからsqlite3 dbsにアクセスする危険性がないかインターネットで検索しました。確かに マゼランと呼ばれるsqlite3で実行できるエクスプロイト がありますが、dbの側面ではなく、sqlite3のクエリコード実行の側面にリンクされているようです。私は個人的にはあまり心配していませんが、可能性を指摘し、あなたがそれをどうするかを考えてみようと思いました。このエクスプロイトは、Ubuntu BionicまたはCosmicリポジトリにまだないSQL 3.26からパッチされています。心配な場合は、3.26 libsqlite3バージョンを http://us.archive.ubuntu.com/ubuntu/pool/main/s/sqlite3/ からdebファイルとして直接ダウンロードできます。 Sudo dpkg -i name-of-deb-here.debを使用してインストールします。チェンジログで現在不安定であると分類されている3.26として、(同じ場所からdebファイルを使用して)すぐにダウングレードすることをお勧めします。

この情報は、 このリンクにあるプロジェクトのd7d2e69をコミットする に関連しています。

2018年12月11日に作成され、そのバージョンのスクリプトのsha256sumは次のとおりです:b0f884be51f0eb49ed61854f0e011a2f89f44c35699e07a705b0ec6f98fa29b5

そして、おそらくgithubの

1
thebunnyrules