UDP ํŒจํ‚ท์„ ๋ณด๋‚ด ์ถฉ๋Œ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” Linux ์ปค๋„์˜ ์ทจ์•ฝ์ 

๋ฆฌ๋ˆ…์Šค ์ปค๋„์—์„œ ํ™•์ธ๋จ ์ทจ์•ฝ์ (CVE-2019-11683)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ UDP ํŒจํ‚ท(์ฃฝ์Œ ํŒจํ‚ท)์„ ์ „์†กํ•˜์—ฌ ์›๊ฒฉ์œผ๋กœ ์„œ๋น„์Šค ๊ฑฐ๋ถ€๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” GRO(Generic Receiver Offload) ๊ธฐ์ˆ  ๊ตฌํ˜„ ์‹œ udp_gro_receive_segment ํ•ธ๋“ค๋Ÿฌ(net/ipv4/udp_offload.c) ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ œ๋กœ ํŒจ๋”ฉ์œผ๋กœ UDP ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋‚ด์šฉ์ด ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋นˆ ํŽ˜์ด๋กœ๋“œ).

๋ฌธ์ œ๋Š” ์ปค๋„์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค 5.0UDP ์†Œ์ผ“์— ๋Œ€ํ•œ GRO ์ง€์›์ด ๊ตฌํ˜„ ์ž‘๋…„ XNUMX์›”์— ์ตœ์‹  ์•ˆ์ • ์ปค๋„ ๋ฆด๋ฆฌ์Šค์— ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. GRO ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ํŒจํ‚ท์„ ๊ฐ ํŒจํ‚ท์„ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋” ํฐ ๋ธ”๋ก์œผ๋กœ ์ง‘๊ณ„ํ•˜์—ฌ ๋งŽ์€ ์ˆ˜์˜ ์ˆ˜์‹  ํŒจํ‚ท ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
TCP์˜ ๊ฒฝ์šฐ ์ด ํ”„๋กœํ† ์ฝœ์€ ํŽ˜์ด๋กœ๋“œ ์—†์ด ํŒจํ‚ท ์ง‘๊ณ„๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ์€ ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ๋งŒ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์ , ์•„์ง ์ˆ˜์ • ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฒŒ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์–ด์ œ ์—…๋ฐ์ดํŠธ 5.0.11 ์ˆ˜์ •). ํฌํ•จ๋˜์ง€). ๋ฐฐํฌ ํ‚คํŠธ์—์„œ ์ปค๋„ 5.0์ด ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜๋„๋ผ 30, ์šฐ๋ถ„ํˆฌ 19.04, ์•„์น˜ ๋ฆฌ๋ˆ…์Šค, ์  ํˆฌ ๋ฐ ๊ธฐํƒ€ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐฐํฌํŒ. ๋ฐ๋น„์•ˆ, ์šฐ๋ถ„ํˆฌ 18.10 ์ดํ•˜, RHEL/์„ผํŠธOS ะธ ์ˆ˜์„ธ/์˜คํ”ˆ์ˆ˜์„ธ ๋ฌธ์ œ๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์‚ฌ์šฉ Google์ด ๋งŒ๋“  ์ž๋™ํ™”๋œ ํผ์ง• ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ ์‹œ์ฆˆ๋ด‡ ๋ฐ ๋ถ„์„๊ธฐ ์นด์‚ฐ (KernelAddressSanitizer)๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์•ก์„ธ์Šคํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์กฐ์ž‘์„ ์œ„ํ•ด ์˜๋„๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ฝ”๋“œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋“ฑ ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ์‚ฌ์‹ค์„ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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