Linux ์ปค๋(CVE-2021-33624)์์ eBPF ํ์ ์์คํ ์ ์ฌ์ฉํ์ฌ Spectre ํด๋์ค ์ทจ์ฝ์ ์ ๋ํ ๋ณดํธ๋ฅผ ์ฐํํ ์ ์๋ ์ทจ์ฝ์ ์ด ํ์ธ๋์์ต๋๋ค. ํน์ ์์ ์ ์ถ์ธก ์คํ. ์คํํฐ(Spectre) ๊ณต๊ฒฉ์ ์ํด์๋ ์ถ์ธก์ฑ ๋ช ๋ น ์คํ์ผ๋ก ์ด์ด์ง๋ ํน๊ถ ์ฝ๋์ ํน์ ๋ช ๋ น ์ํ์ค๊ฐ โโ์์ด์ผ ํฉ๋๋ค. ์คํ์ ์ํด ์ ์ก๋ BPF ํ๋ก๊ทธ๋จ์ ์กฐ์ํจ์ผ๋ก์จ eBPF์์ ์ ์ฌํ ๋ช ๋ น์ ์์ฑํ๊ณ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ด์ฉ๊ณผ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์์ญ์ ์ฌ์ด๋ ์ฑ๋์ ํตํด ์ ์ถํ ์ ์์ต๋๋ค.
์ด ์ทจ์ฝ์ ์ BPF ํ๋ก๊ทธ๋จ์์ ์ค๋ฅ์ ํ์ฉ๋์ง ์๋ ํ๋์ ๊ฐ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒ์ฆ ํ๋ก๊ทธ๋จ์ ๊ฒฐํจ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ๊ฒ์ฆ์๋ ๊ฐ๋ฅํ ์ฝ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ์ด๊ฑฐํ์ง๋ง ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ์ ์๋ฏธ๋ก ์ ๊ด์ ์์ ํ์ฉํ ์ ์๋ ๋ถ๊ธฐ ์ต์ ์ ๊ฑด๋๋๋๋ค. BPF ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๊ฒ์ฆ์๊ฐ ๊ณ ๋ คํ์ง ์์ ๋ถ๊ธฐ ์ต์ ์ ํ๋ก์ธ์์ ์ํด ์๋ชป ์์ธก๋์ด ์ถ์ธก ๋ชจ๋์์ ์คํ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, "๋ก๋" ์์ ์ ๋ถ์ํ ๋ ๊ฒ์ฆ์๋ ๋ช ๋ น์ด๊ฐ ๊ฐ์ด ํญ์ ์ง์ ๋ ๊ฒฝ๊ณ ๋ด์ ์๋ ์ฃผ์๊ฐ ์๋ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์์ํ์ง๋ง ๊ณต๊ฒฉ์๋ ํ๋ก์ธ์๊ฐ ์ถ๋ก ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ๋ ค๊ณ ์๋ํ๋ ์กฐ๊ฑด์ ๋ง๋ค ์ ์์ต๋๋ค. ํ์ธ ์กฐ๊ฑด์ ๋ง์ง ์๋ ์ฃผ์์ ๋๋ค.
์ด ๋ฌธ์ ๋ ์ปค๋ 4.15 ์ถ์ ์ดํ๋ถํฐ ๋ํ๋๊ธฐ ์์ํด ํจ์น(1, 2, 3, 4) ํํ๋ก ์์ ๋๋ค. ๋ฐฐํฌํ(Debian, RHEL, Ubuntu, Fedora, SUSE, Arch)์์๋ ์ทจ์ฝ์ ์ด ์์ ๋์ง ์์ ์ํ๋ก ๋จ์ ์์ต๋๋ค.
๋ํ Spectre ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํ ๋๊ตฌ๊ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํ ์ฐธ๊ณ ์ฌํญ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋ ธํธ์๋ Firefox์์ ๋ฐ๋ณตํ๊ธฐ ์ด๋ ค์ด ์ค๋ฅ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํด Mozilla์์ ๋ง๋ rr(Record and Replay) ๋๋ฒ๊ฑฐ์ ์ต์ ํ ๊ฒฐ๊ณผ๊ฐ ์์ฝ๋์ด ์์ต๋๋ค. ๋๋ ํฐ๋ฆฌ ์กด์ฌ๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์์คํ ํธ์ถ์ ์บ์ฑํ๋ฉด ํ ์คํธ ํ๋ก์ ํธ์ "rr ์์ค" ์์ ์ด 3๋ถ 19์ด์์ 36์ด๋ก ๋จ์ถ๋์์ต๋๋ค.
์ต์ ํ ์์ฑ์๋ ์คํํฐ ๋ณดํธ๋ฅผ ๋นํ์ฑํํ ํ ์ฑ๋ฅ์ด ์ด๋ป๊ฒ ๋ณํ๋์ง ํ์ธํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. "mitigations=off" ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ
์ ๋ถํ
ํ ํ, ์ต์ ํํ์ง ์์ "rr ์์ค"์ ์คํ ์๊ฐ์ 2๋ถ 5์ด(1.6๋ฐฐ ๋ ๋นจ๋ผ์ง)์๊ณ , ์ต์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด 33์ด(9% ๋ ๋นจ๋ผ์ก์ต๋๋ค)์์ต๋๋ค. ํฅ๋ฏธ๋กญ๊ฒ๋ Spectre ๋ณดํธ๋ฅผ ๋นํ์ฑํํ๋ฉด ์ปค๋ ์์ค์์ ์ฝ๋ ์คํ ์๊ฐ์ด 1.4๋ฐฐ(2m9s์์ 1m32s๋ก) ๋จ์ถ๋์์ ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ ์๊ฐ๋ ์ ๋ฐ์ผ๋ก ์ค์์ต๋๋ค(1m9s์์ 0m33s). ์ด๋ ์๋ง๋ CPU ์บ์ ์์
๋ฐ TLB ํจ์จ์ฑ์ด ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ผ ๊ฒ์
๋๋ค. ์คํํฐ ๋ณดํธ๊ฐ ํ์ฑํ๋๋ฉด ์ฌ์ค์ ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru