BigSig, ranljivost v Mozilla NSS, ki bi lahko omogočila izvajanje kode

Novice o prepoznavanje kritične ranljivosti (že naveden pod CVE-2021-43527) en nabor kriptografskih knjižnic NSS (omrežne varnostne storitve) iz Mozille, ki bi lahko privedla do izvajanja zlonamerne kode pri obdelavi digitalnih podpisov DSA ali RSA-PSS, določenih z uporabo DER (Distinguished Encoding Rules).

Problem se kaže v aplikacijah, ki uporabljajo NSS za obdelavo digitalnih podpisov CMS, S/MIME, PKCS #7 in PKCS #12, ali pri preverjanju potrdil pri uvajanju TLS, X.509, OCSP in CRL. Ranljivost se lahko pojavi v različnih odjemalskih in strežniških aplikacijah s podporo za TLS, DTLS in S / MIME, e-poštnih odjemalcih in pregledovalnikih PDF, ki uporabljajo klic NSS CERT_VerifyCertificate () za preverjanje digitalnih podpisov.

LibreOffice, Evolution in Evince so omenjeni kot primeri ranljivih aplikacij. Potencialno lahko težava med drugim vpliva tudi na projekte, kot so Pidgin, Apache OpenOffice, Suricata, Curl.

Hkrati ranljivost se ne pojavi v Firefoxu, Thunderbirdu in brskalniku Tor, ki za preverjanje uporabljajo ločeno knjižnico mozilla :: pkix, ki je prav tako del NSS. The Brskalniki, ki temeljijo na Chromu (razen če so bili posebej sestavljeni z NSS), ki je uporabljal NSS do leta 2015, nato pa prenesen na BoringSSL, nanje problem ne vpliva.

Ranljivost je posledica napake v kodi za preverjanje potrdila v vfy_CreateContext funkcijo datoteke secvfy.c. Napaka se pojavi tako, ko odjemalec prebere potrdilo s strežnika kot takrat, ko strežnik obdeluje odjemalčeva potrdila.

Pri preverjanju digitalnega podpisa, kodiranega z DER, NSS dekodira podpis v medpomnilnik fiksne velikosti in ga posreduje modulu PKCS # 11. Med naknadno obdelavo je za podpise DSA in RSA-PSS velikost napačno preverjena, kar povzroči pri katerem pride do prelivanja dodeljenega medpomnilnika za strukturo VFYContextStr, če velikost digitalnega podpisa presega 16384 bitov (vmesniku je dodeljenih 2048 bajtov, ni pa preverjeno, da je podpis lahko večji).

Koda, ki vsebuje ranljivost, sega v leto 2003, vendar do preoblikovanja leta 2012 ni bila grožnja. Leta 2017 je bila enaka napaka storjena pri implementaciji podpore RSA-PSS. Za izvedbo napada generiranje določenih ključev, ki zahteva veliko sredstev, ni potrebno za pridobitev potrebnih podatkov, saj pride do prelivanja v fazi pred preverjanjem veljavnosti digitalnega podpisa. Del podatkov izven meja je zapisan v pomnilniško območje, ki vsebuje kazalce funkcij, kar olajša ustvarjanje delovnih podvigov.

Ranljivost so ugotovili raziskovalci Google Project Zero med eksperimenti z novimi metodami fuzzing testiranja in je dober prikaz, kako lahko trivialne ranljivosti dolgo časa ostanejo neopažene v dobro preizkušenem znanem projektu.

Kar se tiče glavne težave, pri katerih je težava ostala neopažena za dolgo časa:

  • Knjižnica pogona NSS in testi fuzziranja niso bili izvedeni v celoti, temveč na ravni posameznih komponent.
  • Na primer, koda za dekodiranje DER in potrdila za obdelavo je bila preverjena ločeno; Med fuzziranjem bi bilo mogoče pridobiti potrdilo, ki bi pripeljalo do manifestacije zadevne ranljivosti, vendar njegovo preverjanje ni doseglo verifikacijske kode in težava ni bila razkrita.
  • Med testi fuzziranja so bile določene stroge omejitve glede velikosti izhoda (10,000 bajtov) v odsotnosti takšnih omejitev v NSS (številne strukture v normalnem načinu so lahko večje od 10,000 bajtov, zato je za odkrivanje težav potrebno več vhodnih podatkov ). Za popolno preverjanje bi morala biti omejitev 2 24 -1 bajtov (16 MB), kar ustreza največji dovoljeni velikosti potrdila v TLS.
  • Napačno prepričanje o pokritosti kode s testi fuzziranja. Ranljiva koda je bila aktivno testirana, vendar z uporabo fuzerjev, ki niso mogli ustvariti zahtevanih vhodnih podatkov. Na primer, fuzzer tls_server_target je uporabil vnaprej določen nabor že pripravljenih potrdil, ki je omejevalo preverjanje kode za preverjanje potrdila samo na sporočila TLS in spremembe stanja protokola.

Končno, Omeniti velja, da je bila težava s kodnim imenom BigSig odpravljena v NSS 3.73 in NSS ESR 3.68.1 in posodobitve rešitve v obliki paketa so že izdane v različnih distribucijah: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD itd.

Če želite o tem izvedeti več, se lahko posvetujete naslednjo povezavo.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.