Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ssbd-tools — x86プロセッサのSpeculative Store Bypass Disable (SSBD)機能を使用して、CVE-2018-3639(別名Variant 4)に対するLinuxカーネルの緩和策を実行するツール | Kitploit
ツール/GitHubGitHub/tyhicks/ssbd-tools
脆弱性分析エクスプロイトハードウェアセキュリティ
GitHubtyhicks/ssbd-tools

ssbd-tools

x86プロセッサのSpeculative Store Bypass Disable (SSBD)機能を使用して、CVE-2018-3639(別名Variant 4)に対するLinuxカーネルの緩和策を実行するツール

リポジトリを見る
928年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Speculative Store Bypass Disable を利用するためのツール

ssbd-tools プロジェクトは、x86 プロセッサが提供する Speculative Store Bypass Disable (SSBD) 機能を利用するプログラム群です。SSBD は、Variant 4 と呼ばれ CVE-2018-3639 が割り当てられている Speculative Store Bypass 攻撃に対するプロセッサベースの緩和策です。Linux カーネルは SSBD を利用するためのプロセス単位の制御を導入しており、これらのツールはその制御を利用し、正しさを検証するために使用できます。

プロセス単位の SSBD 制御

Linux カーネルは、x86 システム上の SSBD について、起動時に spec_store_bypass_disable カーネルパラメータで選択できる、いくつかの異なる動作モードを提供します。カーネルパラメータのドキュメントにそれらがよく説明されています。以下は、そのドキュメントのオプションの説明からの抜粋です:

root@kitploit:~
  on      - Unconditionally disable Speculative Store Bypass
  off     - Unconditionally enable Speculative Store Bypass
  auto    - Kernel detects whether the CPU model contains an
            implementation of Speculative Store Bypass and
            picks the most appropriate mitigation. If the
            CPU is not vulnerable, "off" is selected. If the
            CPU is vulnerable the default mitigation is
            architecture and Kconfig dependent. See below.
  prctl   - Control Speculative Store Bypass per thread
            via prctl. Speculative Store Bypass is enabled
            for a process by default. The state of the control
            is inherited on fork.
  seccomp - Same as "prctl" above, but all seccomp threads
            will disable SSB unless they explicitly opt out.

  Not specifying this option is equivalent to
  spec_store_bypass_disable=auto.

  Default mitigations:
  X86:    If CONFIG_SECCOMP=y "seccomp", otherwise "prctl"

CPU 固有の詳細

SSBD 機能は、プロセッサのモデル固有レジスタ (MSR) 内の 1 ビットを設定/解除することで有効/無効になります。正確な MSR と MSR 内のビット位置は、CPU ベンダー間、単一ベンダー内の CPU ファミリ間、そしてカーネルがハイパーバイザーの下で実行されているかどうかによって異なります。これらのツールは、Intel と AMD が公開しているガイドラインに従って、現在の実行環境で SSBD ビットがどこにあるかを決定します。

SSBD が利用できない理由

一部のシステムでは、SSBD サポートが利用できない場合があります。これには、いくつかの理由が考えられます:

  • お使いのプロセッサに更新されたマイクロコードが必要です。これは Intel プロセッサの場合に当てはまります。ファームウェアの更新により、または Linux ディストリビューションのマイクロコードパッケージ (Debian/Ubuntu の場合は intel-microcode と amd64-microcode) をインストールすることで、更新されたマイクロコードにアクセスできる場合があります。AMD ファミリ 15h、16h、17h のプロセッサは、更新されたマイクロコードを必要としません。
  • お使いのカーネルが SSBD をサポートするように更新されていません。多くの Linux OS ベンダーが更新プログラムをリリースしているため、CERT の Variant 4 ページ でお使いのベンダーに関する詳細を確認してください。
  • 仮想マシンを使用しており、ハイパーバイザーが SSBD をサポートするように更新されていません。ホスト環境を制御できる場合は、上記の CERT ページを参照して、関連するハイパーバイザーソフトウェアの更新情報を確認してください。

ssbd-tools のプログラム概要

ssbd-exec

ssbd-exec プログラムは、別のプログラムを実行する前に、プロセス単位の SSBD 制御を利用します。PR_SET_SPECULATION_CTRL prctl を使用して、投機実行を許可 (-p enable は PR_SPEC_ENABLE を使用)、SSBD による投機実行を禁止 (-p disable は PR_SPEC_DISABLE を使用)、または SSBD により将来のすべての子プロセスで投機実行を恒久的に禁止 (-p force-disable は PR_SPEC_FORCE_DISABLE を使用) することができます。

また、パーミッシブな seccomp フィルタ (-s empty) をロードすることもできます。これは x86 ではデフォルトで、プロセスを SSBD 緩和策にオプトインさせます。SSBD にプロセスをオプトインさせないパーミッシブなフィルタをロードするオプション (-s spec-allow) もあります。

ssbd-exec の使用方法

  • タスクがデフォルトで SSBD を使用しないことを確認するには、/proc/PID/status を表示します
root@kitploit:~
 $ ./ssbd-exec -- grep Spec /proc/self/status
 Speculation_Store_Bypass:	thread vulnerable
  • prctl 経由で SSBD を使用している場合の /proc/PID/status を表示します
root@kitploit:~
 $ ./ssbd-exec -p disable -- grep -e Spec -e Seccomp /proc/self/status
 Seccomp:        0
 Speculation_Store_Bypass:       thread mitigated
  • プロセスを SSBD にオプトインさせるパーミッシブな seccomp フィルタで実行している場合の /proc/PID/status を表示します
root@kitploit:~
 $ ./ssbd-exec -s empty -- grep -e Spec -e Seccomp /proc/self/status
 Seccomp:        2
 Speculation_Store_Bypass:       thread force mitigated

ssbd-verify

ssbd-verify プログラムは、お使いのプロセッサ固有の MSR とビットオフセットにある実際の SSBD ビットが期待どおりの値であることを検証します。0 は SSBD が使用されていないことを意味し、1 は使用されていることを意味します。

このプログラムは、タスクの PR_GET_SPECULATION_CTRL prctl 値が、投機実行を許可 (-p enable は PR_SPEC_ENABLE を検証)、SSBD による投機実行を禁止 (-p disable は PR_SPEC_DISABLE を検証)、または SSBD により将来のすべての子プロセスで投機実行を恒久的に禁止 (-p force-disable は PR_SPEC_FORCE_DISABLE を検証) するように設定されていることを検証するためにも使用できます。

このプログラムは、-t SECONDS オプションを使用して、SSBD ビットの値を繰り返し検証するように設定できます。SECONDS が 0 の場合、プログラムは SSBD ビットを検証しながら無限にループします。SECONDS に 0 以外の値を指定すると、プログラムは指定された時間だけ SSBD ビットを検証します。

このプログラムには、msr カーネルモジュールがロードされていることと、ユーザーが適切な MSR から SSBD ビットを読み取るための root 権限を持っていることが必要です。

ssbd-verify の使用方法

  • デフォルトでは SSBD が設定されていないことを検証します
root@kitploit:~
 $ sudo ./ssbd-verify 0
 $ sudo ./ssbd-verify 1
 FAIL: SSBD bit verification failed (expected 1, got 0)
  • prctl を使用して投機実行を無効にした場合に SSBD が設定されることを検証します
root@kitploit:~
 $ ./ssbd-exec -p disable -- sudo ./ssbd-verify 1
  • seccomp フィルタをロードしたときに SSBD が設定されることを検証します
root@kitploit:~
 $ sudo ./ssbd-exec -s empty -- ./ssbd-verify 1

注: 上記のコマンドでは、NO_NEW_PRIVS が seccomp フィルタのロード前に使用されるため、ssbd-exec に sudo を使用する必要があります。NO_NEW_PRIVS が設定された後に sudo を使用しても、特権を昇格できません。

ssbd-toggle

ssbd-toggle プログラムは、プログラムが終了するまで、SSBD ビットをオンとオフに切り替え続けるだけのプログラムです。ssbd-verify と組み合わせて使用すると、カーネルがそのタスクに切り替わるときに、ssbd-verify プロセスが常に期待どおりの SSBD ビット値を持つことを確認できます。

このプログラムには、msr カーネルモジュールがロードされていることと、ユーザーが適切な MSR に対して読み書きするための root 権限を持っていることが必要です。

ssbd-toggle の使用方法

  • プロセスが中断されるまで、プロセッサ 0 の SSBD ビットを切り替えます
root@kitploit:~
 $ sudo ./ssbd-toggle
 ^C

ツールのビルド

ツールをビルドするには、make を実行します:

root@kitploit:~
 $ make

システムのテスト

システム上で SSBD が期待どおりに動作していることを確認するための基本的な自動テストを実行するには、root として check ターゲットを実行します:

root@kitploit:~
 $ sudo make check
 PASS
ツールをダウンロード