DNS ์บ์‹œ์— ๊ฐ€์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์ƒˆ๋กœ์šด SAD DNS ๊ณต๊ฒฉ

์บ˜๋ฆฌํฌ๋‹ˆ์•„ ๋Œ€ํ•™๊ต ๋ฆฌ๋ฒ„์‚ฌ์ด๋“œ(University of California, Riverside) ์—ฐ๊ตฌ์ง„์€ ์ž‘๋…„์— CVE-2021-20322 ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š” SAD DNS ๊ณต๊ฒฉ(CVE-2020-25705)์˜ ์ƒˆ๋กœ์šด ๋ณ€์ข…์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘๋…„์˜ ์ทจ์•ฝ์ ๊ณผ ์œ ์‚ฌํ•˜๋ฉฐ ํ™œ์„ฑ UDP ํฌํŠธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ICMP ํŒจํ‚ท์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๊ณต๊ฒฉ์—์„œ๋Š” ๊ฐ€์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ DNS ์„œ๋ฒ„ ์บ์‹œ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์บ์‹œ์— ์žˆ๋Š” ์ž„์˜ ๋„๋ฉ”์ธ์˜ IP ์ฃผ์†Œ๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ํ•ด๋‹น ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๊ณต๊ฒฉ์ž์˜ ์„œ๋ฒ„๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ์•ˆํ•œ ๋ฐฉ๋ฒ•์€ Linux์˜ ICMP ํŒจํ‚ท ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํŠน์„ฑ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด Linux ๋„คํŠธ์›Œํฌ ์Šคํƒ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ICMP ํŒจํ‚ท ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์„œ๋ฒ„๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” UDP ํฌํŠธ ๋ฒˆํ˜ธ ๊ฒฐ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์œ ์ถœ ์†Œ์Šค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์š”์ฒญ. ์ •๋ณด ์œ ์ถœ์„ ์ฐจ๋‹จํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ 5.15์›” ๋ง Linux ์ปค๋„์— ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ˆ˜์ • ์‚ฌํ•ญ์€ ์ปค๋„ XNUMX ๋ฐ ์ปค๋„์˜ LTS ๋ถ„๊ธฐ์— ๋Œ€ํ•œ XNUMX์›” ์—…๋ฐ์ดํŠธ์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ์ˆ˜์ • ์‚ฌํ•ญ์€ Jenkins Hash ๋Œ€์‹  ๋„คํŠธ์›Œํฌ ์บ์‹œ์—์„œ SipHash ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์˜ ์ทจ์•ฝ์  ์ˆ˜์ • ์ƒํƒœ๋Š” Debian, RHEL, Fedora, SUSE, Ubuntu ํŽ˜์ด์ง€์—์„œ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ™•์ธํ•œ ์—ฐ๊ตฌ์›์— ๋”ฐ๋ฅด๋ฉด OpenDNS ๋ฐ Quad38(9)์™€ ๊ฐ™์€ ์ธ๊ธฐ ์žˆ๋Š” DNS ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ๋ฐฉํ˜• ํ™•์ธ์ž ์ค‘ ์•ฝ 9.9.9.9%๊ฐ€ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฒฝ์šฐ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ BIND, Unbound, dnsmasq ๋“ฑ์˜ ํŒจํ‚ค์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Windows ๋ฐ BSD ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋Š” DNS ์„œ๋ฒ„์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด IP ์Šคํ‘ธํ•‘(Spoofing)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž์˜ ISP๋Š” ๊ฐ€์งœ ์†Œ์Šค IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ท์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SAD DNS ๊ณต๊ฒฉ์€ Dan Kaminsky๊ฐ€ 2008๋…„์— ์ œ์•ˆํ•œ ์ „ํ†ต์ ์ธ DNS ์บ์‹œ ์ค‘๋… ๋ฐฉ๋ฒ•์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด DNS ์„œ๋ฒ„์— ์ถ”๊ฐ€๋œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค. Kaminsky์˜ ๋ฐฉ๋ฒ•์€ 16๋น„ํŠธ์— ๋ถˆ๊ณผํ•œ DNS ์ฟผ๋ฆฌ ID ํ•„๋“œ์˜ ์ž‘์€ ํฌ๊ธฐ๋ฅผ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์Šคํ‘ธํ•‘์— ํ•„์š”ํ•œ ์˜ฌ๋ฐ”๋ฅธ DNS ํŠธ๋žœ์žญ์…˜ ์‹๋ณ„์ž๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด ์•ฝ 7000๊ฐœ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์•ฝ 140๋งŒ ๊ฐœ์˜ ๊ฐ€์ƒ ์‘๋‹ต์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณต๊ฒฉ์€ ๊ฐ€์ƒ์˜ IP ๋ฐ”์ธ๋”ฉ๊ณผ ๋‹ค์–‘ํ•œ DNS ํŠธ๋žœ์žญ์…˜ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DNS ํ™•์ธ์ž์—๊ฒŒ ๋Œ€๋Ÿ‰์˜ ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์‘๋‹ต์˜ ์บ์‹ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๋”๋ฏธ ์‘๋‹ต์—๋Š” ์•ฝ๊ฐ„ ์ˆ˜์ •๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„(1.example.com, 2.example.com, 3.example.com ๋“ฑ)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด DNS ์„œ๋ฒ„ ์ œ์กฐ์—…์ฒด๋Š” ํ™•์ธ ์š”์ฒญ์ด ์ „์†ก๋˜๋Š” ์†Œ์Šค ๋„คํŠธ์›Œํฌ ํฌํŠธ ์ˆ˜๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๋ฐฐํฌํ•˜์—ฌ ์‹๋ณ„์ž์˜ ํฌ๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ๋ณด์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์‘๋‹ต ์ „์†ก์„ ์œ„ํ•œ ๋ณดํ˜ธ๋ฅผ ๊ตฌํ˜„ํ•œ ํ›„ 16๋น„ํŠธ ์‹๋ณ„์ž๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ 64๊ฐœ์˜ ํฌํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ์„ ํƒ ์˜ต์…˜ ์ˆ˜๊ฐ€ 2^32๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

SAD DNS ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ํฌํŠธ ๋ฒˆํ˜ธ ๊ฒฐ์ •์„ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๊ณต๊ฒฉ์„ ๊ณ ์ „์ ์ธ Kaminsky ๋ฐฉ๋ฒ•์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ICMP ์‘๋‹ต ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋„คํŠธ์›Œํฌ ํฌํŠธ ํ™œ๋™์— ๋Œ€ํ•œ ์œ ์ถœ๋œ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ™œ์„ฑ์ธ UDP ํฌํŠธ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒ€์ƒ‰ ์˜ต์…˜ ์ˆ˜๋ฅผ 4๋ฐฐ(2^16 ๋Œ€์‹  2^16+2^32(131_072_4_294 ๋Œ€์‹  967_296))๋งŒํผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™œ์„ฑ UDP ํฌํŠธ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด ์œ ์ถœ์€ ์กฐ๊ฐํ™” ์š”์ฒญ(ICMP ์กฐ๊ฐํ™” ํ•„์š” ํ”Œ๋ž˜๊ทธ) ๋˜๋Š” ๋ฆฌ๋””๋ ‰์…˜(ICMP ๋ฆฌ๋””๋ ‰์…˜ ํ”Œ๋ž˜๊ทธ)์ด ํฌํ•จ๋œ ICMP ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ์˜ ๊ฒฐํ•จ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ‚ท์„ ๋ณด๋‚ด๋ฉด ๋„คํŠธ์›Œํฌ ์Šคํƒ์˜ ์บ์‹œ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋–ค UDP ํฌํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  ์–ด๋–ค ํฌํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค: DNS ํ™•์ธ์ž๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„ ํ™•์ธ์„ ์‹œ๋„ํ•  ๋•Œ ๋„๋ฉ”์ธ์„ ์ œ๊ณตํ•˜๋Š” DNS ์„œ๋ฒ„์— UDP ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ™•์ธ์ž๊ฐ€ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๊ณต๊ฒฉ์ž๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ์†Œ์Šค ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ™•์ธํ•˜๊ณ  ์—ฌ๊ธฐ์— ๊ฐ€์งœ ์‘๋‹ต์„ ๋ณด๋‚ด IP ์ฃผ์†Œ ์Šคํ‘ธํ•‘์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ์— ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” DNS ์„œ๋ฒ„๋ฅผ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DNS ํ™•์ธ์ž๋Š” ๊ฐ€์งœ ์‘๋‹ต์œผ๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๊ณ  ์–ผ๋งˆ ๋™์•ˆ ๋„๋ฉ”์ธ ์ด๋ฆ„์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  DNS ์š”์ฒญ์— ๋Œ€ํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋Œ€์ฒดํ•œ IP ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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