BigSig, ranjivost u Mozilla NSS koja bi mogla omogućiti izvršavanje koda

Vijest o identificiranje kritične ranjivosti (već naveden pod CVE-2021-43527) en skup kriptografskih biblioteka NSS (Sigurnosne usluge mreže) od Mozille što bi moglo dovesti do izvršenja zlonamjernog koda prilikom obrade digitalnih potpisa DSA ili RSA-PSS specificiranih korištenjem DER (Distinguished Encoding Rules).

problem očituje se u aplikacijama koje koriste NSS za rukovanje digitalnim potpisima CMS, S/MIME, PKCS #7 i PKCS #12, ili prilikom provjere certifikata u implementacijama TLS, X.509, OCSP i CRL. Ranjivost bi se mogla pojaviti u različitim klijentskim i poslužiteljskim aplikacijama s podrškom za TLS, DTLS i S/MIME, klijentima e-pošte i preglednicima PDF-a koji koriste NSS CERT_VerifyCertificate () poziv za provjeru digitalnih potpisa.

LibreOffice, Evolution i Evince spominju se kao primjeri ranjivih aplikacija. Potencijalno, problem može utjecati i na projekte kao što su Pidgin, Apache OpenOffice, Suricata, Curl, između ostalih.

U isto vrijeme, ranjivost se ne pojavljuje u Firefoxu, Thunderbirdu i Tor Browseru, koji za provjeru koriste zasebnu biblioteku mozilla :: pkix, koja je također dio NSS-a. The Preglednici temeljeni na Chromeu (osim ako nisu posebno sastavljeni s NSS-om), koji je koristio NSS do 2015., ali je potom prebačen na BoringSSL, nisu zahvaćeni problemom.

Ranjivost je posljedica greške u kodu za provjeru certifikata u vfy_CreateContext funkciju datoteke secvfy.c. Pogreška se očituje i kada klijent pročita certifikat s poslužitelja kao kada poslužitelj obrađuje klijentove certifikate.

Prilikom provjere digitalnog potpisa kodiranog DER-om, NSS dekodira potpis u međuspremnik fiksne veličine i prosljeđuje taj međuspremnik modulu PKCS # 11. Tijekom naknadne obrade, za DSA i RSA-PSS potpise, veličina je netočno provjerena, što rezultira u kojem dolazi do prelijevanja dodijeljenog međuspremnika za strukturu VFYContextStr, ako veličina digitalnog potpisa prelazi 16384 bita (za međuspremnik je dodijeljeno 2048 bajtova, ali nije provjereno da potpis može biti veći).

Šifra koja sadrži ranjivost datira iz 2003. godine, ali to nije bila prijetnja sve do refaktoriranja 2012. U 2017. je napravljena ista greška prilikom implementacije RSA-PSS podrške. Za izvođenje napada nije potrebna generiranje određenih ključeva s velikim resursima za dobivanje potrebnih podataka, budući da se prelijevanje događa u fazi prije provjere valjanosti digitalnog potpisa. Dio podataka izvan granica zapisuje se u memorijsko područje koje sadrži pokazivače funkcija, što olakšava stvaranje radnih eksploata.

Ranjivost su identificirali istraživači Google Project Zero tijekom eksperimenata s novim metodama fuzzing testiranja i dobra je demonstracija kako trivijalne ranjivosti mogu dugo ostati neotkrivene u naširoko testiranom poznatom projektu.

Što se tiče glavni problemi za koje je problem ostao neprimijećen dugo vremena:

  • NSS disk biblioteka i fuzzing testovi nisu provedeni u cijelosti, već na razini pojedinačnih komponenti.
  • Na primjer, kod za dekodiranje DER-a i certifikata za obradu provjereni su zasebno; Tijekom fuzziranja mogao se dobiti certifikat koji bi doveo do ispoljavanja predmetne ranjivosti, ali njegova provjera nije stigla do verifikacijskog koda i problem nije otkriven.
  • Tijekom fuzzing testova postavljena su stroga ograničenja na veličinu izlaza (10,000 bajtova) u nedostatku takvih ograničenja u NSS-u (mnoge strukture u normalnom načinu rada mogle bi biti veće od 10,000 bajtova, stoga je za identificiranje problema potrebno više ulaznih podataka ). Za potpunu provjeru ograničenje je trebalo biti 2 24 -1 bajta (16 MB), što odgovara maksimalnoj veličini certifikata dopuštenoj u TLS-u.
  • Zabluda o pokrivenosti koda fuzzing testovima. Ranjivi kod je aktivno testiran, ali korištenjem fuzera, koji nisu mogli generirati potrebne ulazne podatke. Na primjer, fuzzer tls_server_target koristio je unaprijed definirani skup gotovih certifikata, koji je provjeru koda za provjeru certifikata ograničio samo na TLS poruke i promjene stanja protokola.

Konačno, Vrijedi spomenuti da je problem s kodnim imenom BigSig riješen u NSS 3.73 i NSS ESR 3.68.1 a ažuriranja rješenja u obliku paketa već su objavljena u različitim distribucijama: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, itd.

Ako želite znati više o tome, možete se posavjetovati sljedeći link.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.