๋ ผ๋ฌธ ์ ๋ณด
์ ์: Paul Kocher ยท Daniel Genkin ยท Daniel Gruss ยท Werner Haas ยท Mike Hamburg ยท Moritz Lipp ยท Stefan Mangard ยท Thomas Prescher ยท Michael Schwarz ยท Yuval Yarom (arXiv v1 ๊ธฐ์ค 10์ธ; IEEE S&P ์ต์ข ํ์๋ Jann Horn(Google Project Zero)ยทAnders Fogh๊ฐ ์ถ๊ฐ๋ 12์ธ ๊ณต์ )
์ถ์ฒ: arXiv:1801.01203v1 [cs.CR] (2018๋ 1์ 3์ผ ๊ณต๊ฐ) ยท IEEE S&P (Oakland) 2019 ์ ์ ๊ฒ์ฌ ยท PDF
๋ถ์ผ: ํ๋์จ์ดยท๋ง์ดํฌ๋ก์ํคํ ์ฒ ๋ณด์ ยท ์ถ์ธก ์คํ(speculative execution) ๋ถ์ฑ๋ ยท ์บ์ ๊ธฐ๋ฐ ์ฌ์ด๋์ฑ๋ ยท ํ๋ก์ธ์ ๋ณด์ (ACM CCS: Security and privacy โ Side-channel analysis and countermeasures)
์ธ์ฉ: OpenAlex ๊ธฐ์ค 1,781ํ (IEEE S&P 2019 ๋ฒ์ ; 2018๋ 1์ ํ๋ฆฌํ๋ฆฐํธ ๊ณต๊ฐ ์งํ ํญ๋ฐ์ ์ผ๋ก ์ธ์ฉ๋จ) โ ์ด ๋ ผ๋ฌธ ํ๋๊ฐ ํ๋ CPU ์ค๊ณยท์ด์์ฒด์ ยท์ปดํ์ผ๋ฌยท๋ธ๋ผ์ฐ์ ์ ์ํ์ฑ ์ ํต์งธ๋ก ๋ค์ ์ฐ๊ฒ ๋ง๋ค์๋ค.
CVE: Spectre Variant 1 =
CVE-2017-5753 (Bounds Check Bypass) ยท Variant 2 = CVE-2017-5715 (Branch Target Injection)๊ณต๊ฐ: 2018๋ 1์ 3์ผ, IntelยทAMDยทARMยทQualcomm ๋ฑ๊ณผ ์กฐ์จ๋ ์ฑ ์ ๊ณต๊ฐ โ ๊ฐ์ ๋ ๊ณต๊ฐ๋ ์๋งค ๋ ผ๋ฌธ Meltdown๊ณผ ํจ๊ป "2018๋ ์ ๋ ๋จ์ด"๋ก ๋ถ๋ฆฐ๋ค.
์๋ฌธ: arXiv:1801.01203 ยท PDF ยท ํ๋ก์ ํธ ํ์ด์ง (spectreattack.com)
ํ ์ค ์์ฝ โ "์ถ์ธก ์คํ์ ์ ๋ณด์ด๋ ๊ณณ์์ ์คํ๋๋ค"๋ ์ฐฉ๊ฐ์ด ๋ชจ๋ ๊ฒฉ๋ฆฌ๋ฅผ ๋ฌด๋๋จ๋ ธ๋ค
ํ๋ CPU๋ ์ฑ๋ฅ์ ์ํด ๋ถ๊ธฐ ์์ธก(branch prediction)๊ณผ ์ถ์ธก ์คํ(speculative execution)์ ์ด๋ค. ๋ถ๊ธฐ ๋ชฉ์ ์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ ๊ฒฐ๊ณผ์ ๋ฌ๋ ค ์์ผ๋ฉด, CPU๋ ๊ฒฐ๊ณผ๊ฐ ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ชฉ์ ์ง๋ฅผ ์ฐ์ด์ ๋ฏธ๋ฆฌ ์คํํด ๋๋ค. ์ด๋ CPU๊ฐ "์คํํ ์ฒ"ํ ๋ช ๋ น๋ค(๋ ผ๋ฌธ์ ์ฉ์ด๋ก transient instructions)์ ๋์ค์ ํ๊ธฐ๋์ง๋ง, ๊ทธ ์ฌ์ด์ ์ ๊ทผํ ๋ฉ๋ชจ๋ฆฌยท๋ ์ง์คํฐ์ ์บ์์ ๋จ๊ธด ํ์ ์ ํ๊ธฐ๋์ง ์๋๋ค. Spectre๋ ์ด ๊ตฌ๋ฉ์ผ๋ก ํผํด์๋ฅผ ์ถ์ธก ์คํ ์์ฒด๋ก ์์ฌ์ ์ ์ ์คํ์์๋ ๊ฒฐ์ฝ ์ผ์ด๋์ง ์์ ์ฐ์ฐ์ ์ํค๊ณ , ๊ทธ ๋ถ์์ฉ์ ๋ถ์ฑ๋๋ก ์ฝ์ด๋ธ๋ค.
"Speculative logic is unfaithful in how it executes, can access the victim's memory and registers, and can perform operations with measurable side effects." โ ๋ ผ๋ฌธ ์ด๋ก
์ ์๋ค์ ์ด ์๋ฆฌ๋ก ํ๋ก์ธ์ค ๊ฒฝ๊ณยท์ปค๋ ๊ฒฝ๊ณยท๋ธ๋ผ์ฐ์ ์๋๋ฐ์ค๋ฅผ ๋์ด ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์ค์ฆ ๊ณต๊ฒฉ์ ์ ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ผ๋ฌธ์ด ๋์ง ๋ ๊ทผ๋ณธ์ ์ธ ๊ฒฝ๊ณ ๋ ์ด๊ฒ์ด๋ค โ ์ถ์ธก ์คํ์ ์ด์์ฒด์ ์ ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ, ์ ์ ๋ถ์, ์ปจํ ์ด๋ ๊ฒฉ๋ฆฌ, JIT ์ปดํ์ผ, ๊ทธ๋ฆฌ๊ณ ์บ์ ํ์ด๋ฐ ์ํ์ฑ ์ด๋ผ๋ "์ํํธ์จ์ด ๋ณด์์ ๊ฐ์ ๋ค"์ ํ๊บผ๋ฒ์ ์๋ฐํ๋ค.
๋ฐฐ๊ฒฝ โ ์ ์ด ๋ ผ๋ฌธ์ด ๋ถ์ฑ๋ ๊ณต๊ฒฉ์ ๋ถ๊ธฐ์ ์ธ๊ฐ
- ๊ธฐ์กด ๋ถ์ฑ๋ ๊ณต๊ฒฉ๊ณผ์ ์ฐจ์ด: ์ข ์ ์ ์บ์ ๋ถ์ฑ๋ยท์ ๋ ฅ ๋ถ์(DPA)์ ์ค์ ๋ก ์คํ๋ ์ ๊ทผ์ ํ์ ์ ์ฝ์๋ค. Spectre๋ ํ ๊ฑธ์ ๋ ๋์๊ฐ, ์ํคํ ์ฒ์ ์ผ๋ก๋ ์ ๋ ์คํ๋์ด์๋ ์ ๋๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ํฌ๊ธฐ์ ์ผ๋ก ๊ฐ์ ์คํ์ํจ ๋ค ๊ทธ ํ์ ์ ์ฝ๋๋ค โ ์ฆ "์คํ๋์ง ์์ ์ฝ๋์ ๋ถ์์ฉ"์ ๊ณต๊ฒฉ๋ฉด์ผ๋ก ๋ง๋ ์ต์ด์ ์ฌ๋ก๋ค.
- ๋ ๊ณต๊ฒฉ ์๋จ์ ๊ฒฐํฉ: ๋ ผ๋ฌธ์ ์ฌ์ด๋์ฑ๋ ๊ณต๊ฒฉ + ๊ฒฐํจ ์ฃผ์ (fault) ๊ณต๊ฒฉ + return-oriented programming์ ๋ฐฉ๋ฒ๋ก ์ ๊ฒฐํฉํ๋ค๊ณ ์ค์ค๋ก ์ค๋ช ํ๋ค. ์ฆ ๋ฏธ์ธ์ํคํ ์ฒ ์์ค์ "๊ฐ์ ฏ"์ ์กฐํฉํด ์์ ์ฃผ์๋ฅผ ์ฝ๋ ์ ๋ณด ์ ์ถ์ฉ ROP๋ผ ํ ์ ์๋ค.
- ์ ์ถ ์ฑ๋: ๊ตฌํ์๋ ์บ์ ๊ธฐ๋ฐ ์๋ฐ ์ฑ๋์ธ
Flush+Reload(๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ณํEvict+Reload)๋ฅผ ์ด๋ค. ์ถ์ธก ์คํ์ด ์บ์์ ๋จ๊ธด ์ํ ์ฐจ์ด๋ฅผ ํ์ด๋ฐ์ผ๋ก ์ญ์ฐํด ๋นํธ๋ฅผ ๋ณต์ํ๋ค. - ํ์ ํ๋์จ์ด(๋
ผ๋ฌธ ์ค์ธก): Intel Ivy BridgeยทHaswellยทSkylake ๊ณ์ด, AMD Ryzen, ๊ทธ๋ฆฌ๊ณ SamsungยทQualcomm์ ARM ๋ชจ๋ฐ์ผ ํ๋ก์ธ์์์ ์ฌํ๋๋ค. ์ฆ ํน์ ์ ์กฐ์ฌ์ ๋ฒ๊ทธ๊ฐ ์๋๋ผ, ์ถ์ธก ์คํ์ ์ฐ๋ ์ฌ์ค์ ๋ชจ๋ ํ๋ ํ๋ก์ธ์์ ์ค๊ณ ํน์ฑ์ด๋ค. ํ
์คํธ์ ์ฐ์ธ i7 Surface Pro 3(i7-4650U)์์๋
if๋ฌธ๊ณผ ์ ๊ทผ๋ถ ์ฌ์ด์ ์ฝ 188๊ฐ ๋ช ๋ น์ ๋ผ์ ๋ฃ์ด๋ ์ถ์ธก ์คํ์ด ์งํ๋ ๋งํผ ์ถ์ธก ์ฐฝ(window)์ด ๊น์๋ค.
ํต์ฌ 1 โ Variant 1 ยท Bounds Check Bypass: ๊ฒฝ๊ณ ๊ฒ์ฌ๊ฐ '์ถ์ธก'์ผ๋ก ํต๊ณผ๋๋ค
- ์์ด๋์ด: ์ฝ๋์ ํํ ๋ฐฉ์ด ํจํด
if (x < array1_size)๋ก ๋ฐฐ์ด ๋ฒ์๋ฅผ ๊ฒ์ฌํ๋ค๊ณ ํ์. ๊ณต๊ฒฉ์๋ ๋จผ์ ๋ถ๊ธฐ ์์ธก๊ธฐ๋ฅผ "์ด ์กฐ๊ฑด์ ํญ์ ์ฐธ"์ด๋ผ๊ณ ํ์ต(์คํ์ต)์ํจ๋ค โ ๊ทธ๋ฆฌ๊ณarray1_size๋ฅผ ์บ์์์ ๋ฐ์ด๋ธ(uncached) ์ํ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋x๋ก ํธ์ถํ๋ค. - ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋: ๊ฒฝ๊ณ ๊ฒ์ฌ๊ฐ ์ถ์ธก ์คํ ๋จ๊ณ์์ ์ฐธ์ผ๋ก ์์ธก๋๋ฏ๋ก, CPU๋
array2[array1[x] * 256]์ ์์ ์คํํ๋ค. ์ด ์ ๊ทผ์ ๋์ค์ ํ๊ธฐ๋์ง๋ง, ๊ณต๊ฒฉ์๊ฐ ์กฐ์ํ ์ธ๋ฑ์ค์ ์์กดํด ํน์ ์ฃผ์๊ฐ ์บ์์ ์ฌ๋ผ๊ฐ๋ค. - ๋ณต์: ์บ์ ์ํ ๋ณํ(๋ก๋ ํ์ด๋ฐ)๋ฅผ ์ฝ์ผ๋ฉด
array1[x]์ ๋ฐ์ดํธ ๊ฐ์ด ๋๋ฌ๋๋ค. ํ ๋ฒ์ ํ ๋ฐ์ดํธ์ฉ, ์ธ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์์น๋ฅผ ์ฝ์ ์ ์๋ค. - ์ ์น๋ช ์ ์ธ๊ฐ: ์ด ํจํด์ ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ๋ ํ๋ฒํ ๊ฒฝ๊ณ ๊ฒ์ฌ ์ฝ๋๋ค. ์์ค ์ฝ๋๋ฅผ ์๋ชป ์ง์๊ฐ ์๋๋ผ, ์ฌ๋ฐ๋ฅธ ์ฝ๋๊ฐ ๋ง์ดํฌ๋ก์ํคํ ์ฒ์์ ์ค์๋ํด์ ๋ซ๋ฆฐ๋ค โ ์ด๊ฒ์ด Spectre๊ฐ "์ํํธ์จ์ด ๋ฒ๊ทธ"๊ฐ ์๋๋ผ "ํ๋์จ์ด-์ํํธ์จ์ด ๊ณ์ฝ์ ๊ท ์ด"์ธ ์ด์ ๋ค.
ํต์ฌ 2 โ Variant 2 ยท Branch Target Injection: ๊ฐ์ ๋ถ๊ธฐ์ ๋ชฉ์ ์ง๋ฅผ ์ค์ผ์ํจ๋ค
- ๋์:
jmp eaxยทjmp [eax]ยทret์ฒ๋ผ ๋ชฉ์ ์ง๊ฐ ํ๋๋ก ์ ํด์ง์ง ์์ ๊ฐ์ ๋ถ๊ธฐ. ๊ฐ์ ๋ถ๊ธฐ์ ๋ชฉ์ ์ง๋ฅผ ์์ธกํ๊ธฐ ์ํด CPU๋ ๋ถ๊ธฐ ๋์ ๋ฒํผ(BTB) ๊ฐ์ ์์ธก ๊ตฌ์กฐ๋ฅผ ์ด๋ค. - ๊ณต๊ฒฉ: ๊ณต๊ฒฉ์๋ ์์ ์ ์ฝ๋๋ฅผ ์คํ์์ผ BTB๋ฅผ "์ค์ผ(poison)"์์ผ, ํผํด์์ ๊ฐ์ ๋ถ๊ธฐ๊ฐ ๊ณต๊ฒฉ์๊ฐ ๊ณ ๋ฅธ ๋ชฉ์ ์ง๋ก ์ถ์ธก ์คํ๋๋๋ก ๋ง๋ ๋ค. ๋ชฉ์ ์ง ์์ธก์ด ์บ์ ๋ฏธ์ค๋ก ์ง์ฐ๋๋ ์ฌ์ด, CPU๋ ํผํด์ ๊ถํ์ผ๋ก ๊ณต๊ฒฉ์์ ๊ฐ์ ฏ์ ์ถ์ธก ์คํํ๋ค.
- ๊ฐ์ ฏ ์ค๊ณ: ์ถ์ธก ์คํ๋ ๊ฐ์ ฏ์ ํผํด์์ ๋ ์ง์คํฐยท๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด ๊ฐ์ ์บ์ ๊ธฐ๋ฐ ์ฑ๋๋ก ํ๋ ค๋ณด๋ธ๋ค โ Variant 1๊ณผ ์ ์ฌํ ์ ์ถ ๊ธฐ๋ฒ์ผ๋ก ๊ท๊ฒฐ๋๋ค.
- ์์: Variant 1์ด "์กฐ๊ฑด ๋ถ๊ธฐ"๋ฅผ ๋ ธ๋ฆฐ๋ค๋ฉด Variant 2๋ "์์ธก ์์ฒด(์์ธก ๊ตฌ์กฐ)"๋ฅผ ๋ ธ๋ฆฐ๋ค. ๋ ๋ณ์ข ์ด ์๋ก ๋ค๋ฅธ ๋ง์ดํฌ๋ก์ํคํ ์ฒ ์์(์กฐ๊ฑด ๋ถ๊ธฐ ์์ธก vs BTB)์ ์ ์ฉํ๊ธฐ ๋๋ฌธ์, ํ์ชฝ๋ง ๋ง๋ ๋จ์ผ ์ํ์ฑ ์ผ๋ก๋ ๋ถ์กฑํ๋ค.
ํต์ฌ 3 โ ์ค์ฆ: ํ๋ก์ธ์ค ๊ฒฝ๊ณ๋, ๋ธ๋ผ์ฐ์ ์๋๋ฐ์ค๋ ๋๋๋ค
- ๋ค์ดํฐ๋ธ ์ฝ๋ โ ํ๋ก์ธ์ค ๊ฒฝ๊ณ ์๋ฐ: ๋น๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ํฌ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ณ , ๊ณต๊ฒฉ์๋ ๊ทธ ํ๋ก์ธ์ค์ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ(๋ด๋ถ ๋น๋ฐ ํฌํจ)์ ์ฝ์ด๋๋ค. ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค ์ฌ์ด์ ๊ฒฉ๋ฆฌ๊ฐ ๋ฌด๋์ง ๊ฒ์ด๋ค.
- JavaScript โ ๋ธ๋ผ์ฐ์ ์๋๋ฐ์ค ์๋ฐ: ๋
ผ๋ฌธ์ Google Chrome์์ ์คํ๋๋ JavaScript ํ๋ก๊ทธ๋จ์ผ๋ก, ์์ ์ด ์คํ๋๋ ๋ธ๋ผ์ฐ์ ํ๋ก์ธ์ค์ ์ฌ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ์ด๋๋ค. ์ฆ ์น ํ์ด์ง ํ๋๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ๋ฅผ ๋ซ์ ์ ์์์ ๋ณด์๋ค โ JIT ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ค์ด๋ธ ์ฝ๋์ ํ์ด๋ฐ ์ฑ๋๋ง์ผ๋ก. (JavaScript ์ธก ์ฐํ ์ฝ๋์๋
TABLE1_STRIDE=4096,TABLE1_BYTES=2^25๊ฐ์ ์์์, JIT์๊ฒ "๋ค์ ์ฐ์ฐ์ด ๋ฒ์ ์"์ด๋ผ๊ณ ๋ฉ๋์ํค๋ ค๋and๋ง์คํฌ๊ฐ ๋ฑ์ฅํ๋ค.) - ํจ์: ๊ฐ์ ํด๋์ค์ ๊ณต๊ฒฉ์ด ์๊ฒฉ์, ์ด์์ฑ ๋์ ์น ์ฝ๋๋ก๋ ๊ฐ๋ฅํ๋ค๋ ๋ป์ด๋ค. ์ด๊ฒ์ด 2018๋
์ด ์ ์ธ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ฌ๊ฐ ํ์ด๋จธ ์ ๋ฐ๋ ์ถ์ยท
SharedArrayBuffer๋นํ์ฑํ ๊ฐ์ ๊ธด๊ธ ์กฐ์น๋ฅผ ํ ์ด์ ๋ค. - ๋ฌด์์ด ๋ฌด๋์ง๋๊ฐ(๋ ผ๋ฌธ ๋ช ์): ์ด์์ฒด์ ์ ํ๋ก์ธ์ค ๋ถ๋ฆฌ, ์ ์ ๋ถ์ ๊ธฐ๋ฐ ๋ฐฉ์ด, ์ปจํ ์ด๋ ๊ฒฉ๋ฆฌ, JIT ์ปดํ์ผ์ ๊ฒฉ๋ฆฌ, ์บ์ ํ์ด๋ฐยท๋ถ์ฑ๋ ๋์์ฑ ๊น์ง โ ์ํํธ์จ์ด ๋ณด์ ๋ฉ์ปค๋์ฆ์ ์ ์ ์์ฒด๊ฐ ์๋ฐ๋๋ค. ๋จ, ์ํ์ ๊ธฐ๋ฐ์ฑ(secrecy)์ ๋ํ ๊ฒ์ด๋ฉฐ ๋ฌด๊ฒฐ์ฑ(integrity) ์นจํด๋ ์๋๋ค.
ํต์ฌ 4 โ ์ Meltdown๋ณด๋ค ํจ์ฌ ๊ณ ์น๊ธฐ ์ด๋ ค์ด๊ฐ
| ๊ตฌ๋ถ | Meltdown (2018-09-07 ํ์ฐจ) | Spectre |
|---|---|---|
| ์ ์ฉ ๋์ | ๋น์์ฐจ ์คํ + ๊ถํ ๊ฒ์ฌ ์ฐํ | ๋ถ๊ธฐ ์์ธก + ์ถ์ธก ์คํ(์กฐ๊ฑดยท๊ฐ์ ๋ถ๊ธฐ) |
| ์ํ ๋์ด๋ | ์๋์ ์ผ๋ก ๋ช ํ (KPTI + ์ค๋ฆฌ์ฝ ์์ ) | ํจ์ฌ ์ด๋ ค์ โ ์ถ์ธก ์คํ์ ์ฑ๋ฅ์ ํต์ฌ |
| ๋ํ ์ํ์ฑ | KPTI(ํ์ด์ง ํ ์ด๋ธ ๊ฒฉ๋ฆฌ) | retpoline(๊ฐ์ ๋ถ๊ธฐ ๊ฒฉ๋ฆฌ), IBRS/IBPB ๋ง์ดํฌ๋ก์ฝ๋, ๋ธ๋ผ์ฐ์ ์ํ |
| ์ํฅ ๋ฒ์ | ์ฃผ๋ก Intel ๊ณ์ด | IntelยทAMDยทARM ์ ๋ฐ (Ryzenยท๋ชจ๋ฐ์ผ ARM ํฌํจ) |
- ๋ ผ๋ฌธ์ ๊ฒฐ๋ก : "์ฆํฅ์ ์ธ ํ๋ก์ธ์๋ณ ์ํ์ฑ ์ ์ผ๋ถ ๊ฐ๋ฅํ์ง๋ง, ๊ทผ๋ณธ์ ํด๊ฒฐ์ ํ๋ก์ธ์ ์ค๊ณ์ ์์ ๊ณผ ISA(๋ช ๋ น์ด ์งํฉ) ์ ๋ฐ์ดํธ๋ฅผ ์๊ตฌํ๋ค" โ ์ฆ ํ๋์จ์ด ์ค๊ณ์์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์๊ฒ ๊ณตํต์ ์ดํด๋ฅผ ์ฃผ๋ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ์ผ ํ๋ค๊ณ ๋ชป ๋ฐ์๋ค.
- ์ค์ ํ์ฅ: ๊ณต๊ฐ ์งํ OS ์ปค๋(๋ฆฌ๋
์คยท์๋์ฐยทmacOS), ํ์ดํผ๋ฐ์ด์ , ๋ธ๋ผ์ฐ์ , ์ปดํ์ผ๋ฌ(์:
retpoline์ฝ๋ ์์ฑ)๊ฐ ์ผ์ ํ ํจ์น๋๊ณ , ์๋น์๋ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ํด์ผ ํ๋ค. ์ดํ ๋ช ๋ ๊ฐ ์์ญ ๊ฐ์ ํ์ ๋ณ์ข (Variant 3/4, Speculative Store Bypass, L1TF, MDS, ZombieLoad ๋ฑ)์ด "Spectre ๊ณ๋ณด"๋ก ์ด์ด์ก๋ค. - ์ด๋ฆ์ ์ ๋: ์ ์ Paul Kocher๊ฐ ์ ์์ค ๋ณธ๋์ ๋ฒ์ฃ ์กฐ์ง 'SPECTRE'์์ ์ด๋ฆ์ ๋๋ค(์ถ์ธก = speculation, ์ ๋ น = ghost). ํ์ ๋ ผ๋ฌธ Meltdown์ ์ด๋ฆ์ Meltdown ํ์ด ๋ฐ๋ก ๋ถ์๋ค.
์์ฌ์ โ "์ฌ๋ฐ๋ฅธ ์ํํธ์จ์ด"๊ฐ "ํ๋ฆฐ ํ๋์จ์ด"์์ ์์ ํ์ง ์์ ์ ์๋ค
- ์ ๋ขฐ ๊ฒฝ๊ณ๋ ์ํํธ์จ์ด ์์๋ง ์์ง ์๋ค: Spectre๋ ์ํคํ ์ฒ(ISA) ์์ค์์๋ ์๋ฒฝํ ์ฝ๋๊ฐ ๋ง์ดํฌ๋ก์ํคํ ์ฒ ๊ตฌํ์์ ๊ฒฉ๋ฆฌ๋ฅผ ์๋ฐํจ์ ๋ณด์๋ค. "๊ฒฉ๋ฆฌ = ์ํํธ์จ์ด ์ถ์ํ"๋ผ๋ ๊ฐ์ ์ ํ๋์จ์ด๊ฐ ๋ณด์ฅํ์ง ์๋๋ค๋ฉด, ๊ทธ ์์ ๋ชจ๋ ๋ณด์ ์์ฑ๋ ์กฐ๊ฑด๋ถ๋ค.
- ์ฑ๋ฅ๊ณผ ๋ณด์์ ์๊ตฌ์ ๊ธด์ฅ: ์ถ์ธก ์คํ์ ๋๋ฉด Spectre๋ ์ฌ๋ผ์ง์ง๋ง ํ๋ก์ธ์ ์ฑ๋ฅ์ด ๋ฌด๋์ง๋ค. ๊ทธ๋์ ๋์์ "์์ ์ ๊ฑฐ"๊ฐ ์๋๋ผ "์ํ์ ์ฐ์"์ด ๋๋ค โ ํ๋ ๋ณด์์ด ์ค๊ณ ์์ฒด์ ํธ๋ ์ด๋์คํ๋ฅผ ๋ค๋ค์ผ ํ๋ ๋ํ ์ฌ๋ก๋ค.
- ๋ถ์ฑ๋ ์ฐ๊ตฌ์ ํ์ฅ: DPA๊ฐ "์ ๋ ฅ"์, Rowhammer๊ฐ "DRAM ๋ฌผ๋ฆฌ"๋ฅผ ๊ณต๊ฒฉ๋ฉด์ผ๋ก ๋ง๋ค์๋ฏ(2026-09-11 ํ์ฐจ), Spectre๋ "์ถ์ธก ์คํ"์ด๋ผ๋ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ๋ฒ ์์ฒด๋ฅผ ๊ณต๊ฒฉ๋ฉด์ผ๋ก ๋ง๋ค์๋ค. ์ดํ ์ฌ์ด๋์ฑ๋ ์ฐ๊ตฌ์ ํ์ค ๋ฏธ์ธ์ํคํ ์ฒ ํ์ ์ด ๋์๋ค.
- ์ํ์ ์ ์งํจ: retpolineยทIBRS ๊ฐ์ ์ํํธ์จ์ด/๋ง์ดํฌ๋ก์ฝ๋ ์ํ์ฑ ์ ํน์ ๋ณ์ข ยทํจํด์ ๋ํ ๋ฐฉ์ด์ด๋ฉฐ, ๋ ผ๋ฌธ ์ค์ค๋ก "sound solution์ ํ๋์จ์ด ์์ ์ ์๊ตฌํ๋ค"๊ณ ์ธ์ ํ๋ค. ์ํ์ฑ ์ด ์๋ค๋ ๊ฒ๊ณผ ์์ ํ๋ค๋ ๊ฒ์ ๋ค๋ฅด๋ค.
ํ๊ณ ยท ์ ์์ ยท ์์
- ๊ธฐ๋ฐ์ฑ vs ๋ฌด๊ฒฐ์ฑ: Spectre๋ ์ ๋ณด ์ ์ถ(๊ธฐ๋ฐ์ฑ)์ ๋ ธ๋ฆฐ๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ณ์กฐํ๊ฑฐ๋ ์คํ์ ์กฐ์ํ๋ ๋ฌด๊ฒฐ์ฑ ์นจํด๋ ์๋๋ค โ ์ํ ๋ชจ๋ธ์ ์ ํํ ๊ตฌ๋ถํด์ผ ํ๋ค.
- ๊ณต๊ฒฉ ์ ๋ฐ๋: ์บ์ ํ์ด๋ฐ์ผ๋ก ๋นํธ๋ฅผ ๋ณต์ํ๋ ๊ตฌ์กฐ๋ผ ์ฑ๋์ ์ ๋ขฐ๋ยท๋์ญํญ์ ์์กดํ๋ค. ๋จ๋ฐ์ฑ ์ต์คํ๋ก์๋ณด๋ค๋ ๋ฐ๋ณต ์ธก์ ์ ํตํ ํต๊ณ์ ๋ณต์์ ๊ฐํ๋ค.
- ์ํ์ฑ ์ ๋น์ฉ: ์ถ์ธก ์ฐฝ์ ์ค์ด๊ฑฐ๋ ๊ฒฉ๋ฆฌ(serialization)๋ฅผ ๋ฃ๋ ์ํ์ฑ ์ ์ฑ๋ฅ์ ์ง๊ฒฐ๋๋ฉฐ, ๋ชจ๋ ๋ง์ดํฌ๋ก์ํคํ ์ฒยท๋ชจ๋ ์ํํธ์จ์ด ์คํ(์ปค๋ยทํ์ดํผ๋ฐ์ด์ ยท๋ธ๋ผ์ฐ์ ยท์ปดํ์ผ๋ฌ)์ ๊ฑธ์ณ ์กฐ์จ์ด ํ์ํ๋ค.
- ์์: Spectre๋ ์ ๋ณด๋ณด์ ๊ต๊ณผ์๋ฅผ ๋ค์ ์ด ๋ ผ๋ฌธ์ด๋ค. "์ถ์ธก ์คํ์ ๊ด์ฐฐ ๋ถ๊ฐ๋ฅํ๋ค"๋ ํต๋ ์ ๊นจ๊ณ , ํ๋ก์ธ์คยท์ปค๋ยท์๋๋ฐ์ค ๊ฒฉ๋ฆฌ๋ฅผ ํ๋์จ์ด ์์ค์์ ๋ฌด๋๋จ๋ฆด ์ ์์์ ์ค์ฆํ๋ค. ์ดํ CPU ๋ฒค๋๋ค์ด ์ค๊ณ ๋จ๊ณ๋ถํฐ ๋ถ์ฑ๋์ ๊ณ ๋ คํ๊ณ , ์ํ์ฑ ์ด ISAยท๋ง์ดํฌ๋ก์ฝ๋์ ์ผ๋ถ๊ฐ ๋ ๊ฒ์ ์ด ๋ ผ๋ฌธ์ด ๋ง๋ ์ ํ์ ์ง์ ์ ๊ฒฐ๊ณผ๋ค.
์ถ์ฒ
- ๋ ผ๋ฌธ ์๋ฌธ: Paul Kocher, Daniel Genkin, Daniel Gruss, Werner Haas, Mike Hamburg, Moritz Lipp, Stefan Mangard, Thomas Prescher, Michael Schwarz, Yuval Yarom, Spectre Attacks: Exploiting Speculative Execution, arXiv:1801.01203v1 [cs.CR], 2018-01-03 (IEEE S&P 2019 ์ ์ ๊ฒ์ฌ) โ arXiv abs ยท PDF ยท HTML ์ ๋ฌธ(ar5iv)
- ํ๋ก์ ํธ ํ์ด์ง: spectreattack.com (SpectreยทMeltdown ๊ณต์ ์๋ฃยทFAQยท์ํ์ฑ ๋ชฉ๋ก)
- CVE:
CVE-2017-5753(Variant 1, Bounds Check Bypass) ยทCVE-2017-5715(Variant 2, Branch Target Injection) - ํจ๊ป ์ฝ๊ธฐ:
- 2026-09-07 Meltdown: Reading Kernel Memory from User Space โ ๊ฐ์ ๋ ๊ณต๊ฐ๋ ์๋งค ๋ ผ๋ฌธ. ๋น์์ฐจ ์คํ์ผ๋ก ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ์ ํ๋์จ์ด ์ทจ์ฝ์ (Intel ์ค์ฌ). Spectre์ ๋๋นํด ์ฝ์ผ๋ฉด ๋ ๊ณ๋ณด์ ์ฐจ์ด๊ฐ ์ ๋ช ํ๋ค.
- 2026-10-07 Differential Power Analysis โ ๋ถ์ฑ๋ ๊ณต๊ฒฉ์ ์ํ(KocherยทJaffeยทJun, CRYPTO 1999). Spectre๋ "์คํ๋์ง ์์ ์ฝ๋"์ ๋ถ์์ฉ๊น์ง ๋ถ์ฑ๋๋ก ํ์ฅํ๋ค.
- 2026-09-11 Rowhammer (ISCA 2014) โ DRAM ๋ฌผ๋ฆฌ ๊ณ์ธต์ ๊ณต๊ฒฉ๋ฉด์ผ๋ก ๋ง๋ ํ๋์จ์ด ์ทจ์ฝ์ ์ ๋ ๋ค๋ฅธ ์ถ.
- 2026-09-09 The Geometry of Innocent Flesh on the Bone (ROP) โ Spectre๊ฐ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ๋์ด์จ return-oriented programming์ ์ํ.
- 2026-09-23 Cold Boot Attacks โ ์ ์์ ๋ด๋ ค๋ ๋จ๋ DRAM์ ๊ธฐ์ต. ๋ฌผ๋ฆฌยท๋ฏธ์ธ์ํคํ ์ฒ ๊ฒฝ๊ณ๊ฐ ๊ฒฉ๋ฆฌ๋ฅผ ์ํํ๋ ๋ ํ๋์ ๊ณ ์ .