Spectre 4 ๊ณต๊ฒฉ ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” eBPF์˜ ์ทจ์•ฝ์ 

Spectre v4 ๊ณต๊ฒฉ(SSB, Speculative Store Bypass)์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐ eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ์ทจ์•ฝ์ ์ด Linux ์ปค๋„์—์„œ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๊ถŒํ•œ์ด ์—†๋Š” BPF ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ž‘์—…์˜ ์ถ”์ธก ์‹คํ–‰ ์กฐ๊ฑด์„ ๋งŒ๋“ค๊ณ  ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ž„์˜ ์˜์—ญ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„์˜ eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ์‹ค์ œ๋กœ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ํ”„๋กœํ† ํƒ€์ž… ์ต์Šคํ”Œ๋กœ์ž‡์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํŒจ์น˜(1, 2) ํ˜•ํƒœ๋กœ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ, ๋‹ค์Œ Linux ์ปค๋„ ์—…๋ฐ์ดํŠธ์— ํฌํ•จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ ํ‚คํŠธ์˜ ์—…๋ฐ์ดํŠธ๋Š” ์•„์ง ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

์ŠคํŽ™ํ„ฐ 4 ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์€ ๊ฐ„์ ‘ ์ฃผ์†Œ ์ง€์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ต๋Œ€๋กœ ์“ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ž‘์—…์˜ ์ถ”์ธก์  ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ๊ธฐํ•œ ํ›„ ํ”„๋กœ์„ธ์„œ ์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์›ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ž‘์—…์ด ์“ฐ๊ธฐ ์ž‘์—… ๋’ค์— ์˜ค๋Š” ๊ฒฝ์šฐ(์˜ˆ: mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]) ์œ ์‚ฌํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์–ด ์ฝ๊ธฐ ์ฃผ์†Œ์˜ ์˜คํ”„์…‹์ด ์ด๋ฏธ ์•Œ๋ ค์ ธ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฝ๊ธฐ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค). ํ›จ์”ฌ ๋” ์ž์ฃผ ์ˆ˜ํ–‰๋˜๊ณ  ์บ์‹œ์—์„œ ์ฝ๊ธฐ๊ฐ€ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Œ) ํ”„๋กœ์„ธ์„œ๋Š” ์“ฐ๊ธฐ์˜ ๊ฐ„์ ‘ ์˜คํ”„์…‹์ด ๊ณ„์‚ฐ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ ์ „์— ์ถ”์ธก์ ์œผ๋กœ ์ฝ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ (CVE-2021-35477)์€ BPF ํ”„๋กœ๊ทธ๋žจ ํ™•์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๊ฒฐํ•จ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Spectre 4 ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์ฆ์ž๋Š” ์ž ์žฌ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ํ›„ ์ด์ „ ์ž‘์—…์˜ ํ”์ ์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด null ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ถ”๊ฐ€ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. null ์“ฐ๊ธฐ ์ž‘์—…์€ BPF ์Šคํƒ ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์—๋งŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋น ๋ฅด๊ณ  ์˜ˆ์ธก ์‹คํ–‰์„ ์ฐจ๋‹จํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ์„ ์  ์ €์žฅ ์—ฐ์‚ฐ ์ด์ „์— ํˆฌ๊ธฐ์  ์‹คํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ๋ช…๋ น์ด ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ์กฐ๊ฑด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ทจ์•ฝ์ (CVE-2021-3455)์€ BPF ๊ฒ€์ฆ์ž๊ฐ€ ์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ์ž‘์—…์„ ์‹๋ณ„ํ•  ๋•Œ ๋ณดํ˜ธ๋˜์ง€ ์•Š๋Š” ์ฒซ ๋ฒˆ์งธ ์“ฐ๊ธฐ ์ž‘์—…์ธ BPF ์Šคํƒ์˜ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์˜์—ญ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋”ฐ๋ผ ์ถ”๋ก ์  ์ฝ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BPF ์Šคํƒ์— ๋Œ€ํ•œ ์ƒˆ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ด๋ฏธ ์žˆ๋Š” ๋‚ด์šฉ์„ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ํ• ๋‹น๋˜๋ฉฐ, BPF ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— BPF ์Šคํƒ์— ํ• ๋‹น๋  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋‚ด์šฉ์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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