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