Exim์˜ ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด ๊ณต๊ฐœ

๊ฒŒ์‹œ ๋จ ๊ต์ • ๋ฆด๋ฆฌ์Šค ์˜ˆ์ œ 4.92.2 ํฌ๋ฆฌํ‹ฐ์ปฌ ์ œ๊ฑฐ์™€ ํ•จ๊ป˜ ์ทจ์•ฝ์  (CVE-2019-15846), ๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๊ณต๊ฒฉ์ž๊ฐ€ ์›๊ฒฉ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” TLS ์ง€์›์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋‚˜ ์ˆ˜์ •๋œ โ€‹โ€‹๊ฐ’์„ SNI์— ์ „๋‹ฌํ•˜์—ฌ ์•…์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์  ํ™•์ธ๋จ ํ€„๋ฆฌ์Šค์— ์˜ํ•ด.

๋ฌธ์ œ ์„ ๋ฌผ ๋ฌธ์ž์—ด์˜ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ฒ˜๋ฆฌ๊ธฐ(string_interpret_escape() string.c)์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ๋ฌธ์ž์—ด ๋์— ์žˆ๋Š” '\' ๋ฌธ์ž๊ฐ€ ๋„ ๋ฌธ์ž('\0') ์ด์ „์— ํ•ด์„๋˜์–ด ์ด์Šค์ผ€์ดํ”„๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์Šค์ผ€์ดํ”„ ์‹œ ์‹œํ€€์Šค '\'์™€ ๋‹ค์Œ null ์ค„ ๋ ์ฝ”๋“œ๋Š” ๋‹จ์ผ ๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ  ํฌ์ธํ„ฐ๋Š” ์ค„์˜ ์—ฐ์†์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ์ค„ ์™ธ๋ถ€์˜ ๋ฐ์ดํ„ฐ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.

string_interpret_escape()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋Š” ์‹ค์ œ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์ˆ˜๋ฅผ ์œ„ํ•œ ๋ฒ„ํผ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๋…ธ์ถœ๋œ ํฌ์ธํ„ฐ๋Š” ๋ฒ„ํผ ๊ฒฝ๊ณ„ ์™ธ๋ถ€ ์˜์—ญ์—์„œ ๋๋‚ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ• ๋‹น๋œ ๋ฒ„ํผ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ์˜์—ญ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด์Šค์ผ€์ดํ”„๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด์„ ์“ฐ๋ ค๊ณ  ํ•˜๋ฉด ๋ฒ„ํผ์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„œ ์“ฐ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ๋Š” ์„œ๋ฒ„์— ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ๋•Œ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ๋ฐ์ดํ„ฐ๋ฅผ SNI๋กœ ์ „์†กํ•˜์—ฌ ์ทจ์•ฝ์ ์„ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ ์ธ์ฆ์„ ์œ„ํ•ด ๊ตฌ์„ฑ๋œ ๊ตฌ์„ฑ์—์„œ ํ”ผ์–ด๋“œn ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ด ๋ฌธ์ œ๋ฅผ ์•…์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ถ€ํ„ฐ SNI, Peerdn์„ ํ†ตํ•œ ๊ณต๊ฒฉ ๊ฐ€๋Šฅ ์˜ˆ์ œ 4.80, ์—ฌ๊ธฐ์„œ๋Š” string_unprinting() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Peerdn ๋ฐ SNI ๋‚ด์šฉ์„ ์ธ์‡„ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.

Glibc๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Linux ์‹œ์Šคํ…œ์˜ i386 ๋ฐ amd64 ์•„ํ‚คํ…์ฒ˜์—์„œ ์‹คํ–‰๋˜๋Š” SNI๋ฅผ ํ†ตํ•œ ๊ณต๊ฒฉ์„ ์œ„ํ•œ ์ต์Šคํ”Œ๋กœ์ž‡ ํ”„๋กœํ† ํƒ€์ž…์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ต์Šคํ”Œ๋กœ์ž‡์€ ํž™ ์˜์—ญ์— ๋ฐ์ดํ„ฐ ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ ํŒŒ์ผ ์ด๋ฆ„์ด ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์€ "/../../../../../../../../etc/passwd"๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋ณด๋‚ธ ์‚ฌ๋žŒ์˜ ์ฃผ์†Œ๊ฐ€ ํฌํ•จ๋œ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์“ฐ๊ณ  ๋จผ์ € ๋กœ๊ทธ์— ์ €์žฅ๋˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์— ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌํŒ์—์„œ ๋ฆด๋ฆฌ์Šค๋œ ์ทจ์•ฝ์„ฑ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ ๋ฐ๋น„์•ˆ, Ubuntu, ํŽ˜๋„๋ผ, ์ˆ˜์„ธ/์˜คํ”ˆ์ˆ˜์„ธ ะธ FreeBSD์˜. RHEL ๋ฐ CentOS ๋ฌธ์ œ ๋ฏผ๊ฐํ•˜์ง€ ์•Š๋‹ค, Exim์€ ์ผ๋ฐ˜ ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค( EPEL ะพะฑะฝะพะฒะปะตะฝะธะต ์ด๋ฏธ ํ˜•์„ฑ, ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ฐฐ์น˜๋˜์ง€ ์•Š์Œ ๊ณต๊ฐœ ์ €์žฅ์†Œ๋กœ). Exim ์ฝ”๋“œ์—์„œ ๋ฌธ์ œ๋Š” ํ•œ ์ค„๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์ , ๋ฐฑ์Šฌ๋ž˜์‹œ๊ฐ€ ์ค„ ๋์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ด์Šค์ผ€์ดํ”„ ํšจ๊ณผ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ TLS ์ง€์›์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ACL ์„น์…˜ โ€œacl_smtp_mailโ€:

๊ฑฐ๋ถ€ ์กฐ๊ฑด = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
๊ฑฐ๋ถ€ ์กฐ๊ฑด = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

์ถœ์ฒ˜ : opennet.ru

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