--- id: [[P-Reinforce|P-Reinforce]]-AUTO-84FEA9 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" --- # [[WebKit|WebKit]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > WebKit์€ ์ตœ์‹  ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์„œ์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” [[JavaScript|JavaScript]] ๋ฐ WebAssembly ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์›น ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์ž…๋‹ˆ๋‹ค [1]. ๊ธฐ์กด์—๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ์˜ ์ž‘์—…์„ ์ œ์–ดํ•˜๊ณ  ๋ณด์•ˆ ์†์„ฑ์„ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„๊ธฐ(branch) ๋ช…๋ น์— ํฌ๊ฒŒ ์˜์กดํ–ˆ์Šต๋‹ˆ๋‹ค [2]. ๊ทธ๋Ÿฌ๋‚˜ [[Spectre|Spectre]]์™€ Meltdown ๊ฐ™์€ ํ”„๋กœ์„ธ์„œ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด์„œ ๊ธฐ์กด์˜ ๋ถ„๊ธฐ ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ๊ฒ€์‚ฌ๊ฐ€ ๋ฌด๋ ฅํ™”๋˜์—ˆ๊ณ , ์ด์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ์–ด ์ฒด๊ณ„์˜ ๋Œ€๋Œ€์ ์ธ ๊ฐœํŽธ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [1, 2]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋ณด์•ˆ ์ทจ์•ฝ์  ๋…ธ์ถœ (Spectre ๋ฐ Meltdown):** WebKit์˜ JavaScript ์—”์ง„์ธ [[JavaScriptCore|JavaScriptCore]]๋Š” ๋ณธ๋ž˜ ์•ˆ์ „ํ•œ ์–ธ์–ด ๊ฐ€์ƒ ๋จธ์‹ (VM)์œผ๋กœ ๊ธฐ๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3]. ํ•˜์ง€๋งŒ Spectre ์ทจ์•ฝ์ ์€ CPU์˜ ์ถ”์ธก ์‹คํ–‰([[Speculative Execution|Speculative Execution]])๊ณผ ์บ์‹œ ํƒ€์ด๋ฐ ์ฐจ์ด๋ฅผ ์•…์šฉํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถ„๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค [4, 5]. ์ด๋กœ ์ธํ•ด WebKit์˜ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ ๋ฐ ์œ ํ˜• ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•˜์—ฌ, ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript๋‚˜ WebAssembly ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ์ „์ฒด๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค [3, 6]. ๋˜ํ•œ WebKit์˜ ๋ณด์•ˆ ์†์„ฑ์ด Spectre๋ฅผ ํ†ตํ•ด ๋จผ์ € ์šฐํšŒ๋  ๊ฒฝ์šฐ, ์ด๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์‚ผ์•„ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” Meltdown ๊ณต๊ฒฉ๊นŒ์ง€ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 2]. - **2๋‹จ๊ณ„ ๋ฐฉ์–ด(Two-Tiered Defense) ์™„ํ™” ์ „๋žต:** WebKit๊ณผ [[Blink|Blink]]๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ ๋ณด์•ˆ ์™„ํ™”์ฑ…์„ ์ „ํ™˜ ๋ฐ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค [7, 8]. 1. **ํƒ€์ด๋จธ ์ •๋ฐ€๋„ ์ถ•์†Œ:** Spectre ๊ณต๊ฒฉ์€ L1 ์บ์‹œ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ์ง€์—ฐ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๊ด€์ฐฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์ •๋ฐ€ ํƒ€์ด๋ฐ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค [5]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด WebKit์€ `performance.now` ๋“ฑ์˜ ํƒ€์ด๋จธ ์ •๋ฐ€๋„๋ฅผ 1ms ๋‹จ์œ„๋กœ ์ถ•์†Œ([[Quantization|Quantization]]/coarsening)ํ•˜๊ณ , ๊ณ ํ•ด์ƒ๋„ ํƒ€์ด๋จธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” `SharedArrayBuffer` ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค [8-10]. 2. **๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ([[Branchless Security Checks|Branchless Security Checks]]) ๋„์ž…:** ๋ถ„๊ธฐ์— ์˜์กดํ•˜๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜ ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น(Index Masking)๊ณผ ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹([[Pointer Poisoning|Pointer Poisoning]]) ๊ธฐ๋ฒ•์„ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค [8-10]. ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น์€ ์ž„์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋ฒ”์œ„ ์™ธ(out-of-bounds) ์ฝ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋ฉฐ, ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹์€ ์ •์  ์„ ์–ธ๋œ ํฌ์ธํ„ฐ ํ•„๋“œ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ํฌ์ด์ฆŒ ๊ฐ’์„ ํ• ๋‹นํ•˜์—ฌ ํƒ€์ž… ํ˜ผ๋™์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ถ„๊ธฐ ์—†๋Š” ์œ ํ˜• ๊ฒ€์‚ฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [11, 12]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Spectre|Spectre]], Meltdown, JavaScriptCore, [[Speculative Execution|Speculative execution]] - **Projects/Contexts:** WebKit ์ทจ์•ฝ์  ์™„ํ™”(Security Mitigations) - **Contradictions/Notes:** ์ดˆ๊ธฐ ๋„์ž…๋œ ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น ๊ธฐ๋ฒ•์€ ๊ธธ์ด๋ฅผ ๋‹ค์Œ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•ด ๋งˆ์Šคํฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ž„์˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์€ ๋ง‰์ง€๋งŒ ์—ฌ์ „ํžˆ ์ œํ•œ์ ์ธ ๋ฒ”์œ„ ์™ธ(out-of-bounds) ์ฝ๊ธฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [11]. --- *Last updated: 2026-04-19* ---