์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰์„ ํ—ˆ์šฉํ•˜๋Š” Linux ์ปค๋„์˜ IPv6 ์Šคํƒ ์ทจ์•ฝ์ 

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€