Linux Netfilter ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์ทจ์•ฝ์ 

๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” 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

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