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 ์๋ฒ ์ ํ๊ตฐ์๋ง ๋ํ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru