์›๊ฒฉ ๋ฐ ๋กœ์ปฌ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” OpenSMTPD์˜ ์ทจ์•ฝ์ 

ํ€„๋ฆฌ์Šค ์ปดํผ๋‹ˆ ๋…ธ์ถœ๋œ ๋ฉ”์ผ ์„œ๋ฒ„์˜ ๋˜ ๋‹ค๋ฅธ ์›๊ฒฉ ์น˜๋ช…์  ์ทจ์•ฝ์ (CVE-2020-8794) ์˜คํ”ˆSMTPD, OpenBSD ํ”„๋กœ์ ํŠธ์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. XNUMX์›” ๋ง์— ํ™•์ธ๋œ ๊ฒƒ๊ณผ ์œ ์‚ฌ ์ทจ์•ฝ์ , ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฃจํŠธ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ์„œ๋ฒ„์—์„œ ์ž„์˜์˜ ์…ธ ๋ช…๋ น์„ ์›๊ฒฉ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์  ์ œ๊ฑฐ ๋ฌธ์ œ์˜ ์˜คํ”ˆSMTPD 6.6.4p1.

๋ฌธ์ œ๋Š” ๋ฉ”์ผ์„ ์›๊ฒฉ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๋Š” ์ฝ”๋“œ(์ˆ˜์‹  ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์•„๋‹˜)์˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์€ ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ์„œ๋ฒ„ ์ธก ๋ชจ๋‘์—์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” OpenSMTPD๊ฐ€ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค(localhost)์˜ ์š”์ฒญ๋งŒ ์ˆ˜๋ฝํ•˜๊ณ  ๋ฉ”์ผ ๋ฉ”์‹œ์ง€๋ฅผ ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” OpenSMTPD์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜๋ ค๋ฉด ํŽธ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋™์•ˆ OpenSMTPD๊ฐ€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฉ”์ผ ์„œ๋ฒ„์™€์˜ ์„ธ์…˜์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ณต๊ฒฉ์ž๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ(MITM ๋˜๋Š” DNS ๋˜๋Š” BGP๋ฅผ ํ†ตํ•œ ๊ณต๊ฒฉ ์ค‘ ๋ฆฌ๋””๋ ‰์…˜)์— ๋ผ์–ด๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ).

์„œ๋ฒ„ ์ธก ๊ณต๊ฒฉ์˜ ๊ฒฝ์šฐ OpenSMTPD๋Š” ๋‹ค๋ฅธ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ฑฐ๋‚˜ ์ž„์˜ ์ด๋ฉ”์ผ(์˜ˆ: ์›น ์‚ฌ์ดํŠธ์˜ ์ฃผ์†Œ ํ™•์ธ ์–‘์‹)๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํƒ€์‚ฌ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณต๊ฒฉ์ž๊ฐ€ OpenSMTPD ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜์—ฌ (์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ) ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž์˜ ์„œ๋ฒ„์— ์˜ค๋ฅ˜ ์ฝ”๋“œ(๋ฐ”์šด์Šค)๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ด๋Š” ์‘๋‹ต์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” OpenSMTPD๊ฐ€ ๊ณต๊ฒฉ์ž์˜ ์„œ๋ฒ„์— ์•Œ๋ฆผ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐํ•  ๋•Œ ์ด ์ทจ์•ฝ์ ์„ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ ์ค‘์— ์ฃผ์ž…๋œ ์…ธ ๋ช…๋ น์€ OpenSMTPD๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ ๋ฃจํŠธ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํŒŒ์ผ์— ๋ฐฐ์น˜๋˜๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๋Š” OpenSMTPD๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ OpenSMTPD์˜ ์ถฉ๋Œ์„ ์‹œ์ž‘ํ•˜์—ฌ ๊ณต๊ฒฉ์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์ด ์„ค์ •๋œ ํ›„ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๋ฐ˜ํ™˜๋œ ์—ฌ๋Ÿฌ ์ค„ ์‘๋‹ต์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ์˜ mta_io() ํ•จ์ˆ˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: "250-ENHANCEDSTATUSCODES" ๋ฐ "250 HELP"). OpenSMTPD๋Š” ์ฒซ ๋ฒˆ์งธ ์ค„์— "-" ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋œ ์„ธ ์ž๋ฆฌ ์ˆซ์ž์™€ ํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ์„ธ ์ž๋ฆฌ ์ˆซ์ž์™€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์„ธ ์ž๋ฆฌ ์ˆซ์ž ๋’ค์— ๊ณต๋ฐฑ๊ณผ ๋‘ ๋ฒˆ์งธ ์ค„์˜ ํ…์ŠคํŠธ๊ฐ€ ์—†์œผ๋ฉด ํ…์ŠคํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ํฌ์ธํ„ฐ๊ฐ€ '\0' ๋ฌธ์ž ๋‹ค์Œ์˜ ๋ฐ”์ดํŠธ๋กœ ์„ค์ •๋˜๊ณ  ๋ ๋ถ€๋ถ„ ์ดํ›„์˜ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๊ฐ€ ์‹œ๋„๋ฉ๋‹ˆ๋‹ค. ๋ผ์ธ์„ ๋ฒ„ํผ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

OpenBSD ํ”„๋กœ์ ํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ทจ์•ฝ์  ์•…์šฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด ๊ฒŒ์‹œ๊ฐ€ 26์›” 2015์ผ๊นŒ์ง€ ์—ฐ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” 2018๋…„ 6.6์›”๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์กด์žฌํ–ˆ์œผ๋‚˜, 5.9๋…„ 10์›”๋ถ€ํ„ฐ ๋ฃจํŠธ ๊ถŒํ•œ์œผ๋กœ ์ฝ”๋“œ ์‹คํ–‰ ์ „ ์•…์šฉ์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค. ์—ฐ๊ตฌ์›๋“ค์€ OpenBSD 11, OpenBSD 31, Debian XNUMX, Debian XNUMX(ํ…Œ์ŠคํŠธ) ๋ฐ Fedora XNUMX์šฉ OpenSMTPD ๋นŒ๋“œ์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋œ ์ต์Šคํ”Œ๋กœ์ž‡์˜ ์ž‘์—… ํ”„๋กœํ† ํƒ€์ž…์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

OpenSMTPD์—์„œ๋„ ํ™•์ธ๋จ ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์„ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ทจ์•ฝ์ (CVE-2020-8793)์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹œ๊ฐ€ ํฌํ•จ๋œ /etc/master.passwd์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ํŒŒ์ผ์ด /var/spool/smtpd/ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋™์ผํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ์ผ์˜ ์ „์ฒด ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /proc/sys/fs/protected_hardlinks ๊ฐ’์ด 1๋กœ ์„ค์ •๋œ ๋งŽ์€ Linux ๋ฐฐํฌํŒ์—์„œ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋ถˆ์™„์ „ํ•œ ์ œ๊ฑฐ์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ะฟั€ะพะฑะปะตะผ, 2015๋…„ Qualys๊ฐ€ ์‹ค์‹œํ•œ ๊ฐ์‚ฌ์—์„œ ๋ฐํ˜”์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” "PATH=." ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ "_smtpq" ๊ทธ๋ฃน์˜ ๊ถŒํ•œ์œผ๋กœ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— makemap์ด๋ผ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค(smtpctl ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  makemap์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค). "_smtpq" ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํš๋“ํ•จ์œผ๋กœ์จ ๊ณต๊ฒฉ์ž๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด(์˜คํ”„๋ผ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  SIGSTOP ์‹ ํ˜ธ ๋ณด๋‚ด๊ธฐ)์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ ์ „์— ์˜คํ”„๋ผ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ์„ ํ•˜๋“œ ํŒŒ์ผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์„ ์ฝ์–ด์•ผ ํ•˜๋Š” ๋Œ€์ƒ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ.

Fedora 31์—์„œ๋Š” smtpctl ํ”„๋กœ์„ธ์Šค์— setgid smtpq ํ”Œ๋ž˜๊ทธ ๋Œ€์‹  setgid ๋ฃจํŠธ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žฅ์ฐฉ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ๋ฃจํŠธ ๊ทธ๋ฃน์˜ ๊ถŒํ•œ์„ ์ฆ‰์‹œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์œผ๋ฉด /var/lib/sss/mc/passwd์˜ ๋‚ด์šฉ์„ ๋ฎ์–ด์“ฐ๊ณ  ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ „์ฒด ๋ฃจํŠธ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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