๋ก์ปฌ ์ฌ์ฉ์๊ฐ ์์คํ ์์ ์์ ์ ๊ถํ์ ๋์ผ ์ ์๋๋ก ํ์ฉํ๋ ๋ช ๊ฐ์ง ์ํํ ์ทจ์ฝ์ ์ด Linux ์ปค๋์์ ํ์ธ๋์์ต๋๋ค. ๊ณ ๋ ค ์ค์ธ ๋ชจ๋ ๋ฌธ์ ์ ๋ํด ์๋ ์ค์ธ ๊ณต๊ฒฉ ํ๋กํ ํ์ ์ด ์ค๋น๋์์ต๋๋ค.
- watch_queue ์ด๋ฒคํธ ์ถ์ ํ์ ์์คํ
์ ์ทจ์ฝ์ (CVE-2022-0995)์ผ๋ก ์ธํด ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ฒํผ์ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ก๋ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ์ ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ์ํํ ์ ์์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ํด๋น ์ฌ์ฉ์์ ์ฝ๋๊ฐ ์ปค๋ ๊ถํ์ผ๋ก ์คํ๋ฉ๋๋ค. ์ทจ์ฝ์ ์ watch_queue_set_size() ํจ์์ ์กด์ฌํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋์ง ์์ ๊ฒฝ์ฐ์๋ ๋ชฉ๋ก์ ๋ชจ๋ ํฌ์ธํฐ๋ฅผ ์ง์ฐ๋ ค๋ ์๋์ ๊ด๋ จ๋์ด ์์ต๋๋ค. ๋๋ถ๋ถ์ Linux ๋ฐฐํฌํ์์ ์ฌ์ฉ๋๋ "CONFIG_WATCH_QUEUE=y" ์ต์
์ ์ฌ์ฉํ์ฌ ์ปค๋์ ๋น๋ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ์ทจ์ฝ์ ์ 11์ 21.10์ผ์ ์ถ๊ฐ๋ ์ปค๋ ๋ณ๊ฒฝ์์ ํด๊ฒฐ๋์์ต๋๋ค. Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux ํ์ด์ง์์ ๋ฐฐํฌํ์ ํจํค์ง ์ ๋ฐ์ดํธ ๊ฒ์๋ฅผ ๋ฐ๋ฅผ ์ ์์ต๋๋ค. ์ต์คํ๋ก์ ํ๋กํ ํ์ ์ ์ด๋ฏธ ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์ปค๋ 5.13.0-37์ด ํฌํจ๋ Ubuntu XNUMX์์ ์คํํ ๋ ๋ฃจํธ ์ก์ธ์ค ๊ถํ์ ์ป์ ์ ์์ต๋๋ค.
- IPv2022 ๋ฐ IPv27666๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ฉ๋๋ IPsec์ ๋ํ ESP ๋ณํ(๋ณด์ ํ์ด๋ก๋ ์บก์ํ) ๊ตฌํ๊ณผ ๊ด๋ จ๋ esp4 ๋ฐ esp6 ์ปค๋ ๋ชจ๋์ ์ทจ์ฝ์ (CVE-4-6)์
๋๋ค. ์ด ์ทจ์ฝ์ ์ผ๋ก ์ธํด ์ผ๋ฐ ๊ถํ์ ๊ฐ์ง ๋ก์ปฌ ์ฌ์ฉ์๊ฐ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋ฎ์ด์ฐ๊ณ ์์คํ
์์ ํด๋น ๊ถํ์ ์์น์ํฌ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ต๋ ๋ฉ์์ง ํฌ๊ธฐ๊ฐ skb_page_frag_refill ๊ตฌ์กฐ์ ํ ๋น๋ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํ์ฌ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ์์ ๋ ์ค์ ๋ฐ์ดํฐ ๊ฐ์ ์กฐ์ ๋ถ์กฑ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
ํด๋น ์ทจ์ฝ์ ์ 7์ 5.17์ผ ์ปค๋์์ ์์ ๋์์ต๋๋ค(5.16.15, 21.10 ๋ฑ์์ ์์ ๋จ). Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux ํ์ด์ง์์ ๋ฐฐํฌํ์ ํจํค์ง ์ ๋ฐ์ดํธ ๊ฒ์๋ฅผ ๋ฐ๋ฅผ ์ ์์ต๋๋ค. ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ Ubuntu Desktop 2์ ๋ํ ๋ฃจํธ ์ก์ธ์ค ๊ถํ์ ์ป์ ์ ์๋๋ก ํ๋ ์ต์คํ๋ก์์ ์์ ํ๋กํ ํ์ ์ด ์ด๋ฏธ GitHub์ ๊ฒ์๋์์ต๋๋ค. ์ฌ์ํ ๋ณ๊ฒฝ์ ํตํด ์ด ์ต์คํ๋ก์์ Fedora ๋ฐ Debian์์๋ ์๋ํ ๊ฒ์ด๋ผ๊ณ ์ฃผ์ฅ๋ฉ๋๋ค. ์ฃผ๋ชฉํ ์ ์ ์ด ์ต์คํ๋ก์์ ์๋ pwn2022own XNUMX ๋ํ๋ฅผ ์ํด ์ค๋น๋์ผ๋, ์ปค๋ ๊ฐ๋ฐ์๋ค์ด ์ด์ ๊ด๋ จ๋ ๋ฒ๊ทธ๋ฅผ ํ์ ํ๊ณ ์์ ํ๊ธฐ ๋๋ฌธ์ ์ทจ์ฝ์ ์ ์ธ๋ถ ๋ด์ฉ์ ๊ณต๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ ์ ์ด๋ค.
- nftables ํจํท ํํฐ์ ์๋์ ๋ณด์ฅํ๋ nf_tables ๋ชจ๋์ netfilter ํ์ ์์คํ
์ ์๋ ๋ ๊ฐ์ง ์ทจ์ฝ์ (CVE-2022-1015, CVE-2022-1016). ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ๊ถํ์ด ์๋ ๋ก์ปฌ ์ฌ์ฉ์๊ฐ ์คํ์ ํ ๋น๋ ๋ฒํผ์ ๋ํด ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ฐ๊ธฐ๋ฅผ ์ํํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค. ํน์ ๋ฐฉ์์ผ๋ก ํ์์ด ์ง์ ๋๊ณ nftables ๊ท์น์ ์ก์ธ์คํ ์ ์๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์ธ๋ฑ์ค์ ๊ฒ์ฌ ๋จ๊ณ ์ค์ ์ฒ๋ฆฌ๋๋ nftables ํํ์์ ์ฒ๋ฆฌํ ๋ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํฉ๋๋ค.
์ทจ์ฝ์ ์ ๊ฐ๋ฐ์๊ฐ "enum nft_registers reg"์ ๊ฐ์ด ๋จ์ผ ๋ฐ์ดํธ์์ ์์ํ๋ค๋ ์ฌ์ค๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ํน์ ์ต์ ํ๊ฐ ํ์ฑํ๋๋ฉด ์ปดํ์ผ๋ฌ๋ C89 ์ฌ์์ ๋ฐ๋ผ 32๋นํธ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. . ์ด ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ธํ๊ณ ํ ๋นํ ๋ ์ฌ์ฉ๋๋ ํฌ๊ธฐ๋ ๊ตฌ์กฐ์ฒด์ ์๋ ๋ฐ์ดํฐ์ ์ค์ ํฌ๊ธฐ์ ์ผ์นํ์ง ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ๊ตฌ์กฐ์ฒด์ ๊ผฌ๋ฆฌ๊ฐ ์คํ์ ํฌ์ธํฐ์ ๊ฒน์น๊ฒ ๋ฉ๋๋ค.
๋ฌธ์ ๋ ์ปค๋ ์์ค์์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ์ ์ฉ๋ ์ ์์ง๋ง ๊ณต๊ฒฉ์ด ์ฑ๊ณตํ๋ ค๋ฉด CLONE_NEWUSER ๋๋ CLONE_NEWNET ๊ถํ์ด ์๋ ๋ณ๋์ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์์ ์ป์ ์ ์๋ nftables์ ๋ํ ์ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค(์: ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ ๊ฒฝ์ฐ). ์ด ์ทจ์ฝ์ ์ ์๋ฅผ ๋ค์ด "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" ๋ชจ๋์์ ๋น๋ํ ๋ ํ์ฑํ๋๋ ์ปดํ์ผ๋ฌ์์ ์ฌ์ฉํ๋ ์ต์ ํ์๋ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค. Linux ์ปค๋ 5.12๋ถํฐ ์ทจ์ฝ์ ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
netfilter์ ๋ ๋ฒ์งธ ์ทจ์ฝ์ ์ nft_do_chain ํธ๋ค๋ฌ์์ ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ(use-after-free)์ ์ก์ธ์คํจ์ผ๋ก์จ ๋ฐ์ํ๋ฉฐ nftables ํํ์์ ์ฌ์ฉํ ์กฐ์์ ํตํด ์ฝ๊ณ ์ฌ์ฉํ ์ ์๋ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ์ด๊ธฐํ๋์ง ์์ ์์ญ ๋์ถ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ์ทจ์ฝ์ ์ ๊ฐ๋ฐํ๋ ๋์ ํฌ์ธํฐ ์ฃผ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. Linux ์ปค๋ 5.13๋ถํฐ ์ทจ์ฝ์ ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ทจ์ฝ์ ์ ์ต์ ์ปค๋ ํจ์น 5.17.1, 5.16.18, 5.15.32, 5.10.109, 5.4.188, 4.19.237, 4.14.274 ๋ฐ 4.9.309์์ ํด๊ฒฐ๋์์ต๋๋ค. Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux ํ์ด์ง์์ ๋ฐฐํฌํ์ ํจํค์ง ์ ๋ฐ์ดํธ ๊ฒ์๋ฅผ ๋ฐ๋ฅผ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํ์ธํ ์ฐ๊ตฌ์์ ๋ฐฐํฌํ์ด ์ปค๋ ํจํค์ง์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํ ํ ๋ฉฐ์น ๋ด์ ๊ฒ์๋ ์์ ์ธ ๋ ๊ฐ์ง ์ทจ์ฝ์ ์ ๋ํ ์๋ ๊ฐ๋ฅํ ์ต์คํ๋ก์ ์ค๋น๋ฅผ ๋ฐํํ์ต๋๋ค.
์ถ์ฒ : opennet.ru