BigSig, isang kahinaan sa Mozilla NSS na maaaring payagan ang pagpapatupad ng code

Ang balita tungkol sa pagtukoy ng isang kritikal na kahinaan (nakalista na sa ilalim ng CVE-2021-43527) en ang hanay ng mga cryptographic na aklatan NSS (Mga serbisyo sa seguridad ng network) mula sa Mozilla na maaaring humantong sa pagpapatupad ng malisyosong code kapag nagpoproseso ng mga digital na lagda ng DSA o RSA-PSS na tinukoy gamit ang DER (Distinguished Encoding Rules).

Ang problema nagpapakita ng sarili sa mga application na gumagamit ng NSS upang pangasiwaan ang mga digital na lagda CMS, S / MIME, PKCS # 7 at PKCS # 12, o kapag nagbe-verify ng mga sertipiko sa mga deployment TLS, X.509, OCSP at CRL. Maaaring lumitaw ang kahinaan sa iba't ibang mga application ng kliyente at server na may suporta sa TLS, DTLS, at S / MIME, mga email client, at mga PDF viewer na gumagamit ng tawag sa NSS CERT_VerifyCertificate () upang i-verify ang mga digital na lagda.

Ang LibreOffice, Evolution at Evince ay binanggit bilang mga halimbawa ng mga vulnerable na application. Posible, ang problema ay maaari ring makaapekto sa mga proyekto tulad ng Pidgin, Apache OpenOffice, Suricata, Curl, at iba pa.

Kasabay nito, ang kahinaan ay hindi lilitaw sa Firefox, Thunderbird at Tor Browser, na gumagamit ng hiwalay na mozilla :: pkix library para sa pag-verify, na bahagi rin ng NSS. Ang Mga browser na nakabatay sa Chrome (maliban kung ang mga ito ay partikular na pinagsama-sama sa NSS), na gumamit ng NSS hanggang 2015, ngunit pagkatapos ay dinala sa BoringSSL, hindi sila apektado ng problema.

Ang kahinaan ay dahil sa isang bug sa certificate verification code sa vfy_CreateContext function ng secvfy.c file. Ang error ay nagpapakita mismo pareho kapag binasa ng kliyente ang sertipiko mula sa server tulad ng kapag pinoproseso ng server ang mga sertipiko ng kliyente.

Kapag nagbe-verify ng DER-encoded digital signature, idini-decode ng NSS ang lagda sa isang fixed-size na buffer at ipinapasa ang buffer na ito sa module ng PKCS # 11. Sa panahon ng post-processing, para sa mga lagda ng DSA at RSA-PSS, ang laki ay hindi na-verify nang tama, na nagreresulta kung saan humahantong sa pag-apaw ng inilalaang buffer para sa istraktura ng VFYContextStr, kung ang laki ng digital signature ay lumampas sa 16384 bits (2048 bytes ang inilalaan para sa buffer, ngunit hindi na-verify na ang lagda ay maaaring mas malaki).

Ang code na naglalaman ng kahinaan ay nagsimula noong 2003, ngunit hindi ito banta hanggang sa refactoring noong 2012. Noong 2017, ang parehong pagkakamali ay ginawa noong ipinatupad ang suporta sa RSA-PSS. Upang magsagawa ng pag-atake, hindi kinakailangan ang isang resource-intensive na henerasyon ng ilang mga susi upang makuha ang kinakailangang data, dahil ang overflow ay nangyayari sa yugto bago ang pag-verify ng validity ng digital signature. Ang out-of-bounds na bahagi ng data ay isinulat sa isang memory area na naglalaman ng mga function pointer, na ginagawang madali ang paggawa ng mga gumaganang pagsasamantala.

Ang kahinaan ay natukoy ng mga mananaliksik ng Google Project Zero sa panahon ng mga eksperimento gamit ang mga bagong pamamaraan ng pag-uusig na pagsubok at ito ay isang magandang pagpapakita kung paano maaaring hindi matukoy ang mga walang kabuluhang kahinaan sa loob ng mahabang panahon sa isang malawak na nasubok na kilalang proyekto.

Tulad ng para sa pangunahing mga problema kung saan ang problema ay hindi napansin sa mahabang panahon:

  • Ang NSS drive library at fuzzing test ay hindi isinagawa sa kabuuan nito, ngunit sa antas ng indibidwal na bahagi.
  • Halimbawa, ang code para mag-decode ng DER at magproseso ng mga certificate ay hiwalay na na-verify; Sa kurso ng fuzzing, maaaring makakuha ng isang sertipiko, na humahantong sa pagpapakita ng kahinaan na pinag-uusapan, ngunit ang pag-verify nito ay hindi umabot sa verification code at ang problema ay hindi nahayag.
  • Sa panahon ng fuzzing na mga pagsusulit, ang mga mahigpit na limitasyon ay itinakda sa laki ng output (10,000 bytes) sa kawalan ng naturang mga limitasyon sa NSS (maraming mga istraktura sa normal na mode ay maaaring mas malaki kaysa sa 10,000 bytes, samakatuwid, upang matukoy ang mga problema , higit pang data ng input ang kinakailangan ). Para sa buong pag-verify, ang limitasyon ay dapat na 2 24 -1 byte (16 MB), na tumutugma sa maximum na laki ng isang certificate na pinapayagan sa TLS.
  • Maling kuru-kuro tungkol sa saklaw ng code sa pamamagitan ng mga malabong pagsubok. Ang mahinang code ay aktibong nasubok, ngunit gumagamit ng mga fuzer, na hindi nakabuo ng kinakailangang data ng pag-input. Halimbawa, gumamit ang fuzzer tls_server_target ng paunang natukoy na hanay ng mga out-of-the-box na certificate, na naglimita sa pag-verify ng code sa pag-verify ng certificate sa mga TLS na mensahe at pagbabago sa estado ng protocol.

Sa wakas, Ito ay nagkakahalaga ng pagbanggit na ang problema sa codename na BigSig ay naayos na sa NSS 3.73 at NSS ESR 3.68.1 at ang mga update ng solusyon sa package form ay nailabas na sa iba't ibang distribusyon: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, atbp.

Kung nais mong malaman ang tungkol dito, maaari kang kumunsulta ang sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.