AMD ํ”„๋กœ์„ธ์„œ์˜ ์˜ˆ์ธก ๋ช…๋ น ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ทจ์•ฝ์„ฑ

Grsecurity ํ”„๋กœ์ ํŠธ๋Š” ๋ฌด์กฐ๊ฑด ์ •๋ฐฉํ–ฅ ์ ํ”„ ์ž‘์—… ํ›„ ์ถ”์ธก ๋ช…๋ น ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ AMD ํ”„๋กœ์„ธ์„œ์˜ ์ƒˆ๋กœ์šด ์ทจ์•ฝ์ (CVE-2021-26341)์— ๋Œ€ํ•œ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด์™€ ์‹œ์—ฐ์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ด ์„ฑ๊ณตํ•˜๋ฉด ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ์˜ ์ž„์˜ ์˜์—ญ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ๊ตฌ์›๋“ค์€ ePBF ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์—์„œ ๊ถŒํ•œ ์—†๋Š” ์ฝ”๋“œ ์‹คํ–‰์„ ํ†ตํ•ด ์ฃผ์†Œ ๋ ˆ์ด์•„์›ƒ์„ ๊ฒฐ์ •ํ•˜๊ณ  KASLR ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜(์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ๋žœ๋คํ™”)์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ต์Šคํ”Œ๋กœ์ž‡์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์œ ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ๋ฐฐ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์„ฑ์œผ๋กœ ์ธํ•ด ์ถ”์ธก ์‹คํ–‰ ์ค‘์— ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ํ”„ ๋ช…๋ น(SLS, ์ง์„  ์ถ”์ธก)์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์ถ”์ธก์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์กฐ๊ฑด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ด๋Ÿฌํ•œ ์ตœ์ ํ™”๋Š” ์กฐ๊ฑด๋ถ€ ์ ํ”„ ์—ฐ์‚ฐ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JMP, RET ๋ฐ CALL๊ณผ ๊ฐ™์€ ์ง์ ‘์ ์ธ ๋ฌด์กฐ๊ฑด ์ ํ”„๋ฅผ ์•”์‹œํ•˜๋Š” ๋ช…๋ น์–ด์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์กฐ๊ฑด ๋ถ„๊ธฐ ๋ช…๋ น ๋’ค์—๋Š” ์‹คํ–‰์„ ๋ชฉ์ ์œผ๋กœ ํ•˜์ง€ ์•Š๋Š” ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๊ธฐ๊ฐ€ ๋‹ค์Œ ๋ช…๋ น์˜ ์‹คํ–‰์„ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จํ•œ ํ›„ ํ”„๋กœ์„ธ์„œ๋Š” ๋‹จ์ˆœํžˆ ์ƒํƒœ๋ฅผ ๋กค๋ฐฑํ•˜๊ณ  ์ถ”์ธก ์‹คํ–‰์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์ง€๋งŒ ๋ช…๋ น ์‹คํ–‰์˜ ํ”์ ์€ ์ผ๋ฐ˜ ์บ์‹œ์— ๋‚จ์•„ ๋ถ„์„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ ์ฑ„๋„ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Spectre-v1 ์ทจ์•ฝ์ ์„ ์•…์šฉํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณต๊ฒฉ์„ ํ•˜๋ ค๋ฉด ์˜ˆ์ธก ์‹คํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ํŠน์ • ๋ช…๋ น ์‹œํ€€์Šค(๊ฐ€์ ฏ)๊ฐ€ ์ปค๋„์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์€ ์ฝ”๋“œ์—์„œ ๊ทธ๋Ÿฌํ•œ ๊ฐ€์ ฏ์„ ์‹๋ณ„ํ•˜๊ณ  ์˜ˆ์ธก ์‹คํ–‰์„ ์ฐจ๋‹จํ•˜๋Š” ์ถ”๊ฐ€ ์ง€์นจ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ธก ์‹คํ–‰ ์กฐ๊ฑด์€ eBPF ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ถŒํ•œ์ด ์—†๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. eBPF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ฏ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ฐจ๋‹จํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ์—์„œ eBPF์— ๋Œ€ํ•œ ๊ถŒํ•œ ์—†๋Š” ์•ก์„ธ์Šค๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค("sysctl -w kernel.unprivileged_bpf_disabled=1").

์ด ์ทจ์•ฝ์ ์€ 1์„ธ๋Œ€ ๋ฐ 2์„ธ๋Œ€ AMD EPYC ๋ฐ AMD Ryzen Threadripper ํ”„๋กœ์„ธ์„œ์™€ AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper๋ฅผ ํฌํ•จํ•œ Zen3 ๋ฐ ZenXNUMX ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์„œ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. PRO ๋ฐ APU ์‹œ๋ฆฌ์ฆˆ A. ์ถ”์ธก์„ฑ ๋ช…๋ น์–ด ์‹คํ–‰์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„๊ธฐ ์—ฐ์‚ฐ(RET, JMP, CALL) ํ›„ INTXNUMX ๋˜๋Š” LFENCE ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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