OpenSSL 3.0.1 ์—…๋ฐ์ดํŠธ๋กœ ์ทจ์•ฝ์  ์ˆ˜์ •

OpenSSL ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 3.0.1 ๋ฐ 1.1.1m์˜ ์ˆ˜์ • ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 3.0.1์€ ์ทจ์•ฝ์ (CVE-2021-4044)์„ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ ๋‘ ๋ฆด๋ฆฌ์Šค ๋ชจ๋‘ ์•ฝ XNUMX๊ฐœ์˜ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์ ์€ SSL/TLS ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„์— ์กด์žฌํ•˜๋ฉฐ libssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌ๋œ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ๋œ X509_verify_cert() ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋œ ๋ถ€์ •์ ์ธ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฒ„ํผ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋‚ด๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์Œ์ˆ˜ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด SSL_connect() ๋ฐ SSL_do_handshake()์™€ ๊ฐ™์€ I/O ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ›„์† ํ˜ธ์ถœ์€ ์‹คํŒจ ๋ฐ SSL_ERROR_WANT_RETRY_VERIFY ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด์ „์— SSL_CTX_set_cert_verify_callback()์„ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐ˜ํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ SSL_CTX_set_cert_verify_callback()์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— SSL_ERROR_WANT_RETRY_VERIFY ์˜ค๋ฅ˜ ๋ฐœ์ƒ์ด ์ž˜๋ชป ํ•ด์„๋˜์–ด ์ถฉ๋Œ, ๋ฃจํ”„ ๋˜๋Š” ๊ธฐํƒ€ ์ž˜๋ชป๋œ ์‘๋‹ต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” OpenSSL 3.0์˜ ๋‹ค๋ฅธ ๋ฒ„๊ทธ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฐ€์žฅ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋Š” X509_verify_cert()์—์„œ "Subject Alternative Name" ํ™•์žฅ์ž๊ฐ€ ์—†์ง€๋งŒ ์‚ฌ์šฉ ์ œํ•œ์— ์ด๋ฆ„ ๋ฐ”์ธ๋”ฉ์ด ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•ด ์ธ์ฆ์„œ ์ฒ˜๋ฆฌ ๋ฐ TLS ์„ธ์…˜ ์„ค์ •์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ จ ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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