๋คํธ์ํฌ ํจํท์ ํํฐ๋งํ๊ณ ์์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ Linux ์ปค๋์ ํ์ ์์คํ ์ธ Netfilter์์ ์ทจ์ฝ์ (CVE-2021-22555)์ด ํ์ธ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ก์ปฌ ์ฌ์ฉ์๋ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋์ ์๋ ๋์์ ํฌํจํ์ฌ ์์คํ ์ ๋ํ ๋ฃจํธ ๊ถํ์ ์ป์ ์ ์์ต๋๋ค. KASLR, SMAP ๋ฐ SMEP ๋ณดํธ ๋ฉ์ปค๋์ฆ์ ์ฐํํ๋ ์ต์คํ๋ก์์ ์์ ํ๋กํ ํ์ ์ด ํ ์คํธ๋ฅผ ์ํด ์ค๋น๋์์ต๋๋ค. ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ ์ฐ๊ตฌ์์ kCTF ํด๋ฌ์คํฐ์์ Kubernetes ์ปจํ ์ด๋ ๊ฒฉ๋ฆฌ๋ฅผ ์ฐํํ๋ ๋ฐฉ๋ฒ์ ์๋ณํ ๋๊ฐ๋ก Google๋ก๋ถํฐ 20๋ฌ๋ฌ์ ๋ณด์์ ๋ฐ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ 2.6.19๋ ์ ์ ์ถ์๋ ์ปค๋ 15๋ถํฐ ๋ฐ์ํ์ผ๋ฉฐ, ํธํ ๋ชจ๋์์ setockopt ํธ์ถ์ ํตํด ํน๋ณํ ํ์ํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณด๋ผ ๋ ๋ฒํผ ์ค๋ฒํ๋ก๋ฅผ ์ผ์ผํค๋ IPT_SO_SET_REPLACE ๋ฐ IP6T_SO_SET_REPLACE ์ฒ๋ฆฌ๊ธฐ์ ๋ฒ๊ทธ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ํฉ์์ compat_setsockopt()์ ๋ํ ํธ์ถ์ ๋ฃจํธ ์ฌ์ฉ์๋ง ์ํํ ์ ์์ง๋ง ๊ณต๊ฒฉ์ ์ํํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ์ง์์ด ํ์ฑํ๋ ์์คํ ์์ ๊ถํ ์๋ ์ฌ์ฉ์๋ ์ป์ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ ๋ณ๋์ ๋ฃจํธ ์ฌ์ฉ์๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์์ ์ทจ์ฝ์ ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด "์ฌ์ฉ์ ๋ค์์คํ์ด์ค"๋ Ubuntu ๋ฐ Fedora์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง๋ง Debian ๋ฐ RHEL์์๋ ํ์ฑํ๋์ง ์์ต๋๋ค. ์ทจ์ฝ์ ์ ์์ ํ ํจ์น๋ 13์ XNUMX์ผ ๋ฆฌ๋ ์ค ์ปค๋์ ์ฑํ๋๋ค. Debian, Arch Linux ๋ฐ Fedora ํ๋ก์ ํธ์์๋ ํจํค์ง ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฏธ ์์ฑ๋์์ต๋๋ค. Ubuntu, RHEL, SUSE์์๋ ์ ๋ฐ์ดํธ๋ฅผ ์ค๋น ์ค์ ๋๋ค.
32๋นํธ์์ 64๋นํธ ํํ์ผ๋ก ๋ณํํ ํ ์ปค๋ ๊ตฌ์กฐ๋ฅผ ์ ์ฅํ ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์๋ชป ๊ณ์ฐํ์ฌ xt_compat_target_from_user() ํจ์์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๋ฒ๊ทธ๋ ์คํ์
0x4C๋ก ์ ํ๋๋ ํ ๋น๋ ๋ฒํผ๋ฅผ ๋์ด์๋ ์์์ ์์น์ XNUMX๊ฐ์ null ๋ฐ์ดํธ๋ฅผ ์ธ ์ ์๋๋ก ํ์ฉํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ฃจํธ ๊ถํ์ ์ป์ ์ ์๋ ์ต์คํ๋ก์์ ์์ฑํ๊ธฐ์ ์ถฉ๋ถํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. msg_msg ๊ตฌ์กฐ์์ m_list->next ํฌ์ธํฐ๋ฅผ ์ญ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ ํ(ํด์ ํ ์ฌ์ฉ) ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ธฐ ์ํ ์กฐ๊ฑด์ด ์์ฑ๋์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ msgsnd() ์์คํ
ํธ์ถ์ ์กฐ์ํ์ฌ ์ฃผ์ ๋ฐ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ ๋ฐ ์ฌ์ฉ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru