Linux ์ปค๋์ ๋คํธ์ํฌ ์คํ์ ์๋ ์ทจ์ฝ์ CVE-2023-6200์ ๋ํ ์ ๋ณด๊ฐ ๊ณต๊ฐ๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ํน์ ์ํฉ์์ ๋ก์ปฌ ๋คํธ์ํฌ์ ๊ณต๊ฒฉ์๊ฐ ํน๋ณํ ์ค๊ณ๋ ICMPv6 ํจํท์ ์ ์กํ์ฌ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค. ๋ผ์ฐํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ด๊ณ ํ๊ธฐ ์ํ RA(Router Advertising) ๋ฉ์์ง์ ๋๋ค.
์ด ์ทจ์ฝ์ ์ ๋ก์ปฌ ๋คํธ์ํฌ์์๋ง ์ ์ฉ๋ ์ ์์ผ๋ฉฐ IPv6 ์ง์์ด ํ์ฑํ๋๊ณ sysctl ๋งค๊ฐ๋ณ์ "net.ipv6.conf.<network_interface_name>.accept_ra"๊ฐ ํ์ฑํ๋ ์์คํ ์ ๋ํ๋ฉ๋๋ค("sysctl net.ipv6.conf ๋ช ๋ น์ผ๋ก ํ์ธํ ์ ์์). | grep accept_raโ) RHEL ๋ฐ Ubuntu์์๋ ์ธ๋ถ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ง๋ง ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค์ ๋ํด์๋ ํ์ฑํ๋์ด ๋์ผํ ์์คํ ์ผ๋ก๋ถํฐ์ ๊ณต๊ฒฉ์ ํ์ฉํฉ๋๋ค.
์ด ์ทจ์ฝ์ ์ ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ์ค๋๋ fib6_info ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ ๋ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ธํด ๋ฐ์ํ๋ฉฐ, ์ด๋ก ์ธํด ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ(use-after-free)์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๋ผ์ฐํฐ ๊ด๊ณ ๋ฉ์์ง(RA, Router Advertising)๊ฐ ํฌํจ๋ ICMPv6 ํจํท์ ์์ ํ๋ฉด ๋คํธ์ํฌ ์คํ์ ndisc_router_discovery() ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ด ํจ์๋ RA ๋ฉ์์ง์ ๊ฒฝ๋ก ์๋ช ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด fib6_set_expires() ํจ์๋ฅผ ํธ์ถํ๊ณ gc_link๋ฅผ ์ฑ์๋๋ค. ๊ตฌ์กฐ. ์ค๋๋ ํญ๋ชฉ์ ์ ๋ฆฌํ๋ ค๋ฉด fib6_clean_expires() ํจ์๋ฅผ ์ฌ์ฉํ์ธ์. ์ด ํจ์๋ gc_link์ ํญ๋ชฉ์ ๋ถ๋ฆฌํ๊ณ fib6_info ๊ตฌ์กฐ์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์๋๋ค. ์ด ๊ฒฝ์ฐ fib6_info ๊ตฌ์กฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ฏธ ํด์ ๋ ํน์ ์๊ฐ์ด ์์ง๋ง ์ด์ ๋ํ ๋งํฌ๋ gc_link ๊ตฌ์กฐ์ ๊ณ์ ๋จ์ ์์ต๋๋ค.
์ด ์ทจ์ฝ์ ์ ๋ธ๋์น 6.6๋ถํฐ ๋ํ๋ฌ์ผ๋ฉฐ ๋ฒ์ 6.6.9 ๋ฐ 6.7์์ ์์ ๋์์ต๋๋ค. ๋ฐฐํฌํ์ ์ทจ์ฝ์ ์์ ์ํ๋ Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware ํ์ด์ง์์ ํ๊ฐํ ์ ์์ต๋๋ค. 6.6 ์ปค๋์ด ํฌํจ๋ ํจํค์ง๋ฅผ ์ ๊ณตํ๋ ๋ฐฐํฌํ ์ค์์ Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva ๋ฐ Manjaro๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฐฐํฌํ์์๋ ์ค๋ฅ๊ฐ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ด์ ์ปค๋ ๋ถ๊ธฐ๊ฐ ์๋ ํจํค์ง๋ก ๋ฐฑํฌํธ๋ ์ ์์ต๋๋ค(์: ์๋ฅผ ๋ค์ด ๋ฐ๋น์์์๋ ์ปค๋ 6.5.13์ด ํฌํจ๋ ํจํค์ง๊ฐ ์ทจ์ฝํ๋ค๊ณ ์ธ๊ธ๋์ด ์์ง๋ง ๋ฌธ์ ๊ฐ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ 6.6 ๋ธ๋์น์ ๋ํ๋ฌ์ต๋๋ค. ๋ณด์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก IPv6๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋ "net.ipv0.conf.*.accept_ra" ๋งค๊ฐ๋ณ์๋ฅผ 6์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru