--- id: P-REINFORCE-AUTO-78AFAF category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - WebKit Security Mitigations" --- # [[WebKit Security Mitigations|WebKit Security Mitigations]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > WebKit Security Mitigations๋Š” Spectre ๋ฐ Meltdown๊ณผ ๊ฐ™์€ CPU ์ถ”์ธก ์‹คํ–‰(Speculative Execution) ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด WebKit ์—”์ง„์— ๋„์ž…๋œ ๋ณด์•ˆ ๋ฐฉ์–ด ์ „๋žต์ž…๋‹ˆ๋‹ค [1], [2]. WebKit์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด WebKit์€ ํƒ€์ด๋จธ ์ •๋ฐ€๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋ถ„๊ธฐ ์—†๋Š”(Branchless) ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ๋„์ž…ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐฉ์–ด ๊ณ„์ธต์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค [1], [3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **Spectre ๋ฐ Meltdown์˜ ์œ„ํ˜‘๊ณผ ์˜ํ–ฅ:** ์ตœ์‹  CPU๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ถ„๊ธฐ ์˜ˆ์ธก(Branch Prediction) ๋ฐ ์ถ”์ธก ์‹คํ–‰(Speculative Execution)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [4], [2]. Spectre ๊ณต๊ฒฉ์€ ์ด๋Ÿฌํ•œ ์ถ”์ธก ์‹คํ–‰์„ ์กฐ์ž‘ํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ๋ถ„๊ธฐ๋ฅผ ๊ฐ•์ œ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , CPU ์บ์‹œ(L1)์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ํƒ€์ด๋ฐ ์ฐจ์ด๋ฅผ ์ด์šฉํ•ด ๋ฏผ๊ฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ์œ ์ถœํ•ฉ๋‹ˆ๋‹ค [5], [6]. WebKit์€ ๊ธฐ์กด์— ๋ถ„๊ธฐ(Branch) ๋ช…๋ น์— ์˜์กดํ•˜์—ฌ JavaScript ๋ฐ WebAssembly์˜ ๋ณด์•ˆ์„ ์ ์šฉํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์—, Spectre ์ทจ์•ฝ์  ํ•˜์—์„œ๋Š” ๊ธฐ์กด ๋ณด์•ˆ ๊ฒ€์‚ฌ๊ฐ€ ๋ฌด๋ ฅํ™”๋ฉ๋‹ˆ๋‹ค [7]. ๋˜ํ•œ, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” Meltdown ๊ณต๊ฒฉ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋จผ์ € Spectre๋ฅผ ์ด์šฉํ•ด WebKit์˜ ๋ณด์•ˆ ์†์„ฑ์„ ์šฐํšŒํ•ด์•ผ ํ•˜๋ฏ€๋กœ, Spectre๋ฅผ ์™„ํ™”ํ•˜๋Š” ๊ฒƒ์ด WebKit์„ ํ†ตํ•œ Meltdown ๊ณต๊ฒฉ์„ ์ฐจ๋‹จํ•˜๋Š” ํ•ต์‹ฌ์ด ๋ฉ๋‹ˆ๋‹ค [7], [8]. * **ํƒ€์ด๋จธ ์ •๋ฐ€๋„ ๊ฐ์†Œ (Reducing Timer Precision):** Spectre ๊ณต๊ฒฉ์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์†๋„ ์ฐจ์ด๋ฅผ ๋ฏธ์„ธํ•˜๊ฒŒ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์ •๋ฐ€ ํƒ€์ด๋ฐ ๊ธฐ์ˆ ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [6]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด WebKit์€ `performance.now`๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ํƒ€์ด๋จธ์˜ ์ •๋ฐ€๋„๋ฅผ 1ms๋กœ ๋Œ€ํญ ๋‚ฎ์ถ”์—ˆ์Šต๋‹ˆ๋‹ค [9]. ์ถ”๊ฐ€๋กœ, ๊ณ ํ•ด์ƒ๋„ ํƒ€์ด๋จธ๋ฅผ ์šฐํšŒ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” `SharedArrayBuffer` ๊ธฐ๋Šฅ ์ž์ฒด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ํƒ€์ด๋ฐ ๊ธฐ๋ฐ˜ ์ •๋ณด ์œ ์ถœ์„ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค [9]. * **๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ (Branchless Security Checks):** ๊ณต๊ฒฉ์ž๊ฐ€ ์ถ”์ธก ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ ๋ถ„๊ธฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ์— ๋”ฐ๋ผ, WebKit์€ ๋ถ„๊ธฐ ๋ช…๋ น์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ƒˆ๋กœ์šด ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ฐฉ์‹์„ ๋„์ž…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค [9]. * **์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น (Index Masking):** ๋ฐฐ์—ด์˜ ๊ธธ์ด์— ๋งž์ถ˜ ๋น„ํŠธ ๋งˆ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ์•ˆ์ „ํ•œ ๋ฒ”์œ„ ๋‚ด๋กœ ๊ฐ•์ œํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [10]. ์ตœ์‹  CPU๋Š” ๋น„ํŠธ ๋งˆ์Šคํ‚น ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”์ธก ์‹คํ–‰์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, Spectre ์ƒํ™ฉ์—์„œ๋„ ์ž„์˜์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์•„์›ƒ์˜ค๋ธŒ๋ฐ”์šด๋“œ(Out-of-Bounds) ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [10]. ์ด ๊ธฐ๋ฒ•์€ Typed ๋ฐฐ์—ด, WebAssembly ๋ฉ”๋ชจ๋ฆฌ, ๋ฌธ์ž์—ด, ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ JavaScript ๋ฐฐ์—ด ๋“ฑ์— ํญ๋„“๊ฒŒ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [10]. * **ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹ (Pointer Poisoning):** ํฌ์ธํ„ฐ ๊ฐ’์— ๋ณต์› ๊ฐ€๋Šฅํ•œ ์ˆ˜ํ•™์  ์—ฐ์‚ฐ(XOR)์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํฌ์ธํ„ฐ๋ฅผ '์˜ค์—ผ(Poisoning)'์‹œํ‚ค๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [11]. ์˜ฌ๋ฐ”๋ฅธ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜์—ฌ ์ •ํ™•ํ•œ ๊ฐ’์œผ๋กœ ํฌ์ด์ฆˆ๋‹์„ ํ•ด์ œ(Unpoison)ํ•˜์ง€ ์•Š์œผ๋ฉด ๋งคํ•‘๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜์–ด ์ ‘๊ทผ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค [11]. ์ด ๋ฐฉ์‹์€ ๋ถ„๊ธฐ ์—†๋Š” ํƒ€์ž… ๊ฒ€์‚ฌ(Type Check)๋กœ ์ž‘๋™ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํƒ€์ž… ํ˜ผ๋™(Type Confusion)์„ ํ†ตํ•œ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰(RCE) ๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•˜๋Š” ๋ฐ๋„ ์œ ์šฉํ•œ ๋ฐฉ์–ด ์ˆ˜๋‹จ์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [12], [13]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Spectre|Spectre]], [[Meltdown|Meltdown]], [[Speculative Execution|Speculative Execution]], [[Branch Prediction|Branch Prediction]] - **Projects/Contexts:** [[JavaScriptCore|JavaScriptCore]], [[WebAssembly|WebAssembly]] - **Contradictions/Notes:** ์ œ๊ณต๋œ ์†Œ์Šค ๋‚ด์—์„œ ์ƒ์ถฉํ•˜๋Š” ์ฃผ์žฅ์ด๋‚˜ ๋ชจ์ˆœ๋˜๋Š” ์ •๋ณด๋Š” ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/WebKit Security Mitigations.md ---