์ธ์ฆ์„œ ์ฒ˜๋ฆฌ ์‹œ Mozilla NSS์˜ ์ฝ”๋“œ ์‹คํ–‰ ์ทจ์•ฝ์ 

Mozilla์—์„œ ๊ฐœ๋ฐœํ•œ ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ NSS(๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์„œ๋น„์Šค) ์„ธํŠธ์—์„œ ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์ (CVE-2021-43527)์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ DSA ๋˜๋Š” RSA-PSS ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ณต๊ฒฉ์ž ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DER ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•(๊ณ ์œ  ์ธ์ฝ”๋”ฉ ๊ทœ์น™). ์ฝ”๋“œ๋ช… BigSig๋ผ๋Š” ์ด ๋ฌธ์ œ๋Š” NSS 3.73 ๋ฐ NSS ESR 3.68.1์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์˜ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ๋Š” Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง Fedora์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” NSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CMS, S/MIME, PKCS #7 ๋ฐ PKCS #12 ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ TLS, X.509, OCSP ๋ฐ CRL ๊ตฌํ˜„์—์„œ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์€ TLS, DTLS ๋ฐ S/MIME์„ ์ง€์›ํ•˜๋Š” ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์ด๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ ๋ฐ NSS CERT_VerifyCertificate() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํ™•์ธํ•˜๋Š” PDF ๋ทฐ์–ด์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

LibreOffice, Evolution ๋ฐ Evince๋Š” ์ทจ์•ฝํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ˆ๋กœ ์–ธ๊ธ‰๋ฉ๋‹ˆ๋‹ค. ์ž ์žฌ์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋Š” Pidgin, Apache OpenOffice, Suricata, Curl, Chrony, Red Hat Directory Server, Red Hat Certificate System, Apache http ์„œ๋ฒ„์šฉ mod_nss, Oracle Communications Messaging Server, Oracle Directory Server Enterprise Edition๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒ€์ฆ์„ ์œ„ํ•ด NSS์—๋„ ํฌํ•จ๋œ ๋ณ„๋„์˜ mozilla::pkix ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Firefox, Thunderbird ๋ฐ Tor ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ทจ์•ฝ์ ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2015๋…„๊นŒ์ง€ NSS๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ดํ›„ BoringSSL๋กœ ์ „ํ™˜ํ•œ Chromium ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €(NSS๋กœ ํŠน๋ณ„ํžˆ ๊ตฌ์ถ•๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)๋„ ์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ secvfy.c ํŒŒ์ผ์˜ vfy_CreateContext ํ•จ์ˆ˜์— ์žˆ๋Š” ์ธ์ฆ์„œ ํ™•์ธ ์ฝ”๋“œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—์„œ ์ธ์ฆ์„œ๋ฅผ ์ฝ์„ ๋•Œ์™€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ชจ๋‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. DER๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํ™•์ธํ•  ๋•Œ NSS๋Š” ์„œ๋ช…์„ ๊ณ ์ • ํฌ๊ธฐ ๋ฒ„ํผ๋กœ ๋””์ฝ”๋”ฉํ•˜๊ณ  ํ•ด๋‹น ๋ฒ„ํผ๋ฅผ PKCS #11 ๋ชจ๋“ˆ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ ์ค‘์— DSA ๋ฐ RSA-PSS ์„œ๋ช…์— ๋Œ€ํ•œ ํฌ๊ธฐ๊ฐ€ ์ž˜๋ชป ํ™•์ธ๋˜์–ด ๋””์ง€ํ„ธ ์„œ๋ช…์˜ ํฌ๊ธฐ๊ฐ€ 16384๋น„ํŠธ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ VFYContextStr ๊ตฌ์กฐ์— ํ• ๋‹น๋œ ๋ฒ„ํผ์˜ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค(2048๋ฐ”์ดํŠธ๊ฐ€ ๋ฒ„ํผ์— ํ• ๋‹น๋˜์ง€๋งŒ ์„œ๋ช…์ด ๋” ํด ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)).

์ทจ์•ฝ์ ์ด ํฌํ•จ๋œ ์ฝ”๋“œ๋Š” 2003๋…„๊นŒ์ง€ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ 2012๋…„ ๋ฆฌํŒฉํ† ๋ง์ด ์ˆ˜ํ–‰๋  ๋•Œ๊นŒ์ง€๋Š” ์œ„ํ˜‘์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 2017๋…„์—๋„ RSA-PSS ์ง€์›์„ ๊ตฌํ˜„ํ•  ๋•Œ ๊ฐ™์€ ์‹ค์ˆ˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํŠน์ • ํ‚ค์˜ ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ์ƒ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋””์ง€ํ„ธ ์„œ๋ช…์˜ ์ •ํ™•์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์ „ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ„๋ฅผ ๋„˜๋Š” ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์€ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๊ธฐ๋ก๋˜๋ฏ€๋กœ ์ž‘์—… ์ต์Šคํ”Œ๋กœ์ž‡ ์ƒ์„ฑ์ด ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์ ์€ Google Project Zero์˜ ์—ฐ๊ตฌ์›๋“ค์ด ์ƒˆ๋กœ์šด ํผ์ง• ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ์‹คํ—˜ํ•˜๋Š” ๋™์•ˆ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฉฐ ๋„๋ฆฌ ํ…Œ์ŠคํŠธ๋œ ์ž˜ ์•Œ๋ ค์ง„ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์†Œํ•œ ์ทจ์•ฝ์ ์ด ์–ด๋–ป๊ฒŒ ์˜ค๋žซ๋™์•ˆ ๊ฐ์ง€๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ž˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • NSS ์ฝ”๋“œ๋Š” ์ตœ์ฒจ๋‹จ ํ…Œ์ŠคํŠธ ๋ฐ ์˜ค๋ฅ˜ ๋ถ„์„ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ™๋ จ๋œ ๋ณด์•ˆ ํŒ€์— ์˜ํ•ด ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. NSS์˜ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•˜๋ฉด ์ƒ๋‹นํ•œ ๋ณด์ƒ์„ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋งˆ๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • NSS๋Š” Google์˜ oss-fuzz ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์— ์ฐธ์—ฌํ•œ ์ตœ์ดˆ์˜ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์˜€์œผ๋ฉฐ Mozilla์˜ libFuzzer ๊ธฐ๋ฐ˜ ํผ์ง€ ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ๋„ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋Š” 2008๋…„๋ถ€ํ„ฐ Coverity ์„œ๋น„์Šค์— ์˜ํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง๋˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ •์  ๋ถ„์„๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 2015๋…„๊นŒ์ง€ NSS๋Š” Google Chrome์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ Mozilla์™€๋Š” ๋ณ„๊ฐœ๋กœ Google ํŒ€์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(2015๋…„๋ถ€ํ„ฐ Chrome์€ BoringSSL๋กœ ์ „ํ™˜ํ–ˆ์ง€๋งŒ NSS ๊ธฐ๋ฐ˜ ํฌํŠธ์— ๋Œ€ํ•œ ์ง€์›์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค).

๋ฌธ์ œ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์ฃผ์š” ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • NSS ๋ชจ๋“ˆํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํผ์ง• ํ…Œ์ŠคํŠธ๋Š” ์ „์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๊ณ  ๊ฐœ๋ณ„ ๊ตฌ์„ฑ ์š”์†Œ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, DER์„ ๋””์ฝ”๋”ฉํ•˜๊ณ  ์ธ์ฆ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋ณ„๋„๋กœ ๊ฒ€์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํผ์ง• ์ค‘์— ๋ฌธ์ œ์˜ ์ทจ์•ฝ์ ์„ ๋ฐœํ˜„์‹œํ‚ค๋Š” ์ธ์ฆ์„œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋‹น ๊ฒ€์‚ฌ๊ฐ€ ํ™•์ธ ์ฝ”๋“œ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ์ž์ฒด๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.
  • ํผ์ง• ํ…Œ์ŠคํŠธ ์ค‘์—๋Š” NSS์— ์œ ์‚ฌํ•œ ์ œํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ ์ถœ๋ ฅ ํฌ๊ธฐ(10000๋ฐ”์ดํŠธ)์— ์—„๊ฒฉํ•œ ์ œํ•œ์ด ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜ ๋ชจ๋“œ์˜ ๋งŽ์€ ๊ตฌ์กฐ๋Š” ํฌ๊ธฐ๊ฐ€ 10000๋ฐ”์ดํŠธ๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•จ). . ์ „์ฒด ํ™•์ธ์„ ์œ„ํ•ด์„œ๋Š” ์ œํ•œ์ด 224-1๋ฐ”์ดํŠธ(16MB)์—ฌ์•ผ ํ•˜๋ฉฐ ์ด๋Š” TLS์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ์ธ์ฆ์„œ ํฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ํผ์ฆˆ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์˜คํ•ด. ์ทจ์•ฝํ•œ ์ฝ”๋“œ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ ํ•„์š”ํ•œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” ํผ์ €๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด fuzzer tls_server_target์€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ธฐ์„ฑ ์ธ์ฆ์„œ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ ํ™•์ธ ์ฝ”๋“œ ํ™•์ธ์„ TLS ๋ฉ”์‹œ์ง€ ๋ฐ ํ”„๋กœํ† ์ฝœ ์ƒํƒœ ๋ณ€๊ฒฝ์œผ๋กœ๋งŒ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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