Intel ํ”„๋กœ์„ธ์„œ์˜ MMIO ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ทจ์•ฝ์ 

Intel์€ ํ”„๋กœ์„ธ์„œ์˜ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์œ ์ถœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” MMIO(Memory Mapped Input Output) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์กฐ์ž‘ํ•˜์—ฌ ๋‹ค๋ฅธ CPU ์ฝ”์–ด์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค, Intel SGX ์—”ํด๋ ˆ์ด๋ธŒ ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์€ Intel CPU์—๋งŒ ํ•ด๋‹น๋˜๋ฉฐ ๋‹ค๋ฅธ ์ œ์กฐ์—…์ฒด์˜ ํ”„๋กœ์„ธ์„œ๋Š” ์ทจ์•ฝ์ ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์ ์€ Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake ๋ฐ Rocketlake ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์„œ๋Š” ๋ฌผ๋ก  Xeon EP/EX, Scalable ๋ฐ ์ผ๋ถ€ Atom ์„œ๋ฒ„ ํ”„๋กœ์„ธ์„œ๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ Intel CPU์—์„œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด MMIO์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด MMIO์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Intel SGX(Software Guard Extensions) ๊ฒฉ๋ฆฌ ์—”ํด๋ ˆ์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์—๋„ ์ˆ˜์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๋ ค๋ฉด ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ์™€ ์ปค๋„์—์„œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์œผ๋กœ ๋Œ์•„๊ฐ€๊ฑฐ๋‚˜ ์ œ์–ด๊ถŒ์„ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•  ๋•Œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ์ง€์šฐ๋Š” VERW ๋ช…๋ น ์‚ฌ์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‹๋ณ„๋œ MDS(Microarchitectural Data Sampling), SRBDS(Special Register Buffer Data Sampling) ๋ฐ TAA(Transactional Asynchronous Abort) ํด๋ž˜์Šค ๊ณต๊ฒฉ์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ์—๋„ ์œ ์‚ฌํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์ธก๋ฉด์—์„œ๋Š” ๋ณดํ˜ธ ๊ตฌํ˜„์— ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด 2022.1์›” Intel CPU์šฉ ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ(IPU 5.18.5)์—์„œ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux ์ปค๋„์—๋Š” ์ƒˆ๋กœ์šด ์ข…๋ฅ˜์˜ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ๋ฆด๋ฆฌ์Šค 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284, 4.9.319 ๋ฐ XNUMX์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. MMIO์˜ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ์˜ ๋…ธ์ถœ์„ ํ™•์ธํ•˜๊ณ  ํŠน์ • ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ™œ๋™์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด "/sys/devices/system/cpu/vulnerability/mmio_stale_data" ํŒŒ์ผ์ด Linux ์ปค๋„์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ˜ธ ํฌํ•จ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„ ๋ถ€ํŒ… ๋งค๊ฐœ๋ณ€์ˆ˜ "mmio_stale_data"๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” "full"(์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋ฐ VM์œผ๋กœ ์ด๋™ํ•  ๋•Œ ๋ฒ„ํผ ์ •๋ฆฌ ํ™œ์„ฑํ™”), "full,nosmt"( "full" + ์ถ”๊ฐ€๋กœ SMT/Hyper-Threads ๋น„ํ™œ์„ฑํ™”) ๋ฐ "off"(๋ณดํ˜ธ ๋น„ํ™œ์„ฑํ™”). Xen ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฐ Qubes ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์‹๋ณ„๋œ ์ทจ์•ฝ์  ํด๋ž˜์Šค์˜ ๋ณธ์งˆ์€ ์ผ๋ถ€ ์ž‘์—…์ด ๋‹ค๋ฅธ CPU ์ฝ”์–ด์—์„œ ์‹คํ–‰๋œ ํ›„ ๋‚จ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๋ฒ„ํผ์—์„œ ๋‹ค๋ฅธ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MMIO์˜ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ์ž”์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒฉ๋ฆฌ๋œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๋ฒ„ํผ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ‘œ์‹œ๋˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ ๋˜๋Š” CPU ๋ฒ„ํผ๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MMIO๋ฅผ ํ†ตํ•ด ์ž”์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • DRPW(Device Register Partial Write, CVE-2022-21166)๋Š” ์ผ๋ถ€ MMIO ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ๋ฅผ ์ž˜๋ชป ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋ ˆ์ง€์Šคํ„ฐ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ฑ„์šฐ๊ธฐ ๋ฒ„ํผ์˜ ์ž”์—ฌ ์ •๋ณด๋„ ๋ ˆ์ง€์Šคํ„ฐ์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ MMIO ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ๋ถˆ์™„์ „ํ•œ ์“ฐ๊ธฐ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ CPU ์ฝ”์–ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์œผ๋กœ๋ถ€ํ„ฐ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๋ฒ„ํผ์— ๋‚จ์•„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SBDS(Shared Buffers Data Sampling, CVE-2022-21125)๋Š” ๋ชจ๋“  ์ปค๋„์— ๊ณตํ†ต๋œ ์ค‘๊ฐ„ ๋ฒ„ํผ์—์„œ ์ด๋™ํ•˜์—ฌ ์ปค๋„ ๋ฐ”์ธ๋”ฉ ์ฑ„์šฐ๊ธฐ ๋ฒ„ํผ์—์„œ ์ž”์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„์ถœ๋˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.
  • SBDR(๊ณต์œ  ๋ฒ„ํผ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ, CVE-2022-21123) - ๋ฌธ์ œ๋Š” SBDS์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ž”์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ‘œ์‹œ๋˜๋Š” CPU ๊ตฌ์กฐ์— ๋‚จ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. SBDS ๋ฐ SBDR ๋ฌธ์ œ๋Š” ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์šฉ ํ”„๋กœ์„ธ์„œ์™€ Intel Xeon E3 ์„œ๋ฒ„ ์ œํ’ˆ๊ตฐ์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Intel ํ”„๋กœ์„ธ์„œ์˜ MMIO ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ทจ์•ฝ์ 


์ถœ์ฒ˜ : opennet.ru

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