Intel, AMD, ARM ๋ฐ IBM ํ”„๋กœ์„ธ์„œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ƒˆ๋กœ์šด Foreshadow ๊ณต๊ฒฉ ๋ณ€์ข…

๊ทธ๋ผ์ธ  ๊ณต๊ณผ๋Œ€ํ•™(์˜ค์ŠคํŠธ๋ฆฌ์•„)๊ณผ ํ—ฌ๋ฆ„ํ™€์ธ  ์ •๋ณด ๋ณด์•ˆ ์„ผํ„ฐ(CISPA)์˜ ์—ฐ๊ตฌ์› ๊ทธ๋ฃน์€ ๋…ธ์ถœ๋œ (PDF) ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ฒกํ„ฐ ์˜ˆ๊ณ  (L1TF)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Intel SGX ์—”ํด๋ ˆ์ด๋ธŒ์˜ ๋ฉ”๋ชจ๋ฆฌ, SMM(์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋ชจ๋“œ), OS ์ปค๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋ฐ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2018๋…„์— ์ œ์•ˆ๋œ ์›๋ž˜ ๊ณต๊ฒฉ๊ณผ ๋‹ฌ๋ฆฌ ์˜ˆ๊ณ  ์ƒˆ๋กœ์šด ๋ณ€์ข…์€ Intel ํ”„๋กœ์„ธ์„œ์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์œผ๋ฉฐ ARM, IBM ๋ฐ AMD์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ œ์กฐ์—…์ฒด์˜ CPU์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ๋กœ์šด ๋ณ€์ข…์€ ๊ณ ์„ฑ๋Šฅ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ์›น์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Foreshadow ๊ณต๊ฒฉ์€ ์˜ˆ์™ธ(ํ„ฐ๋ฏธ๋„ ํŽ˜์ด์ง€ ์˜ค๋ฅ˜)๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ๋•Œ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ถ”์ธก์— ๋”ฐ๋ผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  L1 ์บ์‹œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ธก์  ์•ก์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— ์ˆ˜ํ–‰๋˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํ•ญ๋ชฉ(PTE)์˜ ์ƒํƒœ์™€ ๊ด€๊ณ„์—†์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€์™€ ๊ฐ€๋…์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์ „์—. ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์šฉ์„ฑ ํ™•์ธ์ด ์™„๋ฃŒ๋œ ํ›„ PTE์— Present ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์œผ๋ฉด ์ž‘์—…์€ ํ๊ธฐ๋˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œ์— ๋‚จ์•„ ์žˆ์œผ๋ฉฐ ์‚ฌ์ด๋“œ ์ฑ„๋„์„ ํ†ตํ•ด ์บ์‹œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•(์•ก์„ธ์Šค ์‹œ๊ฐ„ ๋ณ€ํ™” ๋ถ„์„)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ์™€ ์บ์‹œ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ).

์—ฐ๊ตฌ์›๋“ค์€ Foreshadow์— ๋Œ€ํ•œ ๊ธฐ์กด ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์ด ํšจ๊ณผ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ํ•ด์„์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์ 
Foreshadow๋Š” ์ด์ „์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผ๋˜์—ˆ๋˜ ์ปค๋„ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๊ด€๊ณ„์—†์ด ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์—ฐ๊ตฌ์›๋“ค์€ Spectre-v2 ๋ณดํ˜ธ๋งŒ ๋น„ํ™œ์„ฑํ™”๋œ ์ƒˆ ์ปค๋„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  Foreshadow ๋ณดํ˜ธ ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋œ ๋น„๊ต์  ์˜ค๋ž˜๋œ ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ Foreshadow ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์‹œ์—ฐํ–ˆ์Šต๋‹ˆ๋‹ค. Linux ์ปค๋„ ์˜ต์…˜ nospectre_v2).

๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค ์˜ˆ์•• ํšจ๊ณผ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋ฆฌํŽ˜์น˜ ๋ช…๋ น์ด๋‚˜ ํ•˜๋“œ์›จ์–ด ํšจ๊ณผ์™€ ๊ด€๋ จ์ด ์—†์Œ
๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ์ค‘์— ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค์ง€๋งŒ ์ปค๋„์—์„œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ถ”๋ก ์  ์—ญ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์˜ ์›์ธ์— ๋Œ€ํ•œ ์ด๋Ÿฌํ•œ ์ž˜๋ชป๋œ ํ•ด์„์œผ๋กœ ์ธํ•ด ์ฒ˜์Œ์—๋Š” Foreshadow์˜ ๋ฐ์ดํ„ฐ ๋ˆ„์ถœ์ด L1 ์บ์‹œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด ์ปค๋„์˜ ํŠน์ • ์ฝ”๋“œ ์กฐ๊ฐ(ํ”„๋ฆฌํŽ˜์น˜ ๊ฐ€์ ฏ)์ด ์žˆ์œผ๋ฉด L1 ์บ์‹œ ์™ธ๋ถ€์˜ ๋ฐ์ดํ„ฐ ๋ˆ„์ถœ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐ€์ •์ด ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด L3 ์บ์‹œ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‹๋ณ„๋œ ๊ธฐ๋Šฅ์€ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  CPU ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ์ฃผ์†Œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ์„ ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค. ์‹œ์—ฐ์œผ๋กœ ์—ฐ๊ตฌ์›๋“ค์€ ํ™•์ธ๋œ ํšจ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Intel Core i10-7U CPU๊ฐ€ ์žฅ์ฐฉ๋œ ์‹œ์Šคํ…œ์—์„œ ์ดˆ๋‹น ์•ฝ 6500๋น„ํŠธ์˜ ์„ฑ๋Šฅ์œผ๋กœ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. Intel SGX ์—”ํด๋ ˆ์ด๋ธŒ์—์„œ ๋ ˆ์ง€์Šคํ„ฐ ์ฝ˜ํ…์ธ ๊ฐ€ ์œ ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ๋„ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค(32๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก๋œ 64๋น„ํŠธ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฐ 15๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค). ์ผ๋ถ€ ์œ ํ˜•์˜ ๊ณต๊ฒฉ์€ JavaScript ๋ฐ WebAssembly์—์„œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JavaScript ๋ณ€์ˆ˜์˜ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฐ’์œผ๋กœ 64๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

L3 ์บ์‹œ๋ฅผ ํ†ตํ•œ Foreshadow ๊ณต๊ฒฉ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฆฌํŠธํด๋ฆฐ ํŒจ์น˜์„ธํŠธ์— ๊ตฌํ˜„๋œ Spectre-BTB(Branch Target Buffer) ๋ณดํ˜ธ ๋ฐฉ์‹์ด ํšจ๊ณผ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์—ฐ๊ตฌ์›๋“ค์€ CPU ํˆฌ๊ธฐ ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ ์— ๋Œ€ํ•ด ์ด๋ฏธ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ƒˆ๋กœ์šด CPU๊ฐ€ ์žฅ์ฐฉ๋œ ์‹œ์Šคํ…œ์—์„œ๋„ ๋ฆฌํŠธํด๋ฆฐ์„ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ๋กœ ๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— Intel ๋‹ด๋‹น์ž๋Š” Foreshadow์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ณดํ˜ธ ์กฐ์น˜๋ฅผ ํ”„๋กœ์„ธ์„œ์— ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ด ์—†์œผ๋ฉฐ Spectre V2 ๋ฐ L1TF(Foreshadow) ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๋ฐํ˜”์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€