๋นํธ๋ํ๋ ์ฐ๊ตฌ์ ์๋ก์ด ์ทจ์ฝ์ () SWAPGS๋ผ๋ ์ด๋ฆ์ ํ๋ CPU์ ์ถ์ธก ๋ช ๋ น์ด ์คํ ๋ฉ์ปค๋์ฆ์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ํ๋ก์ธ์ ๋ช ๋ น์ด์ ์ด๋ฆ์ ํด๋นํฉ๋๋ค. ์ทจ์ฝ์ ๊ถํ ์๋ ๊ณต๊ฒฉ์๊ฐ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ด์ฉ์ ํ์ธํ๊ฑฐ๋ ๊ฐ์ ๋จธ์ ์ ์คํํ๋ ๊ฒ์ ํ์ฉํฉ๋๋ค. ๋ฌธ์ Intel ํ๋ก์ธ์(x86_64) ๋ฐ ๋ถ๋ถ์ ์ผ๋ก ์ฃผ์ ๊ณต๊ฒฉ ๋ฒกํฐ๊ฐ ๋ํ๋์ง ์๋ AMD ํ๋ก์ธ์. Spectre ๋ฐ Meltdown ์ทจ์ฝ์ ์ ๋์ํ๊ธฐ ์ํด ์ด์ ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ Intel ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ ๋ SWAPGS ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ์ง ๋ชปํ์ง๋ง Linux, ChromeOS, Android ๋ฐ Windows์ ๋ํ ์์ ์ฌํญ์ ์ด๋ฏธ ์ ์๋์์ต๋๋ค.
ํด๋น ์ทจ์ฝ์ ์ Spectre v1 ํด๋์ค์ ์ํ๋ฉฐ ์ถ์ธก์ ์ํ ๋ช ๋ น ์คํ ์ดํ ๋จ์ ํ๋ก์ธ์ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ๋ค๋ ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ต์ CPU์ ๋ถ๊ธฐ ์์ธก ์ฅ์น๋ ์คํ๋ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ ์ผ๋ถ ๋ช ๋ น์ ์ ์ ์คํ์ ์ฌ์ฉํ์ง๋ง ์คํ์ ๊ฒฐ์ ํ๋ ๋ชจ๋ ์์์ ๊ณ์ฐ์ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค(์: ๋ถ๊ธฐ ์กฐ๊ฑด ๋๋ ์ก์ธ์ค ๋งค๊ฐ๋ณ์๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ). ์์ง ๊ณ์ฐ๋์ง ์์์ต๋๋ค). ์์ธก์ด ํ์ธ๋์ง ์์ผ๋ฉด ํ๋ก์ธ์๋ ์ถ์ธก ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ๊ธฐํ์ง๋ง, ๊ทธ ๋์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ ํ๋ก์ธ์ ์บ์์ ๋จ์ ์์ผ๋ฉฐ, ์ก์ธ์ค ๋ณํ๋ฅผ ๋ถ์ํ๋ ์ฌ์ด๋ ์ฑ๋์ ํตํด ์บ์์ ๋ด์ฉ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ณต์ํ ์ ์์ต๋๋ค. ์บ์๋ ๋ฐ์ดํฐ์ ์บ์๋์ง ์์ ๋ฐ์ดํฐ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
์๋ก์ด ๊ณต๊ฒฉ์ ํน์ง์ ์ ์ด๊ฐ ์ฌ์ฉ์ ๊ณต๊ฐ์์ OS ์ปค๋(GS ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์ฌ์ฉ๋๋ ๊ฐ์ ์ปค๋์์ ์์ ์ค์ ์ฌ์ฉ๋๋ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. Linux ์ปค๋์์ GS๋ ์ปค๋ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋๋ per_cpu ํฌ์ธํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ฌ์ฉ์ ๊ณต๊ฐ์ TLS(Thread Local Storage)์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์ปค๋ ๊ณต๊ฐ์์ ๋ค์ ์ปค๋์ ์ก์ธ์คํ ๋๋ GS ๋ ์ง์คํฐ ๋ณ๊ฒฝ์ด ํ์ํ์ง ์์ ์ฝ๋๋ฅผ ์คํํ ๋ SWAPGS ๋ช ๋ น์ด๋ฅผ ๋ ๋ฒ ํธ์ถํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ช ๋ น์ด ์ ์ ๊ฒ์ฌ์ ์กฐ๊ฑด ๋ถ๊ธฐ๊ฐ ์ํ๋ฉ๋๋ค. ์ถ์ธก ์คํ ์์ง์ ๊ฒ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ SWAPGS ๋ช ๋ น์ผ๋ก ์ฝ๋ ์คํ์ ์ฌ์ ์ ์งํํ๋ฉฐ, ์ ํํ ๋ถ๊ธฐ๊ฐ ํ์ธ๋์ง ์์ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฒ๋ฆฝ๋๋ค. ๋ฐ๋ผ์ SWAPGS ์คํ์ ํฌํจํ์ง ์๋ ๋ถ๊ธฐ๊ฐ ์ถ๋ก ์ ์ผ๋ก ์ ํ๋๋ ๊ฒฝ์ฐ ์ํฉ์ด ๋ฐ์ํ ์ ์์ง๋ง ์ถ์ธก ์คํ ์ค์ GS ๋ ์ง์คํฐ์ ๊ฐ์ SWAPGS ๋ช ๋ น์ ์ํด ๋ณ๊ฒฝ๋๊ณ CPU ์บ์์์ ๋๋๋ ์ข ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๊ตฌ์๋ค์ ์ต์คํ๋ก์ ํ๋กํ ํ์ ์ด ์ค๋น๋ ๋ ๊ฐ์ง ๊ณต๊ฒฉ ์๋๋ฆฌ์ค๋ฅผ ์ ์ํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์๋๋ฆฌ์ค๋ SWAPGS ๋ช ๋ น์ด๊ฐ ์ค์ ๋ก ์คํ์ ์ฌ์ฉ๋จ์๋ ๋ถ๊ตฌํ๊ณ ์ถ์ธก์ ์ผ๋ก ์คํ๋์ง ์๋ ์ํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ , ๋ ๋ฒ์งธ ์๋๋ฆฌ์ค๋ SWAPGS ๋ช ๋ น์ด๊ฐ ์ค์ ๋ก ์คํ๋์ด์๋ ์ ๋์ง๋ง ์ถ์ธก์ ์ผ๋ก ์คํ๋๋ ์ํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค. ๊ฐ ์๋๋ฆฌ์ค์๋ ๋ ๊ฐ์ง ์ ์ฉ ์ต์ ์ด ์์ต๋๋ค. ๊ณต๊ฒฉ์๋ ์ปค๋ ์์ญ์ ํน์ ์ฃผ์์์ ๊ฐ์ ํ์ธํ ์ ์๊ณ , ๊ณต๊ฒฉ์๋ ์ปค๋์ ์์ ์ฃผ์์์ ํน์ ๊ฐ์ ๊ฒ์ํ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ์ ์ํํ๋ ๋ฐ๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉฐ ๊ณต๊ฒฉ์ ํตํด ์ ์ถ์ ์๋ฃํ๋ ๋ฐ ๋ช ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.

๋ฆฌ๋ ์ค ์ปค๋์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค ๋ค๋ฅธ Spectre v1 ํด๋์ค ์ทจ์ฝ์ ์ ์์ ๊ณผ ์ ์ฌํ๊ฒ SWAPGS ๋ช ๋ น ํธ์ถ ๋ ผ๋ฆฌ(์์ธก ์คํ ์ฐจ๋จ)๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ถ๊ฐ๋ ๋ณดํธ๋ ์ผ๋ฐ์ ์ธ ์ํฌ๋ก๋์ ์ฑ๋ฅ์ ์ต์ํ์ ์ํฅ์ ๋ฏธ์น ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ๊ณผ ์ปค๋ ๊ณต๊ฐ ์ฌ์ด์ ์ ํ ๋จ๊ณ์์ ๋๊ธฐ ์๊ฐ์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ณผ๋ํ ์์คํ ํธ์ถ์ด ๋ฐ์ํ๊ฑฐ๋ NMI ๋ฐ ์ธํฐ๋ฝํธ๊ฐ ์์ฃผ ์์ฑ๋๋ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์์ ํ๋ ค๋ฉด ํธ์คํธ ์์คํ ๊ณผ ๊ฒ์คํธ ํ๊ฒฝ ๋ชจ๋์ ์ปค๋ ์ ๋ฐ์ดํธ๋ฅผ ์ค์นํ ํ ์์คํ ์ ์ฌ๋ถํ ํด์ผ ํฉ๋๋ค. Linux์์ ๋ณดํธ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด "nospectre_v1" ์ต์ ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด ์ต์ ์ SWAPGS ์ทจ์ฝ์ ์ ์ฐจ๋จํ๋ ์กฐ์น๋ ๋นํ์ฑํํฉ๋๋ค. ์์ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ณต๋ฉ๋๋ค. ์ด๋ฏธ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋ Linux ์ปค๋์ฉ , , 4.14.137, 4.9.188 ๋ฐ 4.4.188. Linux ๋ฐฐํฌํ์ฉ ์ ๋ฐ์ดํธ๋ ์์ง ์ถ์๋์ง ์์์ต๋๋ค(, , , , , ). Windows์์๋ ๋ฌธ์ ๊ฐ ์กฐ์ฉํ ํด๊ฒฐ๋์์ต๋๋ค. . ๊ตฌ๊ธ ํ์ฌ ChromeOS์ ํจ๊ป ์ ๊ณต๋๋ ์ปค๋ 4.19์ ๋ํ ์์ ์ฌํญ ๋ฐ .
Bitdefender์ ์ฐ๊ตฌ์์ ๋ฐ๋ฅด๋ฉด Intel์ ์๋ XNUMX์์ ์ด ๋ฌธ์ ์ ๋ํ ํต๋ณด๋ฅผ ๋ฐ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ผ๋ฉฐ Microsoft, Google ๋ฐ Linux ์ปค๋์ ๊ฐ๋ฐ์๊ฐ ๊ณต๋ ์์ ๊ฐ๋ฐ์ ์ฐธ์ฌํ์ต๋๋ค. Ivy Bridge ์ด์ ์ ๊ตฌํ Intel ํ๋ก์ธ์๋ ์ต์คํ๋ก์์ ์ฌ์ฉ๋ WRGSBASE ๋ช ๋ น์ด์ ๋ํ ์ง์์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉํ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค. ARM, POWER, SPARC, MIPS ๋ฐ RISC-V ์์คํ ์ SWAPGS ๋ช ๋ น์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ฌธ์ ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ฃผ๋ก Intel ํ๋ก์ธ์ ์์ ์์๊ฒ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
AMD ์์คํ
์์๋ XNUMX์ฐจ ๊ณต๊ฒฉ ์๋๋ฆฌ์ค๋ง ์ฌํํ ์ ์์๋๋ฐ, ์ด๋ ๋๋ค ๋ฉ๋ชจ๋ฆฌ ์์ญ์์ ํน์ ๊ฐ์ ์ฐพ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ GS ๋ ์ง์คํฐ์ ๊ธฐ๋ณธ ๊ฐ์ ๋ํ ์ถ์ธก ์ฒ๋ฆฌ์ ๊ตญํ๋๋ค. ์ด ๊ณต๊ฒฉ ์ต์
์ ์ฐจ๋จํ๋ ค๋ฉด Spectre v1์ ๋ํ ๊ธฐ์กด ๋ณดํธ ๋ฐฉ๋ฒ.
์ถ์ฒ : opennet.ru
