Spectre v4 ๊ณต๊ฒฉ(SSB, Speculative Store Bypass)์ ๋ํ ๋ณดํธ๋ฅผ ์ฐํํ๋ ๋ฐ eBPF ํ์ ์์คํ ์ ์ฌ์ฉํ ์ ์๋ ๋ ๊ฐ์ง ์ทจ์ฝ์ ์ด Linux ์ปค๋์์ ํ์ธ๋์์ต๋๋ค. ๊ณต๊ฒฉ์๋ ๊ถํ์ด ์๋ BPF ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ํน์ ์์ ์ ์ถ์ธก ์คํ ์กฐ๊ฑด์ ๋ง๋ค๊ณ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์์ญ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค. ์ปค๋์ eBPF ํ์ ์์คํ ๊ด๋ฆฌ์๋ ์ค์ ๋ก ๊ณต๊ฒฉ์ ์ํํ ์ ์๋ ๋ฅ๋ ฅ์ ๋ณด์ฌ์ฃผ๋ ํ๋กํ ํ์ ์ต์คํ๋ก์์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ฐ์์ต๋๋ค. ๋ฌธ์ ๋ ํจ์น(1, 2) ํํ๋ก ์์ ๋์์ผ๋ฉฐ, ๋ค์ Linux ์ปค๋ ์ ๋ฐ์ดํธ์ ํฌํจ๋ ์์ ์ ๋๋ค. ๋ฐฐํฌ ํคํธ์ ์ ๋ฐ์ดํธ๋ ์์ง ์์ฑ๋์ง ์์์ต๋๋ค(Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).
์คํํฐ 4 ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ๊ฐ์ ์ฃผ์ ์ง์ ์ ์ฌ์ฉํ์ฌ ๊ต๋๋ก ์ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์์ ์ ์ถ์ธก์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ๊ธฐํ ํ ํ๋ก์ธ์ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ๋ ๋ฐฉ์์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ฝ๊ธฐ ์์ ์ด ์ฐ๊ธฐ ์์ ๋ค์ ์ค๋ ๊ฒฝ์ฐ(์: mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]) ์ ์ฌํ ์์ ์ด ์ํ๋์ด ์ฝ๊ธฐ ์ฃผ์์ ์คํ์ ์ด ์ด๋ฏธ ์๋ ค์ ธ ์์ ์ ์์ต๋๋ค(์ฝ๊ธฐ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค). ํจ์ฌ ๋ ์์ฃผ ์ํ๋๊ณ ์บ์์์ ์ฝ๊ธฐ๊ฐ ์ํ๋ ์ ์์) ํ๋ก์ธ์๋ ์ฐ๊ธฐ์ ๊ฐ์ ์คํ์ ์ด ๊ณ์ฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฐ๊ธฐ ์ ์ ์ถ์ธก์ ์ผ๋ก ์ฝ๊ธฐ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์คํ์ ์ ๊ณ์ฐํ ํ ์ฐ๊ธฐ์ ์ฝ๊ธฐ๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ต์ฐจ๊ฐ ๊ฐ์ง๋๋ฉด ํ๋ก์ธ์๋ ์ด๋ฏธ ์ถ๋ก ์ ์ผ๋ก ์ป์ ์ฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ด ์์ ์ ๋ฐ๋ณตํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ ์ฅ ์์ ์ด ์์ง ์๋ฃ๋์ง ์์ ๋์ ์ฝ๊ธฐ ๋ช ๋ น์ด ์ผ๋ถ ์ฃผ์์ ์ด์ ๊ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์คํจํ ์ถ์ธก ์์ ์ ์ญ์ ํ ํ์๋ ํด๋น ์คํ์ ํ์ ์ ์บ์์ ๋จ์ ์์ผ๋ฉฐ, ์บ์๋ ๋ฐ์ดํฐ์ ์บ์๋์ง ์์ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค ์๊ฐ ๋ณํ ๋ถ์์ ๊ธฐ๋ฐ์ผ๋ก ์บ์ ๋ด์ฉ์ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์บ์๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์ทจ์ฝ์ (CVE-2021-35477)์ BPF ํ๋ก๊ทธ๋จ ํ์ธ ๋ฉ์ปค๋์ฆ์ ๊ฒฐํจ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. Spectre 4 ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด ๊ฒ์ฆ์๋ ์ ์ฌ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ํ ์ด์ ์์ ์ ํ์ ์ ๋์ฒดํ๊ธฐ ์ํด null ๊ฐ์ ์ ์ฅํ๋ ์ถ๊ฐ ๋ช ๋ น์ ์ถ๊ฐํฉ๋๋ค. null ์ฐ๊ธฐ ์์ ์ BPF ์คํ ํ๋ ์์ ๋ํ ํฌ์ธํฐ์๋ง ์์กดํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅด๊ณ ์์ธก ์คํ์ ์ฐจ๋จํ ๊ฒ์ผ๋ก ์์๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์ ์ ์ ์ฅ ์ฐ์ฐ ์ด์ ์ ํฌ๊ธฐ์ ์คํ์ผ๋ก ์ด์ด์ง๋ ๋ช ๋ น์ด ์คํ๋๋๋ก ํ๋ ์กฐ๊ฑด์ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ฐํ์ก๋ค.
๋ ๋ฒ์งธ ์ทจ์ฝ์ (CVE-2021-3455)์ BPF ๊ฒ์ฆ์๊ฐ ์ ์ฌ์ ์ผ๋ก ์ํํ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์์
์ ์๋ณํ ๋ ๋ณดํธ๋์ง ์๋ ์ฒซ ๋ฒ์งธ ์ฐ๊ธฐ ์์
์ธ BPF ์คํ์ ์ด๊ธฐํ๋์ง ์์ ์์ญ์ ๊ณ ๋ คํ์ง ์๋๋ค๋ ์ฌ์ค๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ ์ฅ ๋ช
๋ น์ ์คํํ๊ธฐ ์ ์ ์ด๊ธฐํ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ฐ๋ผ ์ถ๋ก ์ ์ฝ๊ธฐ ์์
์ ์ํํ ์ ์์ต๋๋ค. BPF ์คํ์ ๋ํ ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ฏธ ์๋ ๋ด์ฉ์ ํ์ธํ์ง ์๊ณ ํ ๋น๋๋ฉฐ, BPF ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ ์ BPF ์คํ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ด์ฉ์ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ถ์ฒ : opennet.ru