--- id: P-REINFORCE-AUTO-8FCA7F category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Spectre and Meltdown" --- # [[Spectre and Meltdown|Spectre and Meltdown]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Spectre์™€ Meltdown์€ ํ˜„๋Œ€ ํ”„๋กœ์„ธ์„œ์˜ ํˆฌ๊ธฐ์  ์‹คํ–‰(speculative execution) ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜์—ฌ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ณด์•ˆ ๊ฒฐํ•จ์ด๋‹ค [1, 2]. ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” ์บ์‹œ ์ ์ค‘๋ฅ ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด์˜ ๋ฏธ์„ธํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ์ธก์ •ํ•˜๋Š” ํƒ€์ด๋ฐ ๊ณต๊ฒฉ์„ ํ†ตํ•ด ์ด ์ทจ์•ฝ์ ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค [3-6]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ € ์—”์ง„๋“ค์€ ํƒ€์ด๋จธ์˜ ์ •๋ฐ€๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ๋„์ž…ํ•˜์˜€์œผ๋ฉฐ, ์ด๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ GPU ๋ฐ WebGL ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ์‚ฐ์˜ ๋ฏธ์„ธ ์ง€์—ฐ(micro-latency)์„ ์†Œํญ ์ฆ๊ฐ€์‹œ์ผฐ๋‹ค [7-9]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **ํˆฌ๊ธฐ์  ์‹คํ–‰๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํƒ€์ด๋ฐ ์•…์šฉ:** Spectre์™€ Meltdown์€ CPU๊ฐ€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ถ„๊ธฐ๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ๋ฏธ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” 'ํˆฌ๊ธฐ์  ์‹คํ–‰'์„ ์•…์šฉํ•œ๋‹ค [2]. CPU๋Š” ์˜ˆ์ธก์ด ํ‹€๋ ธ์„ ๊ฒฝ์šฐ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋กค๋ฐฑํ•˜์ง€๋งŒ, ์ด ๊ณผ์ •์—์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ L1 ์บ์‹œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•œ ํ”์ ์€ ๊ทธ๋Œ€๋กœ ๋‚จ๊ฒŒ ๋œ๋‹ค [2, 5]. ๊ณต๊ฒฉ์ž๋Š” ๊ณ ์ •๋ฐ€ ํƒ€์ด๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ๋ฐฐ์—ด(์˜ˆ: `otherArray`๊ณผ `otherArray[10]`)์— ๋Œ€ํ•œ ์ ‘๊ทผ ์†๋„ ์ฐจ์ด๋ฅผ ์ธก์ •ํ•จ์œผ๋กœ์จ ์บ์‹œ์— ๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ก ํ•˜๋Š” ํƒ€์ด๋ฐ ๊ธฐ๋ฐ˜ ์ •๋ณด ์œ ์ถœ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค [5, 6]. WebKit๊ณผ ๊ฐ™์€ JavaScript ์—”์ง„์—์„œ ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋  ๊ฒฝ์šฐ, ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ(bounds check)๋‚˜ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์ž„์˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ์„ ์œ„ํ—˜์ด ์žˆ๋‹ค [11, 12]. - **๋ธŒ๋ผ์šฐ์ €์˜ ๋ณด์•ˆ ์™„ํ™” ์กฐ์น˜ (ํƒ€์ด๋จธ ์ •๋ฐ€๋„ ๊ฐ์†Œ ๋ฐ ์ง€ํ„ฐ ๋„์ž…):** ๊ณ ํ•ด์ƒ๋„ ํƒ€์ด๋ฐ ๊ณต๊ฒฉ์„ ๋ง‰๊ธฐ ์œ„ํ•ด WebKit๊ณผ Blink ๋“ฑ์˜ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์€ `performance.now()`์˜ ์ •๋ฐ€๋„๋ฅผ 1ms ๋˜๋Š” 100 ๋งˆ์ดํฌ๋กœ์ดˆ ์ˆ˜์ค€์œผ๋กœ ๋Œ€ํญ ๋‚ฎ์ถ”๊ณ , ๋ฐ˜ํ™˜๋˜๋Š” ์‹œ๊ฐ„ ๊ฐ’์— ๋ฌด์ž‘์œ„ ๋ณ€๋™์„ฑ์ธ '์ง€ํ„ฐ(jitter)'๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค [7, 9, 13]. ๋˜ํ•œ, ๊ณ ํ•ด์ƒ๋„ ํƒ€์ด๋จธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” `SharedArrayBuffer`๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์˜€๋‹ค [9]. WebGPU์˜ `timestamp-query` ๊ธฐ๋Šฅ ์—ญ์‹œ ํƒ€์ด๋ฐ ๊ณต๊ฒฉ ์šฐ๋ ค๋กœ ์ธํ•ด ์–‘์žํ™”(quantization)๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฒฉ๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ์—์„œ๋„ ํ•ด์ƒ๋„๋ฅผ 100 ๋งˆ์ดํฌ๋กœ์ดˆ๋กœ ์ œํ•œํ•˜์˜€๋‹ค [14-16]. ๊ณผ๊ฑฐ WebGL์—์„œ๋Š” `EXT_disjoint_timer_query` ํ™•์žฅ์„ ํ†ตํ•ด ํ”„๋ ˆ์ž„ ์ง€์—ฐ์„ ์ •๋ฐ€ํ•˜๊ฒŒ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜, ์ด ์—ญ์‹œ ๋™์ผํ•œ ๋ณด์•ˆ ์ด์œ ๋กœ ์ธํ•ด ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋“ค์—์„œ ๋น„ํ™œ์„ฑํ™”๋˜๊ฑฐ๋‚˜ ์ œํ•œ๋˜์—ˆ๋‹ค [3, 4]. - **๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ(Branchless Security Checks) ๋„์ž…:** ๋ธŒ๋ผ์šฐ์ €๋Š” ํƒ€์ด๋จธ ์กฐ์ž‘ ์™ธ์—๋„ ํˆฌ๊ธฐ์  ์‹คํ–‰ ์ž์ฒด์˜ ๋ถ€์ž‘์šฉ์„ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น(Index Masking)๊ณผ ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹(Pointer Poisoning) ๊ฐ™์€ ๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ ๊ธฐ๋ฒ•์„ ๋„์ž…ํ–ˆ๋‹ค [17, 18]. ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น์€ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ํˆฌ๊ธฐ์  ์‹คํ–‰ ์ค‘์—๋„ ๋ฐฐ์—ด ์ธ๋ฑ์Šค๊ฐ€ ํ•ญ์ƒ ์œ ํšจํ•œ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋„๋ก ๊ฐ•์ œํ•œ๋‹ค [17, 19]. ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹์€ ํฌ์ธํ„ฐ์— ์ž„์˜์˜ ๊ฐ’์„ XOR ์—ฐ์‚ฐํ•˜์—ฌ, ์ž˜๋ชป๋œ ํˆฌ๊ธฐ์  ๋ถ„๊ธฐ๊ฐ€ ์ผ์–ด๋‚  ๊ฒฝ์šฐ ๋งคํ•‘๋˜์ง€ ์•Š์€ ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์œ ๋„ํ•œ๋‹ค [17, 20]. - **๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ฏธ์„ธ ์ง€์—ฐ(Micro-latency)์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ:** ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ์™„ํ™” ์กฐ์น˜๋“ค์€ ์›น ํƒ€์ด๋ฐ ๋ณด์•ˆ์„ ์œ„ํ•ด ํ•„์ˆ˜์ ์ด์ง€๋งŒ, JavaScript ์—”์ง„๊ณผ JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ์Šค ์‹คํ–‰ ์ค‘์š” ๊ฒฝ๋กœ(critical path)์— ์ถ”๊ฐ€์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค [8]. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๋Š” ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์˜ ๊ธฐ๋ณธ ๋ฏธ์„ธ ์ง€์—ฐ(base micro-latency)์„ ์•ฝ๊ฐ„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์›์ธ์ด ๋œ๋‹ค [8]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[EXT_disjoint_timer_query|EXT_disjoint_timer_query]], [[Timestamp Queries Quantization|Timestamp Queries Quantization]], [[Branchless Security Checks|Branchless Security Checks]] - **Projects/Contexts:** [[WebKit Security Mitigations|WebKit Security Mitigations]], [[WebGPU _ WebGL Timing API Security|WebGPU / WebGL Timing API Security]] - **Contradictions/Notes:** ์†Œ์Šค์—๋Š” Spectre ๋ฐ Meltdown ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๋„์ž…๋œ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์˜ ๋ณด์•ˆ ์กฐ์น˜(ํƒ€์ด๋จธ ์ •๋ฐ€๋„ ํ•˜ํ–ฅ, ๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ ์ถ”๊ฐ€ ๋“ฑ)๊ฐ€ ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ „๋ฐ˜์ ์ธ ๋ฏธ์„ธ ์ง€์—ฐ์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋‚˜ [8], ๋ฃจํŠธ ์ฃผ์ œ์—์„œ ๋ช…์‹œํ•œ '๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์ ๋ณ„' ๋ฏธ์„ธ ์ง€์—ฐ์˜ ๋ณ€ํ™”๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ธก์ •ํ•œ ๊ตฌ์ฒด์ ์ธ ์‹คํ—˜ ์‚ฌ๋ก€๋‚˜ ์ˆ˜์น˜์— ๋Œ€ํ•ด์„œ๋Š” ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Spectre and Meltdown.md ---