Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ssbd-tools — x86 프로세서의 SSBD(Speculative Store Bypass Disable) 기능을 사용하여 CVE-2018-3639 (일명 Variant 4)에 대한 Linux 커널 완화 조치를 실행하는 도구 | Kitploit
도구/GitHubGitHub/tyhicks/ssbd-tools
Vulnerability AnalysisExploitationHardware Security
GitHubtyhicks/ssbd-tools

ssbd-tools

x86 프로세서의 SSBD(Speculative Store Bypass Disable) 기능을 사용하여 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)에서 단일 비트를 설정하여 활성화/비활성화됩니다. 정확한 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 비트를 읽을 수 있는 루트 권한을 가지고 있어야 합니다.

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에서 읽고 쓸 수 있는 루트 권한을 가지고 있어야 합니다.

ssbd-toggle 사용

  • 프로세스가 중단될 때까지 프로세서 0의 SSBD 비트 전환
root@kitploit:~
 $ sudo ./ssbd-toggle
 ^C

도구 빌드

도구를 빌드하려면 make를 실행하십시오:

root@kitploit:~
 $ make

시스템 테스트

시스템에서 SSBD가 예상대로 작동하는지 확인하기 위해 몇 가지 기본 자동화 테스트를 실행하려면 루트로 check 대상을 실행하십시오:

root@kitploit:~
 $ sudo make check
 PASS
도구 다운로드