smtpd, ldapd ๋ฐ radiusd์—์„œ ๊ถŒํ•œ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ๋ฐ ์ธ์ฆ ์šฐํšŒ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” OpenBSD์˜ ์ทจ์•ฝ์„ฑ

ํ€„๋ฆฌ์Šค ์ปดํผ๋‹ˆ ๋…ธ์ถœ๋œ ๋„ค ์ทจ์•ฝ์  OpenBSD์—์„œ ์ด ์ค‘ ํ•˜๋‚˜๋Š” ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ธ์ฆ ์—†์ด ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์„ธ ๊ฐœ๋Š” ์‹œ์Šคํ…œ์—์„œ ๊ถŒํ•œ์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. Qualys ๋ณด๊ณ ์„œ๋Š” OpenBSD ๊ฐœ๋ฐœ์ž์˜ ์‹ ์†ํ•œ ๋Œ€์‘์— ์ฃผ๋ชฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฑฐ ะฒ ์˜คํ”ˆBSD 6.5 ะธ ์˜คํ”ˆBSD 6.6 ๊ฐœ๋ณ„ ํ†ต๋ณด ํ›„ 40์‹œ๊ฐ„ ์ด๋‚ด

์›๊ฒฉ์œผ๋กœ ์•…์šฉ ๊ฐ€๋Šฅํ•œ ์ทจ์•ฝ์ ์€ libc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ธ์ฆ ์ฒ˜๋ฆฌ๊ธฐ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์„ ์ •๋ ฌํ•˜๋Š” ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋ช…๋ น์ค„์—์„œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” /usr/libexec/auth/login_style ํ”„๋กœ๊ทธ๋žจ. ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ "-s service"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ login_style์„ ํ˜ธ์ถœํ•  ๋•Œ๋ฅผ ํฌํ•จํ•˜์—ฌ ํ”„๋กœํ† ์ฝœ ์ด๋ฆ„ ์ „๋‹ฌ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์•ž์— "-" ๋ฌธ์ž๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด login_style์ด ์‹คํ–‰๋  ๋•Œ ์ด ์ด๋ฆ„์ด ์˜ต์…˜์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์ฆ ์‹œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ "-schallenge" ๋˜๋Š” "-schallenge: passwd"๋ฅผ ์ง€์ •ํ•˜๋ฉด login_style์€ ์š”์ฒญ์„ ํ•ธ๋“ค๋Ÿฌ ์‚ฌ์šฉ ์š”์ฒญ์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. S/ํ‚ค.

๋ฌธ์ œ๋Š” login_style์˜ S/Key ํ”„๋กœํ† ์ฝœ์ด ํ˜•์‹์ ์œผ๋กœ๋งŒ ์ง€์›๋˜๊ณ  ์‹ค์ œ๋กœ๋Š” ์ธ์ฆ์„ฑ๊ณต ์‹ ํ˜ธ ์ถœ๋ ฅ๊ณผ ํ•จ๊ป˜ ๋ฌด์‹œ๋œ๋‹ค๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” "-schallenge" ์‚ฌ์šฉ์ž๋กœ ๊ฐ€์žฅํ•˜์—ฌ ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ณ  ์•”ํ˜ธ๋‚˜ ํ‚ค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฆ์„ ์œ„ํ•ด ์ผ๋ฐ˜ libc ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๊ฐ€ ์ž ์žฌ์ ์œผ๋กœ ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ์ฆ์„ ์šฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์€ smtpd(AUTH PLAIN), ldapd ๋ฐ radiusd์—์„œ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ์€ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ์ž์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜๋Š” ์ถ”๊ฐ€ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— sshd์—์„œ ์ž์ฒด์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ sshd๋Š” ์‹œ์Šคํ…œ์ด ์ทจ์•ฝ์„ฑ์— ์ทจ์•ฝํ•œ์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ฆ„ "-sresponse:passwd"์— ์•ก์„ธ์Šคํ•  ๋•Œ sshd๊ฐ€ login_passwd๊ฐ€ ํ˜ธ์ถœ(์ฑŒ๋ฆฐ์ง€)์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ณ  login_passwd๊ฐ€ ๋Œ€๊ธฐํ•˜๋ฏ€๋กœ ์—ฐ๊ฒฐ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ „์†ก์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค(์ด๋ฆ„ "-sresponse"๋Š” ์˜ต์…˜์œผ๋กœ ์‚ฌ์šฉ๋จ). ์ž ์žฌ์ ์ธ ๋กœ์ปฌ ๊ณต๊ฒฉ์ž๋Š” su ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ ์ธ์ฆ์„ ์šฐํšŒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ "-sresponse"๋ผ๋Š” ์ด๋ฆ„์„ ์ „๋‹ฌํ•˜๋ฉด getpwnam_r("-schallenge", ...) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ null ํฌ์ธํ„ฐ ๋ฐ˜ํ™˜์œผ๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. .

๊ธฐํƒ€ ์ทจ์•ฝ์ :

  • CVE-2019-19520 - ๊ทธ๋ฃน์„ "auth"๋กœ ๋ณ€๊ฒฝํ•˜๋Š” sgid ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” xlock ์œ ํ‹ธ๋ฆฌํ‹ฐ ์กฐ์ž‘์„ ํ†ตํ•œ ๋กœ์ปฌ ๊ถŒํ•œ ์ƒ์Šน. xlock ์ฝ”๋“œ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ์˜ ์žฌ์ •์˜๋Š” ์‚ฌ์šฉ์ž ID(setuid)๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ธˆ์ง€๋˜๋ฉฐ, ์ด๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ "LIBGL_DRIVERS_PATH"๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋กœ๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. "auth" ๊ทธ๋ฃน์œผ๋กœ ๊ถŒํ•œ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ํ›„.
  • CVE-2019-19522 - ์‹œ์Šคํ…œ์—์„œ S/Key ๋˜๋Š” YubiKey ์ธ์ฆ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ(๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์Œ) "auth" ๊ทธ๋ฃน์˜ ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฃจํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ xlock ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” "auth" ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ด ๋˜๋ฉด /etc/skey ๋ฐ /var/db/yubikey ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๊ฒฉ์ž๋Š” ์ƒˆ๋กœ์šด /etc/skey/root ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ S/Key๋ฅผ ํ†ตํ•œ ๋ฃจํŠธ ์ธ์ฆ์„ ์œ„ํ•œ ์ผํšŒ์„ฑ ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CVE-2019-19519 - su ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์กฐ์ž‘์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ์ œํ•œ์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ธ์ฆ ์‹œ๋„์˜ ์ฃผ๊ธฐ์  ๋ฐ˜๋ณต์„ ์˜๋ฏธํ•˜๋Š” "-L" ์˜ต์…˜์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ์ž ํด๋ž˜์Šค๋Š” ํ•œ ๋ฒˆ๋งŒ ์„ค์ •๋˜๋ฉฐ ํ›„์† ์‹œ๋„์—์„œ ์žฌ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋‹ค๋ฅธ ๊ณ„์ • ํด๋ž˜์Šค๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋กœ๊ทธ์ธ์„ ์ž…๋ ฅํ•˜๋ ค๋Š” ์ฒซ ๋ฒˆ์งธ ์‹œ๋„์—์„œ "su -l -L"์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ์‹œ๋„์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์ž์‹ ์„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ์‹œ๋„์—์„œ ์ง€์ •๋œ ์‚ฌ์šฉ์ž ํด๋ž˜์Šค์— ํ•ด๋‹นํ•˜๋Š” ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค ์ˆ˜ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ). ๋ฃจํŠธ ์‚ฌ์šฉ์ž๊ฐ€ ํœ  ๊ทธ๋ฃน์— ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ด ๋ฐฉ๋ฒ•์€ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํ•œ๋„๋ฅผ ๋นŒ๋ฆด ๋•Œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

์ถœ์ฒ˜ : opennet.ru