Spectre/Meltdown ์์ธ
๊ฐ์
Spectre(์คํํฐ)์ Meltdown(๋ฉํธ๋ค์ด)์ 2018๋ 1์ ๊ณต๊ฐ๋ ํ๋ ํ๋ก์ธ์์ ์ถ๋ก ์คํ(Speculative Execution)๊ณผ ์บ์ ์ฌ์ด๋ ์ฑ๋์ ์ ์ฉํ ํ๋์จ์ด ๋ณด์ ์ทจ์ฝ์ ์ด๋ค. ๋ ์ทจ์ฝ์ ์ CPU์ ๋ช ๋ น์ด ํ์ดํ๋ผ์ธ๊ณผ ๋ธ๋์น ์์ธก ๋ฉ์ปค๋์ฆ์ ์ด์ฉํด ๊ถํ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ์ ์์ผ๋ฉฐ, Intel x86 ํ๋ก์ธ์๋ฅผ ๋น๋กฏํด AMD, ARM ๊ธฐ๋ฐ ํ๋ก์ธ์๊น์ง ๊ด๋ฒ์ํ๊ฒ ์ํฅ์ ๋ฏธ์ณค๋ค. Meltdown์ out-of-order ์คํ๊ณผ ๊ถํ ๊ฒ์ฌ ์ฌ์ด์ race condition์ ์ ์ฉํด ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ๋ ๋ฐ๋ฉด, Spectre๋ ๋ธ๋์น ์์ธก๊ธฐ๋ฅผ ์ค์ธ์กฐ์ํ์ฌ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ค.
2018๋ ์ดํ CPU ์ค๊ณ์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ก ๋ถ์ํ์์ผ๋ฉฐ, ์ํํธ์จ์ด ํจ์น์ ๋ง์ดํฌ๋ก์ฝ๋ ์ ๋ฐ์ดํธ, ๊ทธ๋ฆฌ๊ณ ํ๋์จ์ด ๋ฆฌ๋์์ธ์ด ๋ณํ๋์๋ค. ์ด ๋ฌธ์๋ Spectre์ Meltdown์ ๋ฉ์ปค๋์ฆ, ๋ณํ(variant), ์ํฅ ๋ฒ์, ๋ฐฉ์ด ๊ธฐ์ , ๊ทธ๋ฆฌ๊ณ ๊ด๋ จ ๋ณด์ ์ทจ์ฝ์ ๋ค์ ์์ธํ ๋ถ์ํ๋ค.
ํต์ฌ ๊ฐ๋
์ถ๋ก ์คํ (Speculative Execution)
ํ๋ ํ๋ก์ธ์๋ ๋ถ๊ธฐ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฏธ๋ฆฌ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค. ๋ธ๋์น ์์ธก๊ธฐ(Branch Predictor)๊ฐ ๋ถ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ๋ฉด, CPU๋ ์์ธก๋ ๊ฒฝ๋ก์ ๋ช ๋ น์ด๋ฅผ ์ถ๋ก ์ ์ผ๋ก ์คํํ๋ค. ๋ง์ฝ ์์ธก์ด ์ฌ๋ฐ๋ฅด๋ฉด ๊ทธ๋๋ก ๊ฒฐ๊ณผ๊ฐ ์ปค๋ฐ๋์ด ์ฑ๋ฅ ์ด๋์ด ๋ฐ์ํ์ง๋ง, ์์ธก์ด ํ๋ฆฌ๋ฉด ์คํ๋ ๊ฒฐ๊ณผ๋ ํ๊ธฐ๋๋ค. ๋ฌธ์ ๋ ์ถ๋ก ์คํ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ฌ์ด๋ ์ดํํธ(cache line ๋ก๋, TLB ์ ๋ฐ์ดํธ ๋ฑ)๊ฐ ํ๊ธฐ๋์ง ์๋๋ค๋ ์ ์ด๋ค.
์บ์ ์ฌ์ด๋ ์ฑ๋ (Cache Side-Channel)
์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ง์ ์ฝ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋ค. ๊ณต๊ฒฉ์๋ ํน์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํ ์ ๊ทผ ์๊ฐ(timing)์ ์ธก์ ํ์ฌ ํด๋น ๋ฐ์ดํฐ๊ฐ ์บ์์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๊ถํ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ถํ ์ ์๋ค.
๋ธ๋์น ์์ธก๊ธฐ ์ค์ธ์กฐ์ (Branch Predictor Poisoning)
Spectre ๊ณต๊ฒฉ์ ํต์ฌ์ ๋ธ๋์น ์์ธก๊ธฐ๋ฅผ ์ ์์ ์ผ๋ก ํ์ต์ํค๋ ๊ฒ์ด๋ค. ๊ณต๊ฒฉ์๋ ๋ฐ๋ณต์ ์ธ ์์ ์ ํตํด ๋ธ๋์น ์์ธก๊ธฐ์ ๋ด๋ถ ์ํ(PHT, BTB, RSB ๋ฑ)๋ฅผ ์ํ๋ ๋๋ก ์กฐ์ํ ์ ์๋ค. ์ด๋ ๊ฒ ์ค์ธ์กฐ์๋ ์์ธก๊ธฐ๋ ํผํด์๊ฐ ์คํํ๋ ์ฝ๋์ ๋ถ๊ธฐ๋ฅผ ์๋ชป๋ ๊ฒฝ๋ก๋ก ์ ๋ํ์ฌ, ์ถ๋ก ์คํ์ ํตํด ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ๋ง๋ ๋ค.
์ปค๋/์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ (Kernel/User Memory Isolation)
์ด์์ฒด์ ๋ ๋ณดํธ ๋ ๋ฒจ(Protection Ring)์ ํตํด ์ปค๋ ์์ญ๊ณผ ์ ์ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฒฉ๋ฆฌํ๋ค. ์ ์ ํ๋ก์ธ์ค๋ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์์คํ ์ฝ์ ํตํด์๋ง ์ปค๋ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ค. Meltdown์ ์ด ๊ฒฉ๋ฆฌ๋ฅผ ์ฐํํ์ฌ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๋ก์ธ์ค๊ฐ ์ฝ์ ์ ์๊ฒ ๋ง๋ ๋ค.
์ํ ๊ธฐ๋ฒ๊ณผ ์ถ๋ก ๊ฒฝ๊ณ ์ ์ด
Spectre์ Meltdown ๋์์ ๋จ์ผ ํจ์น๋ก ๋๋์ง ์๋๋ค. Meltdown์ KPTI๋ก ์ปค๋ ํ์ด์ง ํ
์ด๋ธ ๋งคํ์ ๋ถ๋ฆฌํด ์ ์ ๋ชจ๋์์ ์ปค๋ ์ฃผ์๊ฐ ์ถ๋ก ๊ฒฝ๋ก์ ๋
ธ์ถ๋๋ ํญ์ ์ค์ด๊ณ , Spectre๋ retpoline, IBRS/eIBRS, IBPB, STIBP, LFENCE, array_index_nospec() ๊ฐ์ ์ ์ด ํ๋ฆ ๋ฐ ์ธ๋ฑ์ค ์ ํ ๊ธฐ๋ฒ์ ์กฐํฉํด ์ฌ์ฉํ๋ค. ์ต๊ทผ ์ปค๋์ /sys/devices/system/cpu/vulnerabilities/ ์๋ ์ํ ํ์ผ๋ก ์ํ ์ ์ฉ ์ฌ๋ถ๋ฅผ ๋
ธ์ถํ๋ฏ๋ก, ์ค์ ์ด์ ํ๊ฒฝ์์๋ ์ทจ์ฝ์ ์กด์ฌ ์ฌ๋ถ๋ณด๋ค ํ์ฑํ๋ ์ํ ์กฐํฉ๊ณผ ์ฑ๋ฅ ๋น์ฉ์ ํจ๊ป ํ์ธํด์ผ ํ๋ค.
๋น๊ต/๋ถ์
Spectre vs Meltdown ๋น๊ตํ
| ํญ๋ชฉ | Meltdown | Spectre |
|---|---|---|
| CVE | CVE-2017-5754 (RDCL) | CVE-2017-5753 (V1), CVE-2017-5715 (V2) |
| ๋ฉ์ปค๋์ฆ | Out-of-order ์คํ๊ณผ ๊ถํ ๊ฒ์ฌ์ race condition | ๋ธ๋์น ์์ธก๊ธฐ ์ค์ธ์กฐ์์ ํตํ ์ถ๋ก ์คํ |
| ์ํฅ ํ๋ก์ธ์ | Intel x86 (1995~), IBM Power, ARM Cortex-A75 | Intel, AMD, ARM (๋ธ๋์น ์์ธก๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฑฐ์ ๋ชจ๋ ํ๋ก์ธ์) |
| ์ํฅ ๋ฒ์ | ์ปค๋ ๋ฉ๋ชจ๋ฆฌ ์ง์ ์ฝ๊ธฐ | ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์์ ๋ฐ์ดํฐ ์ถ์ถ |
| ๊ณต๊ฒฉ ๋์ด๋ | ๋น๊ต์ ์ฌ์ (๋จ์ผ ํ๋ก์ธ์ค๋ก ๊ฐ๋ฅ) | ์๋์ ์ผ๋ก ์ด๋ ค์ (์ ๋ฐํ ํ์ด๋ฐ ์ธก์ ํ์) |
| ์ํํธ์จ์ด ๋ฐฉ์ด | KPTI (์ปค๋ ํ์ด๋ธ ํ ์ด๋ธ ๊ฒฉ๋ฆฌ) | retpoline, IBRS, stibp, SSBD |
| ํ๋์จ์ด ์์ | Intel ์นฉ ๋ฆฌ๋์์ธ (2018๋ ํ๋ฐ๊ธฐ~) | ์ ๋ช ๋ น์ด(microcode), ํํฐ์ ๋ |
| ์ฑ๋ฅ ์ํฅ | 5~30% (์ํฌ๋ก๋์ ๋ฐ๋ผ ์ฐจ์ด) | 2~14% (8์ธ๋ ์ฝ์ด ๊ธฐ์ค) |
| ๊ฒ์ถ ๊ฐ๋ฅ์ฑ | ๋ถ๊ฐ๋ฅ (์ ํต์ ๋ก๊ทธ ๋ฏธ๊ธฐ๋ก) | ์ด๋ ค์ (์ค์๊ฐ ML ๊ฐ์ง ์๋ ์ค) |
Spectre ๋ณํ ๋น๊ตํ
| ๋ณํ | ์ด๋ฆ | CVE | ๋ฉ์ปค๋์ฆ | ์ํฅ |
|---|---|---|---|---|
| V1 | Bounds Check Bypass | CVE-2017-5753 | ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ์ค์ธ์กฐ์์ผ๋ก ๊ฒฝ๊ณ ๊ฒ์ฌ ์ฐํ | ๋ฐฐ์ด ๊ฒฝ๊ณ ๋ฐ๊นฅ ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ |
| V2 | Branch Target Injection | CVE-2017-5715 | ๊ฐ์ ๋ถ๊ธฐ ์์ธก๊ธฐ ์ค์ธ์กฐ์ | ์์ ์ฃผ์๋ก ๋ถ๊ธฐ ์ ๋ |
| V1.1 | Bounds Check Bypass Store | CVE-2018-3693 | V1์ ์ฐ๊ธฐ ๋ณํ | ๊ฒฝ๊ณ ๋ฐ๊นฅ ์ฐ๊ธฐ ๊ฐ๋ฅ |
| V1.2 | Read-only Protection Bypass | - | ์ฝ๊ธฐ ์ ์ฉ ๋ณดํธ ์ฐํ | ์ฝ๊ธฐ ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ |
| V3a | Rogue System Register Read | CVE-2018-3640 | ์์คํ ๋ ์ง์คํฐ ์ฝ๊ธฐ | MSR ๋ฑ ์์คํ ๋ ์ง์คํฐ ๋ฐ์ดํฐ ์ ์ถ |
| V4 | Speculative Store Bypass | CVE-2018-3639 | ์คํ ์ด ๋ฒํผ์ ์ถ๋ก ์ ์ฝ๊ธฐ | ๋ฉ๋ชจ๋ฆฌ ๊ฐ ์ ์ถ |
| V5 | SpectreRSB | - | RSB(Return Stack Buffer) ์ค์ธ์กฐ์ | ํจ์ ๋ฐํ ์ฃผ์ ์กฐ์ |
| BHI | Branch History Injection | CVE-2022-0001, CVE-2022-0002 | BHB๋ฅผ ์ค์ผ์์ผ ๊ฐ์ ๋ถ๊ธฐ ์์ธก ๋ณด์กฐ ์ ๋ณด ์กฐ์ | eIBRS ํ๊ฒฝ์์๋ ์ถ๊ฐ ์ํ ํ์ |
๋์ ์๋ฆฌ
Meltdown ๊ณต๊ฒฉ ํ๋ฆ
Meltdown ๊ณต๊ฒฉ์ ๋ค์ ๋จ๊ณ๋ก ์งํ๋๋ค:
-
๋ช ๋ น์ด ์ค์ผ์ค๋ง: CPU๊ฐ ์ ์ ํ๋ก์ธ์ค์ ๋ช ๋ น์ด๋ฅผ ๋ง๋๋ฉด, ํด๋น ๋ช ๋ น์ด๋ out-of-order ์คํ์ ์ํด ์ค์ผ์ค๋ฌ์ ์ํด ์คํ ์ ๋์ผ๋ก ๋์คํจ์น๋๋ค. ์ด๋ ๊ถํ ๊ฒ์ฌ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๋ณ๋ ฌ๋ก ์ํ๋๋ค.
-
๊ถํ ๊ฒ์ฌ ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ: CPU๋ ๊ถํ ๊ฒ์ฌ๊ฐ ์๋ฃ๋๊ธฐ ์ ์ ์ถ๋ก ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ค. ๋ง์ฝ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ปค๋ ์์ญ์ ์๋ค๋ฉด, ๋ฐ์ดํฐ๋ ์บ์์ ๋ก๋๋๋ค.
-
๊ถํ ๊ฒ์ฌ ์คํจ์ ํ๊ธฐ: ๊ถํ ๊ฒ์ฌ๊ฐ ์๋ฃ๋๋ฉด ํด๋น ์ ๊ทผ์ ๊ฑฐ๋ถ๋๊ณ , ์ถ๋ก ์ ์ผ๋ก ์คํ๋ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ ํ๊ธฐ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ๋ก๋๋ ์บ์ ๋ฐ์ดํฐ๋ ๋จ์์๋ค.
-
ํ์ด๋ฐ ๊ณต๊ฒฉ: ๊ณต๊ฒฉ์๋ ์บ์ ํํธ/๋ฏธ์ค๋ฅผ ์ธก์ ํ์ฌ ํน์ ์ฃผ์์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ถํ๋ค. ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ ๊ทผ ์๊ฐ์ด ์งง๊ณ , ์์ผ๋ฉด ๊ธธ๋ค.
-
๋ฐ๋ณต์ ํตํ ๋ฐ์ดํฐ ์ถ์ถ: ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํธ ๋จ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋ค.
Spectre ๊ณต๊ฒฉ ํ๋ฆ
Spectre ๊ณต๊ฒฉ์ ๋ค์ ๋จ๊ณ๋ก ์งํ๋๋ค:
-
๋ธ๋์น ์์ธก๊ธฐ ํ์ต: ๊ณต๊ฒฉ์๋ ๋ฐ๋ณต์ ์ธ ์์ ์ ํตํด ๋ธ๋์น ์์ธก๊ธฐ(PHT, BTB ๋ฑ)๋ฅผ ์ํ๋ ๋๋ก ํ์ต์ํจ๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ์ฝ๋์์ ๋ฐ๋ณต์ ์ผ๋ก ํน์ ํจํด์ ๋ถ๊ธฐ๋ฅผ ์คํํ์ฌ ์์ธก๊ธฐ์ ๋ด๋ถ ์ํ๋ฅผ ์กฐ์ํ๋ค.
-
ํธ๋ฆฌ๊ฑฐ ์ฝ๋ ์คํ: ํผํด์๊ฐ ์คํํ๋ ์ฝ๋์์ ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ๋ช ๋ น์ด๊ฐ ์คํ๋๋ค. ์ด ๋ถ๊ธฐ๋ ๊ณต๊ฒฉ์๊ฐ ์ค์ธ์กฐ์ํ ์์ธก๊ธฐ์ ์ํด ์๋ชป๋ ๊ฒฝ๋ก๋ก ์์ธก๋๋ค.
-
์ถ๋ก ์คํ: CPU๋ ์์ธก๋ ๊ฒฝ๋ก๋ฅผ ์ถ๋ก ์ ์ผ๋ก ์คํํ๋ค. ์ด ๊ณผ์ ์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ(์: ์ด๋ ์ด์ ๊ฒฝ๊ณ ๋ฐ๊นฅ ๊ฐ)์ ์ ๊ทผํ๊ฒ ๋๋ค.
-
์บ์ ์ํ ๋ณ๊ฒฝ: ์ถ๋ก ์คํ์์ ์ ๊ทผํ ๋ฐ์ดํฐ๋ ์บ์์ ๋ก๋๋๋ค. ์ด ์บ์ ์ํ ๋ณํ๋ ์ฌ์ด๋ ์ฑ๋๋ก ์ฌ์ฉ๋๋ค.
-
ํ์ด๋ฐ ์ธก์ ๋ฐ ๋ฐ์ดํฐ ์ถ์ถ: ๊ณต๊ฒฉ์๋ ํน์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํ ์ ๊ทผ ์๊ฐ์ ์ธก์ ํ์ฌ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์บ์์ ๋ก๋๋์๋์ง ์ ์ถํ๊ณ , ์ด๋ฅผ ํตํด ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ค.
์ฅ๋จ์
Meltdown
์ฅ์ :
- ์ํํธ์จ์ด ํจ์น(KPTI)๋ก ์ฆ์ ์ํ์ ํฌ๊ฒ ๋ฎ์ถ ์ ์์
- ๋น๊ต์ ๋จ์ํ ๊ณต๊ฒฉ ๊ตฌํ์ผ๋ก ์ฐ๊ตฌ์ ์ฌํ์ด ์ฌ์
- ์ปค๋/์ ์ ๊ฒฉ๋ฆฌ ๊ฒฝ๊ณ์ ์ฝ์ ์ ๋ช
ํํ ๋๋ฌ๋ด ์ค๊ณ ๊ฐ์ ๊ณ๊ธฐ๊ฐ ๋จ
๋จ์ :
- KPTI ์ ์ฉ ์ ์ฑ๋ฅ ์ค๋ฒํค๋ ๋ฐ์ (5~30%)
- ์ปค๋/์ ์ ๋ชจ๋ ์ ํ ๋น์ฉ ์ฆ๊ฐ
- ๊ฐ์ํ ํ๊ฒฝ์์ ์ถ๊ฐ์ ์ธ ์ฑ๋ฅ ์ ํ
Spectre
์ฅ์ :
- ๊ด๋ฒ์ํ ํ๋ก์ธ์ ์ํฅ์ผ๋ก ์ถ๋ก ์คํ ์ ๋ฐ์ ์ํ์ ๋๋ฌ๋
- ๋ค์ํ ๋ณํ ๋ถ์์ ํตํด ๋ธ๋์น ์์ธก๊ธฐ์ ๊ฒฉ๋ฆฌ ๊ฒฝ๊ณ ์ฐ๊ตฌ๊ฐ ํฌ๊ฒ ์ง์ ๋จ
- JavaScript, ์๋๋ฐ์ค, VM ๋ฑ ์ฌ๋ฌ ํ๊ฒฝ์์ ๊ณต๊ฒฉ ํ๋ฉด์ ์ ๊ฒํ๊ฒ ๋ง๋ฆ
๋จ์ :
- ์์ ํ ๋ฐฉ์ด๊ฐ ์ด๋ ค์ (๊ทผ๋ณธ์ ์ค๊ณ ๋ฌธ์ )
- ์ํํธ์จ์ด ํจ์น์ ์ฑ๋ฅ ์ํฅ
- ์ง์์ ์ธ ์๋ก์ด ๋ณํ ๋ฐ๊ฒฌ
- ๊ฒ์ถ์ด ๋งค์ฐ ์ด๋ ค์
๊ด๋ จ ๊ธฐ์
์ฐธ๊ณ ๋ฌธํ
- Kocher, P. et al. "Spectre Attacks: Exploiting Speculative Execution." IEEE S&P, 2019.
- Lipp, M. et al. "Meltdown: Reading Kernel Memory from User Space." USENIX Security, 2018.
- Horn, J. "Speculative Execution Side Effects Variants." Google Project Zero, 2018.
- Intel Corporation. "Microcode Update Guidance." Intel White Paper, 2018.
- Canella, C. et al. "A Systematic Evaluation of Transient Execution Attacks and Defenses." arXiv, 2019.
- Schwarz, M. et al. "Spectre Goes Mainstream: A Survey on Spectre and Related Transient Execution Attacks." IEEE TDSC, 2023.
- Intel Corporation. "Indirect Branch Restricted Speculation (IBRS)." Intel White Paper, 2018.
- Google Project Zero. "Retpoline: Binary Instrumentation for Branch Target Injection." 2018.
- Texas A&M University. "Spectre Attacks Cannot Be Detected by Typical Antivirus Software." 2021.
- North Carolina State University. "Machine Learning Detection of Transient Attacks." 2022.
๊ด๋ จ ๋ฌธ์
- Rowhammer ๊ณต๊ฒฉ๊ณผ ๋ฐฉ์ด
- ๋ฉ๋ชจ๋ฆฌ ์ํธํ
- SGX/TEE ๋ณด์ ๊ธฐ์
- CPU ๋ง์ดํฌ๋ก์ํคํ ์ฒ ๊ธฐ์ด
- ๋ถ๊ธฐ ์์ธก
- Out-of-Order ์คํ
- CPU ์บ์ ์ํคํ ์ฒ
์ด์ ์ ๊ฒ ํฌ์ธํธ
- Linux๋
/sys/devices/system/cpu/vulnerabilities/spectre_v1,spectre_v2์์ ์ํ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค. - Spectre v2 ๋์์ retpoline๋ง์ด ์๋๋ผ IBPB, STIBP, eIBRS, RSB stuffing, BHI ๋์๊น์ง ์กฐํฉํด ํด์ํด์ผ ํ๋ค.
- Meltdown ๊ณ์ด์ KPTI ์ ์ฉ ์ฌ๋ถ์ ๊ฐ์ํ ํ๊ฒฝ์ VM exit ๊ฒฝ๋ก ๋น์ฉ์ ํจ๊ป ๋ด์ผ ํ๋ค.
ํต์ฌ ์ ๋ฆฌ
Spectre์ Meltdown์ ํ๋ ํ๋ก์ธ์์ ์ฑ๋ฅ ์ต์ ํ ๋ฉ์ปค๋์ฆ์ธ ์ถ๋ก ์คํ๊ณผ ๋ธ๋์น ์์ธก์ ์ ์ฉํ ๋ํ์ ์ธ transient execution ์ทจ์ฝ์ ์ด๋ค. Meltdown์ out-of-order ์คํ๊ณผ ๊ถํ ๊ฒ์ฌ ์ฌ์ด์ race condition์ ํตํด ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ์ฝ์ ์ ์๋ ๋ฐ๋ฉด, Spectre๋ ๋ธ๋์น ์์ธก๊ธฐ๋ฅผ ์ค์ธ์กฐ์ํ์ฌ ๊ฑฐ์ ๋ชจ๋ ํ๋ ํ๋ก์ธ์์์ ๋ค๋ฅธ ๋ณด์ ๊ฒฝ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋ค. ์ํํธ์จ์ด ๋ฐฉ์ด(KPTI, retpoline, IBRS/eIBRS, IBPB, STIBP ๋ฑ)๋ ๊ฐ๋ฅํ์ง๋ง ์ฑ๋ฅ ์ค๋ฒํค๋๊ฐ ์๋ฐ๋๋ฉฐ, ํ๋์จ์ด ๋ฆฌ๋์์ธ๊ณผ ์ด์์ฒด์ ์ฐจ์์ ์ํ ์กฐํฉ์ด ํจ๊ป ํ์ํ๋ค. ์ดํ์๋ BHI, Retbleed ๊ฐ์ ํ์ ๊ณต๊ฒฉ์ด ์ด์ด์ก๊ธฐ ๋๋ฌธ์, ์ค์ ์ด์์์๋ ์ทจ์ฝ์ ์ด๋ฆ ํ๋๋ณด๋ค ํ์ฌ CPU ๋ง์ดํฌ๋ก์ฝ๋์ ์ปค๋์ด ์ด๋ค ์ํ ์กฐํฉ์ ํ์ฑํํ๋์ง๋ฅผ ์ ๊ฒํ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค.