
Reptar, Downfall, Zenbleed, ZombieLoad, RIDL, Fallout, Foreshadow, Spectre, Meltdown 취약점/완화 조치 확인 도구 (Linux & BSD용)
시스템이 2018년 초 이후 공개된 여러 일시적 실행 CVE에 대해 얼마나 강력한지 평가하고, 이를 완화하는 방법에 대한 지침을 제공하는 독립형 셸 스크립트입니다.
| CVE | 이름 | 별칭 |
|---|---|---|
| CVE-2017-5753 | 경계 검사 우회 (Bounds Check Bypass) | Spectre V1 |
| CVE-2017-5715 | 분기 대상 주입 (Branch Target Injection) | Spectre V2 |
| CVE-2017-5754 | 불량 데이터 캐시 로드 (Rogue Data Cache Load) | Meltdown |
| CVE-2018-3640 | 불량 시스템 레지스터 읽기 (Rogue System Register Read) | 변종 3a |
| CVE-2018-3639 | 추측 저장 우회 (Speculative Store Bypass) | 변종 4, SSB |
| CVE-2018-3615 | L1 터미널 오류 (L1 Terminal Fault) | Foreshadow (SGX) |
| CVE-2018-3620 | L1 터미널 오류 (L1 Terminal Fault) | Foreshadow-NG (OS/SMM) |
| CVE-2018-3646 | L1 터미널 오류 (L1 Terminal Fault) | Foreshadow-NG (VMM) |
| CVE-2018-12126 | 마이크로아키텍처 저장 버퍼 데이터 샘플링 (Microarchitectural Store Buffer Data Sampling) | MSBDS, Fallout |
| CVE-2018-12127 | 마이크로아키텍처 로드 포트 데이터 샘플링 (Microarchitectural Load Port Data Sampling) | MLPDS, RIDL |
| CVE-2018-12130 | 마이크로아키텍처 필 버퍼 데이터 샘플링 (Microarchitectural Fill Buffer Data Sampling) | MFBDS, ZombieLoad |
| CVE-2018-12207 | 페이지 크기 변경 시 기계 검사 예외 (Machine Check Exception on Page Size Changes) | iTLB Multihit, No eXcuses |
다음 항목들은 커널이 적극적으로 우회하는 ARM64 실리콘 정오표입니다. 이 항목에는 CVE가 할당되지 않았으며, ARM의 정오표 번호로만 추적됩니다. --errata <number> 또는 해당 --variant 니모닉을 사용하여 선택하세요.
| ID | 이름 | 영향받는 코어 |
|---|---|---|
| CVE-0001-0001 | 추측 AT TLB 손상 (Speculative AT TLB corruption) (정오표 1165522, 1319367, 1319537, 1530923) | Cortex-A55/A57/A72/A76 |
상황에 따라 아래 표는 특정 위치의 공격자가 특정 대상으로부터 데이터를 추출할 수 있는지 여부를 보여줍니다. "사용자 영역 → 커널" 열은 VM 내에서도 동일하게 적용됩니다 (VM 사용자 영역 vs VM 커널). 가상화 여부와 관계없이 동일한 CPU 메커니즘이 적용되기 때문입니다.
💥 이 경계를 넘어 데이터가 유출될 수 있습니다.
✅ 이 시나리오에서는 영향받지 않습니다.
☠️ 서비스 거부 (시스템 충돌 또는 예측 불가능한 동작), 데이터 유출 없음.
(1) 프로세스 간 유출을 위해서는 SMT(하이퍼스레딩)가 활성화되어야 합니다. 공격자와 피해자는 물리적 코어를 공유해야 합니다.
(2) 임의의 메모리가 아닌 RDRAND/RDSEED 출력만 유출합니다. 그래도 모든 피해자의 암호화 자료를 복구할 수 있습니다.
(3) CVE-2018-3615 (Foreshadow SGX)는 일반적인 신뢰 모델을 뒤집습니다. OS가 SGX enclave 데이터를 읽습니다. 시스템이 SGX enclave를 실행하지 않는 경우 관련이 없으며, 공격자는 이미 OS 수준 접근 권한이 있어야 합니다.
(4) VM→호스트 유출은 일부 영향받는 CPU 모델(Skylake-X, Kaby Lake, Comet Lake)에만 적용됩니다. Ice Lake, Tiger Lake, Rocket Lake는 네이티브(사용자→커널) 공격에만 영향받으며, 게스트→호스트는 해당되지 않습니다.
CVE-2017-5753 — 경계 검사 우회 (Spectre 변종 1)
공격자는 분기 예측기를 훈련시켜 범위 검사를 잘못 예측하게 하여 CPU가 추측적으로 경계를 벗어난 메모리에 접근하게 할 수 있습니다. 이는 모든 소프트웨어(커널 포함)에 영향을 미칩니다. 조건부 범위 검사가 잠재적으로 악용될 수 있기 때문입니다. 완화를 위해서는 적절한 위치에 LFENCE 명령어(또는 array_index_nospec 같은 추측 장벽)를 삽입하는 컴파일러로 소프트웨어와 커널을 재컴파일해야 합니다. 성능 영향은 무시할 만합니다. 장벽은 특정 대상 코드 패턴에만 적용되기 때문입니다.
CVE-2017-5715 — 분기 대상 주입 (Spectre 변종 2)
공격자는 BTB(Branch Target Buffer)를 오염시켜 커널의 간접 분기 추측 실행을 리디렉션하여 커널 메모리를 유출할 수 있습니다. 두 가지 완화 전략이 있습니다. (1) IBRS(Indirect Branch Restricted Speculation)를 제공하는 마이크로코드 업데이트로, 특권 전환 시 분기 예측 상태를 플러시합니다. 이는 특히 오래된 하드웨어에서 중간~높은 성능 비용이 듭니다. (2) retpoline: 간접 분기를 추측자가 악용할 수 없는 구조로 대체하는 컴파일러 기술입니다. 성능 비용이 낮지만 커널과 민감한 소프트웨어를 재컴파일해야 합니다.
CVE-2017-5754 — 불량 데이터 캐시 로드 (Meltdown)
영향받는 Intel 프로세서에서 사용자 프로세스는 권한이 없음에도 불구하고 추측적으로 커널 메모리를 읽을 수 있습니다. CPU는 결국 오류를 발생시키지만 데이터는 캐시에 관찰 가능한 흔적을 남깁니다. 완화는 전적으로 커널 측에서 이루어집니다. PTI(KPTI)는 커널 메모리의 대부분을 사용자 공간 페이지 테이블에서 매핑 해제하여 추측적으로 읽을 것이 없게 만듭니다. 성능 영향은 낮음~중간입니다. 주로 커널 진입/종료 시 페이지 테이블 전환으로 인한 TLB 압력 증가 때문입니다.
CVE-2018-3640 — 불량 시스템 레지스터 읽기 (변종 3a)
Meltdown과 유사하지만 시스템 레지스터를 대상으로 합니다. 비특권 프로세스가 특권 시스템 레지스터 값(예: 모델별 레지스터)을 추측적으로 읽고 측면 채널을 통해 유출할 수 있습니다. 완화는 마이크로코드 업데이트만 필요하며, 커널 변경은 필요하지 않습니다. 성능 영향은 무시할 만합니다.
CVE-2018-3639 — 추측 저장 우회 (변종 4)
CPU는 동일한 주소에 대한 이전 저장소가 완료되기 전에 메모리에서 값을 추측적으로 로드하여 오래된 데이터를 읽을 수 있습니다. 이는 주로 JIT 컴파일을 사용하는 소프트웨어(예: JavaScript 엔진, eBPF)에 영향을 미치며, 공격자는 저장-로드 의존성을 악용하는 코드를 조작할 수 있습니다. 커널 자체에 대한 알려진 악용은 입증되지 않았습니다. 완화를 위해서는 SSBD 메커니즘을 제공하는 마이크로코드 업데이트와 영향을 받는 소프트웨어가 prctl()을 통해 보호를 선택할 수 있도록 하는 커널 업데이트가 필요합니다. 성능 영향은 완화가 활성화되는 빈도에 따라 낮음~중간입니다.
CVE-2018-3615 — L1 터미널 오류 (Foreshadow, SGX)
원래 Foreshadow 공격은 Intel SGX enclave를 대상으로 합니다. 페이지 테이블 항목의 Present 비트가 지워졌을 때 CPU는 여전히 항목의 물리적 주소를 추측적으로 사용하여 L1 캐시에서 데이터를 가져올 수 있어 SGX 보호를 우회합니다. 공격자는 SGX enclave에서 비밀(증명 키, 봉인된 데이터)을 추출할 수 있습니다. 완화를 위해서는 SGX 동작을 수정하는 마이크로코드 업데이트가 필요합니다. 성능 영향은 무시할 만합니다.
CVE-2018-3620 — L1 터미널 오류 (Foreshadow-NG, OS/SMM)
SGX를 넘어선 Foreshadow의 일반화입니다. 비특권 사용자 공간 코드는 동일한 L1TF 메커니즘을 이용하여 커널 메모리 또는 SMM(System Management Mode) 메모리를 읽을 수 있습니다. 완화를 위해서는 PTE 반전을 구현하는 커널 업데이트가 필요합니다. 존재하지 않는 페이지 테이블 항목을 잘못된 물리적 주소로 표시하여 L1 캐시에 해당 주소의 유용한 데이터가 포함되지 않도록 합니다. 성능 영향은 무시할 만합니다. PTE 반전은 페이지 테이블 관리 로직에 대한 일회성 변경이며 런타임 오버헤드가 없기 때문입니다.
CVE-2018-3646 — L1 터미널 오류 (Foreshadow-NG, VMM)
게스트 VM은 L1TF를 악용하여 호스트 또는 다른 게스트의 메모리를 읽을 수 있습니다. 하이퍼바이저의 페이지 테이블에 L1에 여전히 상주하는 유효한 호스트 물리적 주소를 가리키는 존재하지 않는 항목이 있을 수 있기 때문입니다. 완화 옵션은 다음과 같습니다. 모든 VM 진입 시 L1 데이터 캐시 플러시(L1d 플러시 지원을 제공하는 커널 업데이트를 통해), EPT(Extended Page Tables) 비활성화, 또는 추측 중에 형제 스레드가 L1 캐시를 다시 채우지 못하도록 SMT(하이퍼스레딩) 비활성화. 선택한 완화 방법에 따라 성능 영향은 낮음에서 상당함까지 다양합니다. VM 진입 시 L1d 플러시가 가장 실용적이지만 VM이 많은 워크로드에서는 여전히 측정 가능한 성능 영향을 줍니다.
여러 일시적 실행 CVE가 여러 가지 이유(중복, 지원되지 않는 하드웨어 또는 OS에만 영향, 이론적이며 알려진 악용 없음 등)로 이 도구에서 지원되지 않습니다. 전체 목록과 각 제외 이유는 UNSUPPORTED_CVE_LIST.md 파일에서 확인할 수 있습니다.
지원되는 운영 체제:
Linux 시스템의 경우, 도구는 광고된 커널 버전 번호 및 배포판(Debian, Ubuntu, CentOS, RHEL, Fedora, openSUSE, Arch 등)에 관계없이 백포트된 비순정 패치를 포함한 완화 조치를 감지합니다. 직접 커널을 컴파일한 경우에도 작동합니다. 자세한 내용은 여기를 참조하세요.
MacOS, Windows, ESXi 등과 같은 다른 운영 체제는 지원되지 않습니다.
지원되는 아키텍처:
x86 (32비트)amd64/x86_64 (64비트)ARM 및 ARM64이 도구의 목적은 무엇인가요? 왜 작성되었나요? 저에게 어떻게 유용할 수 있나요? 어떻게 작동하나요? 무엇을 기대할 수 있나요?
이 모든 질문(및 그 이상)에 대한 자세한 답변은 FAQ에 있으니 확인해 보세요!
스크립트는 실행 중인 커널, 커널 이미지, CPU 하드웨어 또는 이들의 조합을 검사할지 여부에 따라 네 가지 작동 모드를 지원합니다.
라이브 모드(기본값)에서 스크립트는 CPU와 실행 중인 커널을 모두 검사합니다.
선택적으로 --kernel, --config 또는 --map을 전달하여 스크립트가 자동으로 감지할 수 없는 파일을 지정할 수 있습니다.
No-runtime 모드에서 스크립트는 여전히 로컬 CPU(CPUID, MSR, 마이크로코드)를 읽지만 실행 중인 커널 아티팩트(/sys, /proc, dmesg)는 모두 건너뜁니다.
다른 시스템의 커널 이미지가 있지만 현재 CPU에 대해 평가하려는 경우에 사용하십시오.
No-hardware 모드에서는 CPU 검사와 실행 중인 커널 아티팩트를 모두 완전히 건너뜁니다. 이는 예를 들어 x86 워크스테이션에서 ARM 커널 이미지를 검사하는 등 교차 아키텍처 분석에 유용합니다.
Hardware-only 모드에서 스크립트는 커널을 검사하지 않고 CPU 정보 및 CVE별 하드웨어 영향 여부만 보고합니다.
curl 또는 wget을 사용하여 최신 버전의 스크립트를 가져옵니다.
curl -L https://meltdown.ovh -o spectre-meltdown-checker.sh
wget https://meltdown.ovh -O spectre-meltdown-checker.sh
스크립트를 검사합니다. 인터넷에서 다운로드한 스크립트를 맹목적으로 실행하지는 않으시죠?
vim spectre-meltdown-checker.sh
준비가 되면 루트로 스크립트를 실행합니다.
chmod +x spectre-meltdown-checker.sh
sudo ./spectre-meltdown-checker.sh
docker compose 사용:```shell
docker compose build
docker compose run --rm spectre-meltdown-checker
참고로, 구버전의 docker에서는 `docker-compose`가 별도의 명령어이므로, 위의 두 `docker compose`를 `docker-compose`로 바꿔야 할 수도 있습니다.
`docker build`를 직접 사용하기:```shell
docker build -t spectre-meltdown-checker .
docker run --rm --privileged -v /boot:/boot:ro -v /dev/cpu:/dev/cpu:ro -v /lib/modules:/lib/modules:ro spectre-meltdown-checker

| 마이크로아키텍처 데이터 샘플링 비캐시 가능 메모리 (Microarchitectural Data Sampling Uncacheable Memory) |
| MDSUM, RIDL |
| CVE-2019-11135 | TSX 비동기 중단 (TSX Asynchronous Abort) | TAA, ZombieLoad V2 |
| CVE-2020-0543 | 특수 레지스터 버퍼 데이터 샘플링 (Special Register Buffer Data Sampling) | SRBDS, CROSSTalk |
| CVE-2022-21123 | 공유 버퍼 데이터 읽기 (Shared Buffers Data Read) | SBDR, MMIO Stale Data |
| CVE-2022-21125 | 공유 버퍼 데이터 샘플링 (Shared Buffers Data Sampling) | SBDS, MMIO Stale Data |
| CVE-2022-21166 | 장치 레지스터 부분 쓰기 (Device Register Partial Write) | DRPW, MMIO Stale Data |
| CVE-2022-29900 | 반환 명령어를 이용한 임의 추측 코드 실행 (Arbitrary Speculative Code Execution with Return Instructions) | Retbleed (AMD) |
| CVE-2022-29901 | 반환 명령어를 이용한 임의 추측 코드 실행 (Arbitrary Speculative Code Execution with Return Instructions) | Retbleed (Intel), RSBA |
| CVE-2022-40982 | 수집 데이터 샘플링 (Gather Data Sampling) | Downfall, GDS |
| CVE-2023-20569 | 반환 주소 보안 (Return Address Security) | Inception, SRSO |
| CVE-2023-20588 | AMD 0으로 나누기 추측 데이터 누출 (AMD Division by Zero Speculative Data Leak) | DIV0 |
| CVE-2023-20593 | 프로세스 간 정보 누출 (Cross-Process Information Leak) | Zenbleed |
| CVE-2023-23583 | 중복 접두사 문제 (Redundant Prefix Issue) | Reptar |
| CVE-2023-28746 | 레지스터 파일 데이터 샘플링 (Register File Data Sampling) | RFDS |
| CVE-2024-28956 | 간접 대상 선택 (Indirect Target Selection) | ITS |
| CVE-2024-36350 | 일시적 스케줄러 공격, 저장 큐 (Transient Scheduler Attack, Store Queue) | TSA-SQ |
| CVE-2024-36357 | 일시적 스케줄러 공격, L1 (Transient Scheduler Attack, L1) | TSA-L1 |
| CVE-2025-40300 | VM-Exit 오래된 분기 예측 (VM-Exit Stale Branch Prediction) | VMScape |
| CVE-2024-45332 | 분기 권한 주입 (Branch Privilege Injection) | BPI |
| CVE-2025-54505 | AMD Zen1 부동소수점 나눗셈기 오래된 데이터 누출 (AMD Zen1 Floating-Point Divider Stale Data Leak) | FPDSS |
| CVE-0001-0002 | 추측 비특권 로드 (Speculative unprivileged load) (정오표 2966298, 3117295) | Cortex-A510/A520 |
| CVE-0001-0003 | MSR SSBS 비자기동기화 (MSR SSBS not self-synchronizing) (정오표 3194386 + 관련) | Cortex-A76/A77/A78/A78C/A710/A715/A720/A720AE/A725, X1/X1C/X2/X3/X4/X925, Neoverse-N1/N2/N3/V1/V2/V3/V3AE |
| 취약점 | 사용자 영역 → 커널 | 사용자 영역 → 사용자 영역 | VM → 호스트 | VM → VM | 완화 방법 |
|---|
| CVE-2017-5753 (Spectre V1) | 💥 | 💥 | 💥 | 💥 | 모든 것을 LFENCE로 재컴파일 |
| CVE-2017-5715 (Spectre V2) | 💥 | 💥 | 💥 | 💥 | 마이크로코드 + 커널 업데이트 (또는 retpoline) |
| CVE-2017-5754 (Meltdown) | 💥 | ✅ | ✅ | ✅ | 커널 업데이트 |
| CVE-2018-3640 (변종 3a) | 💥 | ✅ | ✅ | ✅ | 마이크로코드 업데이트 |
| CVE-2018-3639 (변종 4, SSB) | ✅ | 💥 | ✅ | ✅ | 마이크로코드 + 커널 업데이트 |
| CVE-2018-3615 (Foreshadow, SGX) | ✅ (3) | ✅ (3) | ✅ (3) | ✅ (3) | 마이크로코드 업데이트 |
| CVE-2018-3620 (Foreshadow-NG, OS/SMM) | 💥 | ✅ | ✅ | ✅ | 커널 업데이트 |
| CVE-2018-3646 (Foreshadow-NG, VMM) | ✅ | ✅ | 💥 | 💥 | 커널 업데이트 (또는 EPT/SMT 비활성화) |
| CVE-2018-12126 (MSBDS, Fallout) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2018-12127 (MLPDS, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2018-12130 (MFBDS, ZombieLoad) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2018-12207 (iTLB Multihit, No eXcuses) | ✅ | ✅ | ☠️ | ✅ | 하이퍼바이저 업데이트 (또는 hugepage 비활성화) |
| CVE-2019-11091 (MDSUM, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2019-11135 (TAA, ZombieLoad V2) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2020-0543 (SRBDS, CROSSTalk) | 💥 (2) | 💥 (2) | 💥 (2) | 💥 (2) | 마이크로코드 + 커널 업데이트 |
| CVE-2022-21123 (SBDR, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2022-21125 (SBDS, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2022-21166 (DRPW, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2022-29900 (Retbleed AMD) | 💥 | ✅ | 💥 | ✅ | 커널 업데이트 (+ IBPB용 마이크로코드) |
| CVE-2022-29901 (Retbleed Intel, RSBA) | 💥 | ✅ | 💥 | ✅ | 마이크로코드 + 커널 업데이트 (eIBRS 또는 IBRS) |
| CVE-2022-40982 (Downfall, GDS) | 💥 | 💥 | 💥 | 💥 | 마이크로코드 업데이트 (또는 AVX 비활성화) |
| CVE-2023-20569 (Inception, SRSO) | 💥 | ✅ | 💥 | ✅ | 마이크로코드 + 커널 업데이트 |
| CVE-2023-20588 (DIV0) | 💥 | 💥 (1) | 💥 | 💥 (1) | 커널 업데이트 (+ SMT 비활성화) |
| CVE-2023-20593 (Zenbleed) | 💥 | 💥 | 💥 | 💥 | 마이크로코드 업데이트 (또는 커널 우회) |
| CVE-2023-23583 (Reptar) | ☠️ | ☠️ | ☠️ | ☠️ | 마이크로코드 업데이트 |
| CVE-2023-28746 (RFDS) | 💥 | ✅ | 💥 | ✅ | 마이크로코드 + 커널 업데이트 |
| CVE-2024-28956 (ITS) | 💥 | ✅ | 💥 (4) | ✅ | 마이크로코드 + 커널 업데이트 |
| CVE-2024-36350 (TSA-SQ) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2024-36357 (TSA-L1) | 💥 | 💥 (1) | 💥 | 💥 (1) | 마이크로코드 + 커널 업데이트 |
| CVE-2025-40300 (VMScape) | ✅ | ✅ | 💥 | ✅ | 커널 업데이트 (VM-exit 시 IBPB) |
| CVE-2024-45332 (BPI) | 💥 | ✅ | 💥 | ✅ | 마이크로코드 업데이트 |
| CVE-2025-54505 (FPDSS) | 💥 | 💥 | 💥 | 💥 | 커널 업데이트 |
CVE-2018-12126 — 마이크로아키텍처 저장 버퍼 데이터 샘플링 (MSBDS, Fallout)
CVE-2018-12127 — 마이크로아키텍처 로드 포트 데이터 샘플링 (MLPDS, RIDL)
CVE-2018-12130 — 마이크로아키텍처 필 버퍼 데이터 샘플링 (MFBDS, ZombieLoad)
CVE-2019-11091 — 마이크로아키텍처 데이터 샘플링 비캐시 가능 메모리 (MDSUM, RIDL)
이 네 가지 CVE는 통틀어 "MDS"(마이크로아키텍처 데이터 샘플링) 취약점으로 알려져 있습니다. 이들은 CPU 내부 버퍼(저장 버퍼, 필 버퍼, 로드 포트, 비캐시 가능 메모리 경로)를 악용하여 추측 실행 중에 최근에 접근한 데이터를 특권 경계를 넘어 유출할 수 있습니다. 비특권 공격자는 커널이나 다른 프로세스에서 최근에 처리한 데이터를 관찰할 수 있습니다. 완화를 위해서는 MD_CLEAR 메커니즘을 제공하는 마이크로코드 업데이트와 특권 전환 시 VERW를 사용하여 영향을 받는 버퍼를 지우는 커널 업데이트가 필요합니다. SMT(하이퍼스레딩)를 비활성화하면 형제 스레드가 이러한 버퍼를 공유하므로 추가 보호를 제공합니다. 성능 영향은 커널 전환 빈도와 SMT 비활성화 여부에 따라 낮음에서 상당함까지 다양합니다.
CVE-2018-12207 — 페이지 크기 변경 시 기계 검사 예외 (iTLB Multihit, No eXcuses)
악성 게스트 VM은 페이지 크기 변경과 관련된 명령어 TLB에서 특정 조건을 생성하여 기계 검사 예외(MCE)를 유발하여 전체 호스트를 충돌시킬 수 있습니다. 이는 신뢰할 수 없는 게스트를 실행하는 하이퍼바이저에 영향을 미치는 서비스 거부 취약점입니다. 완화를 위해서는 하이퍼바이저에서 hugepage 사용을 비활성화하거나 문제가 되는 iTLB 구성을 피하도록 하이퍼바이저를 업데이트해야 합니다. 접근 방식에 따라 성능 영향은 낮음에서 상당함까지 다양합니다. hugepage를 비활성화하면 메모리 집약적 워크로드에 상당한 영향을 줄 수 있습니다.
CVE-2019-11135 — TSX 비동기 중단 (TAA, ZombieLoad V2)
Intel TSX가 있는 CPU에서 트랜잭션 중단은 라인 필 버퍼의 데이터를 측면 채널을 통해 관찰 가능한 상태로 남길 수 있습니다. 이는 MDS 취약점과 유사하지만 TSX를 통해 트리거됩니다. 완화를 위해서는 영향을 받는 버퍼를 지우거나 TSX를 완전히 비활성화(TSX_CTRL MSR을 통해)하는 마이크로코드 업데이트와 커널 지원이 필요합니다. 성능 영향은 MDS와 유사하게 낮음에서 상당함까지 다양합니다. TSX를 비활성화하면 트랜잭션 메모리 지원을 잃는 대신 공격 표면을 완전히 제거할 수 있습니다.
CVE-2020-0543 — 특수 레지스터 버퍼 데이터 샘플링 (SRBDS, CROSSTalk)
특정 특수 CPU 명령어(RDRAND, RDSEED, EGETKEY)는 모든 코어에서 추측 실행을 통해 접근 가능한 공유 스테이징 버퍼를 통해 데이터를 읽습니다. 모든 코어에서 코드를 실행하는 공격자는 다른 코어에 있는 피해자의 이러한 명령어 출력을 관찰할 수 있으며, SGX enclave의 암호화 키(완전한 ECDSA 키가 시연됨)를 추출하는 것도 가능합니다. 이는 최초의 크로스 코어 추측 실행 공격 중 하나로 주목할 만합니다. 완화를 위해서는 스테이징 버퍼에 대한 접근을 직렬화하는 마이크로코드 업데이트와 완화를 관리하는 커널 업데이트가 필요합니다. 성능 영향은 낮습니다. 주로 RDRAND/RDSEED를 많이 사용하는 워크로드에 영향을 미칩니다.
CVE-2022-21123, CVE-2022-21125, CVE-2022-21166 — 프로세서 MMIO 오래된 데이터 (SBDR, SBDS, DRPW)
MMIO(메모리 매핑 I/O) 취약점의 한 부류로, MMIO 작업 중에 CPU 내부 필 버퍼의 오래된 데이터가 측면 채널 공격을 통해 유추될 수 있습니다. 세 가지 하위 취약점이 포함됩니다: 공유 버퍼 데이터 읽기(SBDR, CVE-2022-21123), 공유 버퍼 데이터 샘플링(SBDS, CVE-2022-21125), 장치 레지스터 부분 쓰기(DRPW, CVE-2022-21166). 영향받는 Intel CPU에는 Haswell에서 Rocket Lake까지의 서버 및 클라이언트 프로세서와 Tremont Atom 코어가 포함됩니다. 완화를 위해서는 FB_CLEAR 기능(VERW 명령어가 필 버퍼를 지움)을 제공하는 마이크로코드 업데이트와 커널/사용자 전환 및 VM 진입/종료 시 VERW를 호출하는 커널 업데이트(Linux 5.19+)가 필요합니다. SMT가 활성화된 경우 완화 조치가 적용되더라도 형제 스레드가 취약점을 계속 악용할 수 있습니다. 성능 영향은 낮습니다. VERW 메커니즘은 기존 MDS 완화와 공유되기 때문입니다.
CVE-2022-29900 — 반환 명령어를 이용한 임의 추측 코드 실행 (Retbleed AMD)
AMD 프로세서(패밀리 0x150x17: BulldozerZen 2)와 Hygon 패밀리 0x18에서 공격자는 반환 명령어를 이용하여 추측 실행을 리디렉션하고 커널 메모리를 유출할 수 있으며, Spectre V2에 효과적이었던 retpoline 완화를 우회합니다. Spectre V2가 간접 점프와 호출을 대상으로 하는 반면, Retbleed는 이전에 안전하다고 간주되었던 반환 명령어를 구체적으로 대상으로 합니다. 완화를 위해서는 untrained return thunk(안전한 RET) 또는 IBPB-on-entry 메커니즘을 제공하는 커널 업데이트와 Zen 1/2에서 IBPB 지원을 제공하는 마이크로코드 업데이트가 필요합니다. Zen 1/2에서 IBPB 기반 완화를 사용할 때 전체 보호를 위해 SMT를 비활성화해야 합니다. 성능 영향은 중간입니다.
CVE-2022-29901 — 반환 명령어를 이용한 임의 추측 코드 실행 (Retbleed Intel, RSBA)
RSB 대체 동작(RSBA)이 있는 Intel SkylakeRocket Lake 프로세서에서 반환 명령어는 RSB(Return Stack Buffer)가 언더플로우될 때 BTB(Branch Target Buffer)를 통해 추측적으로 리디렉션되어 retpoline 완화를 우회할 수 있습니다. 완화를 위해서는 Enhanced IBRS(eIBRS, 마이크로코드 업데이트를 통해) 또는 IBRS-on-entry를 지원하는 커널(Linux 5.19+)이 필요합니다. 호출 깊이 추적(stuffing)은 Linux 6.2+부터 사용 가능한 대체 완화 방법입니다. 일반 retpoline은 RSBA 지원 CPU에서 이 취약점을 완화하지 않습니다. 성능 영향은 중간높음입니다.
**CVE-2022-40982 — 수집 데이터 샘플링 (GDS, Downfall)**AVX GATHER 명령어는 공유된 gather 데이터 버퍼를 통해 이전에 사용된 벡터 레지스터의 데이터를 권한 경계를 넘어 유출할 수 있습니다. 이는 취약한 Intel 프로세서에서 AVX2 또는 AVX-512를 사용하는 모든 소프트웨어에 영향을 미칩니다. 마이크로코드 업데이트를 통해 gather 버퍼를 지우거나, AVX 기능 자체를 완전히 비활성화하여 완화할 수 있습니다. 대부분의 워크로드에서 성능 영향은 미미하지만, HPC 및 AI 추론과 같은 AVX 집약적 애플리케이션에서는 최대 50%까지 상당한 영향을 줄 수 있습니다.
CVE-2023-20569 — Return Address Security (Inception, SRSO)
AMD Zen 1 ~ Zen 4 프로세서에서 공격자는 반환 주소 예측기를 조작하여 반환 명령어에서 추측 실행을 리디렉션하고 커널 메모리를 유출할 수 있습니다. 완화를 위해서는 커널 업데이트(SRSO 안전 반환 시퀀스 또는 IBPB-on-entry 제공)와 마이크로코드 업데이트(Zen 3/4에는 SBPB, Zen 1/2에는 IBPB 지원 제공 — 추가로 SMT를 비활성화해야 함)가 모두 필요합니다. 선택된 완화 방법과 CPU 세대에 따라 성능 영향은 낮음에서 상당함까지 다양합니다.
CVE-2023-20588 — AMD Division by Zero Speculative Data Leak (DIV0)
AMD Zen 1 프로세서에서 #DE(0으로 나누기) 예외는 이전 나눗셈의 남은 몫 데이터를 나눗셈 장치에 남겨둘 수 있으며, 추측 측면 채널을 통해 후속 나눗셈에서 관찰될 수 있습니다. 이는 동일한 물리적 코어를 공유하는 SMT 스레드를 포함한 모든 권한 경계를 넘어 데이터를 유출할 수 있습니다. 완화를 위해서는 사용자 공간으로의 모든 종료 및 VMRUN 전에 더미 나눗셈(amd_clear_divider())을 추가하여 오래된 데이터의 지속을 방지하는 커널 업데이트(Linux 6.5+)가 필요합니다. 마이크로코드 업데이트는 필요하지 않습니다. SMT를 비활성화하면 커널 완화가 SMT-스레드 간 유출을 다루지 않으므로 추가적인 보호를 제공합니다. 성능 영향은 미미합니다.
CVE-2023-20593 — Cross-Process Information Leak (Zenbleed)
AMD Zen 2 프로세서의 버그로 인해 VZEROUPPER 명령어가 추측 실행 중에 레지스터 파일을 잘못 0으로 만들어, 벡터 레지스터에서 다른 프로세스의 오래된 데이터를 관찰할 수 있습니다. 이는 커널 및 다른 프로세스의 데이터를 코어당 최대 30KB/s 속도로 모든 권한 경계를 넘어 유출할 수 있습니다. 버그를 수정하는 마이크로코드 업데이트를 적용하거나, DE_CFG MSR의 FP_BACKUP_FIX 비트(비트 9)를 설정하여 결함이 있는 최적화를 비활성화하는 커널 워크어라운드를 통해 완화할 수 있습니다. 두 방법 중 하나만으로 충분합니다. 성능 영향은 미미합니다.
CVE-2023-23583 — Redundant Prefix Issue (Reptar)
Intel 프로세서에서 특정 중복 REX 접두사가 있는 명령어를 실행할 때 예기치 않은 동작이 발생하는 버그입니다. 상황에 따라 시스템 충돌(MCE), 예측 불가능한 동작 또는 잠재적인 권한 상승으로 이어질 수 있습니다. 영향을 받는 CPU에서 실행되는 모든 소프트웨어가 이 버그를 트리거할 수 있습니다. 완화를 위해서는 마이크로코드 업데이트가 필요합니다. 성능 영향은 낮습니다.
CVE-2023-28746 — Register File Data Sampling (RFDS)
특정 Intel Atom 및 하이브리드 프로세서(Goldmont, Goldmont Plus, Tremont, Gracemont, Alder Lake 및 Raptor Lake의 Atom 코어)에서 레지스터 파일이 이전 작업의 오래된 데이터를 유지할 수 있으며, 추측 실행을 통해 액세스 가능하여 공격자가 권한 경계를 넘어 데이터를 유추할 수 있습니다. 완화를 위해서는 RFDS_CLEAR 기능을 제공하는 마이크로코드 업데이트와 권한 전환 시 VERW 명령어를 사용하여 레지스터 파일을 지우는 커널 업데이트(CONFIG_MITIGATION_RFDS, Linux 6.9+)가 모두 필요합니다. RFDS_NO 기능 비트가 있는 CPU는 영향을 받지 않습니다. 성능 영향은 낮습니다.
CVE-2024-28956 — Indirect Target Selection (ITS)
특정 Intel 프로세서(Skylake-X 스테핑 6+, Kaby Lake, Comet Lake, Ice Lake, Tiger Lake, Rocket Lake)에서 공격자는 간접 분기 예측기를 훈련시켜 커널에서 타겟 가젯을 추측 실행하게 하여 eIBRS 보호를 우회할 수 있습니다. 분기 대상 버퍼(BTB)는 간접 분기 대상을 색인화하는 데 주소 비트의 일부만 사용하므로 사용자 공간 코드가 커널 공간의 추측 실행에 영향을 줄 수 있습니다. 영향을 받는 일부 CPU(Ice Lake, Tiger Lake, Rocket Lake)는 기본 사용자-커널 공격에만 취약하고 게스트-호스트(VMX) 공격에는 취약하지 않습니다. 완화를 위해서는 IBPB가 간접 분기 예측을 완전히 플러시하도록 수정하는 마이크로코드 업데이트(IPU 2025.1 / microcode-20250512+)와 분기/반환 썽크를 정렬하거나 RSB 스터핑을 사용하는 커널 업데이트(CONFIG_MITIGATION_ITS, Linux 6.15+)가 모두 필요합니다. 성능 영향은 낮습니다.
CVE-2024-36350 — Transient Scheduler Attack, Store Queue (TSA-SQ)
AMD Zen 3 및 Zen 4 프로세서에서 CPU의 일시적 스케줄러가 특정 타이밍 윈도우 동안 스토어 큐에서 오래된 데이터를 추측 가져올 수 있으며, 이를 통해 공격자는 이전 스토어 작업의 데이터를 권한 경계를 넘어 유추할 수 있습니다. 또한 SMT 스레드 간에도 데이터를 유출할 수 있습니다. 완화를 위해서는 VERW_CLEAR 기능을 노출하는 마이크로코드 업데이트와 사용자/커널 전환 및 VMRUN 전에 VERW 명령어를 사용하여 CPU 버퍼를 지우는 커널 업데이트(CONFIG_MITIGATION_TSA, Linux 6.16+)가 모두 필요합니다. 또한 커널은 SMT가 활성화된 경우 유휴 상태에서 버퍼를 지웁니다. 성능 영향은 낮음~중간입니다.
CVE-2024-36357 — Transient Scheduler Attack, L1 (TSA-L1)
AMD Zen 3 및 Zen 4 프로세서에서 CPU의 일시적 스케줄러가 특정 타이밍 윈도우 동안 L1 데이터 캐시에서 오래된 데이터를 추측 가져올 수 있으며, 이를 통해 공격자는 L1D 캐시의 데이터를 권한 경계를 넘어 유추할 수 있습니다. 완화를 위해서는 TSA-SQ와 동일한 마이크로코드 및 커널 업데이트가 필요합니다: VERW_CLEAR를 노출하는 마이크로코드 업데이트와 권한 전환 시 VERW를 통해 CPU 버퍼를 지우는 커널 업데이트(CONFIG_MITIGATION_TSA, Linux 6.16+). 성능 영향은 낮음~중간입니다.
CVE-2025-40300 — VM-Exit Stale Branch Prediction (VMScape)
게스트 VM이 호스트로 종료된 후, 커널이 사용자 공간으로 돌아가기 전에 게스트의 오래된 분기 예측이 호스트 측 추측 실행에 영향을 줄 수 있으며, 로컬 공격자가 호스트 커널 메모리를 유출할 수 있습니다. 이는 Sandy Bridge부터 Arrow Lake/Lunar Lake까지의 Intel 프로세서, AMD Zen 1~Zen 5 제품군 및 Hygon 제품군 0x18에 영향을 미칩니다. 신뢰할 수 없는 게스트가 있는 하이퍼바이저를 실행하는 시스템만 위험합니다. 완화를 위해서는 VM 종료 후 사용자 공간으로 돌아가기 전에 IBPB를 실행하는 커널 업데이트(CONFIG_MITIGATION_VMSCAPE, Linux 6.18+)가 필요합니다. 기존 IBPB 지원 외에 특정 마이크로코드 업데이트는 필요하지 않습니다. 성능 영향은 낮습니다.
CVE-2024-45332 — Branch Privilege Injection (BPI)
Intel 프로세서(Coffee Lake부터 Raptor Lake, 일부 서버 및 Atom 부품 포함)의 분기 예측기 업데이트 메커니즘에서 경쟁 조건으로 인해 사용자 공간 분기 예측이 일시적으로 커널 공간 추측 실행에 영향을 줄 수 있으며, eIBRS 및 IBPB 보호를 약화시킵니다. 이는 Spectre V2 완화를 위해 eIBRS에만 의존하는 시스템이 마이크로코드 수정 없이는 완전히 보호되지 않을 수 있음을 의미합니다. 완화를 위해서는 비동기 분기 예측기 업데이트 타이밍을 수정하여 eIBRS와 IBPB가 원래 의도대로 작동하게 하는 마이크로코드 업데이트(intel-microcode 20250512+)가 필요합니다. 커널 변경은 필요하지 않습니다. 성능 영향은 미미합니다.
CVE-2025-54505 — AMD Zen1 Floating-Point Divider Stale Data Leak (FPDSS)
AMD Zen1 및 Zen+ 프로세서(EPYC 7001, EPYC Embedded 3000, Athlon 3000 with Radeon, Ryzen 3000 with Radeon, Ryzen PRO 3000 with Radeon Vega)에서 하드웨어 부동 소수점 나눗셈기가 이전 작업의 부분 몫 데이터를 유지할 수 있습니다. 특정 상황에서 해당 결과는 동일한 나눗셈기를 공유하는 다른 스레드로 유출되어 모든 권한 경계를 넘을 수 있습니다. 이는 CVE-2025-54505로 지정되었으며 AMD-SB-7053으로 2026-04-17에 AMD에서 게시되었습니다. 완화를 위해서는 부팅 시 모든 Zen1 CPU에 대해 MSR 0xc0011028(MSR_AMD64_FP_CFG)의 비트 9(ZEN1_DENORM_FIX_BIT)를 무조건 설정하여 누출을 담당하는 하드웨어 최적화를 비활성화하는 커널 업데이트(메인라인 커밋 e55d98e77561, "x86/CPU: Fix FPDSS on Zen1", Linux 7.1)가 필요합니다. 마이크로코드 업데이트는 필요하지 않습니다: 칙 비트는 Zen1 실리콘에 공장에서부터 존재하며 마이크로코드 개정과 무관합니다. 성능 영향은 부동 소수점 나눗셈 처리량의 약간의 감소로 제한되며, 이것이 AMD가 기본적으로 하드웨어에서 이 비트를 활성화하지 않는 이유입니다.
| 모드 | 플래그 | CPU 하드웨어 | 실행 중인 커널 | 커널 이미지 | 사용 사례 |
|---|
| 라이브 (기본값) | (없음) | 예 | 예 | 자동 감지 | 현재 시스템의 일상적인 감사 |
| No-runtime | --no-runtime | 예 | 아니요 | 필수 | 이 CPU에 대해 다른 커널 확인(예: 배포 전) |
| No-hardware | --no-hw | 아니요 | 아니요 | 필수 | 다른 시스템 또는 아키텍처용 커널 이미지의 순수 정적 분석 |
| Hardware-only | --hw-only | 예 | 아니요 | 아니요 | 커널을 검사하지 않고 CPU 영향 여부 빠르게 확인 |