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

Vijesti o identifikovanje kritične ranjivosti (već naveden pod CVE-2021-43527) en skup kriptografskih biblioteka NSS (Mrežne sigurnosne usluge) 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 manifestira 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 serverskim 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 uticati i na projekte kao što su Pidgin, Apache OpenOffice, Suricata, Curl, između ostalih.

Istovremeno, ranjivost se ne pojavljuje u Firefoxu, Thunderbirdu i Tor Browseru, koji koriste zasebnu mozilla :: pkix biblioteku za verifikaciju, koja je također dio NSS-a. The Preglednici zasnovani na Chromeu (osim ako nisu posebno kompajlirani sa NSS-om), koji je koristio NSS do 2015. godine, ali je potom prebačen na BoringSSL, oni nisu pogođeni problemom.

Ranjivost je uzrokovana greškom u kodu za provjeru certifikata u vfy_CreateContext funkcija datoteke secvfy.c. Greška se manifestuje i kada klijent pročita sertifikat sa servera kao kada server obrađuje klijentove sertifikate.

Prilikom verifikacije digitalnog potpisa kodiranog DER-om, NSS dekodira potpis u bafer fiksne veličine i prosljeđuje ovaj bafer modulu PKCS # 11. Tokom naknadne obrade, za DSA i RSA-PSS potpise, veličina je netačno provjerena, što rezultira u kojoj dovodi do prelivanja dodijeljenog bafera za strukturu VFYContextStr, ako veličina digitalnog potpisa prelazi 16384 bita (za bafer je dodijeljeno 2048 bajtova, ali nije potvrđeno 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. Da bi se izvršio napad, nije potrebno generisanje određenih ključeva sa velikim resursima za dobijanje potrebnih podataka, jer se prelivanje dešava u fazi pre verifikacije validnosti digitalnog potpisa. Dio podataka izvan granica se upisuje u memorijsku oblast koja sadrži pokazivače funkcija, što olakšava kreiranje radnih eksploata.

Ranjivost su identifikovali istraživači Google Project Zero tokom eksperimenata sa novim fuzzing metodama testiranja i dobra je demonstracija kako trivijalne ranjivosti mogu ostati neotkrivene dugo vremena u dobro testiranom poznatom projektu.

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

  • NSS disk biblioteka i fuzing testovi nisu sprovedeni u celini, već na nivou pojedinačnih komponenti.
  • Na primjer, kod za dekodiranje DER i obrada certifikata je verificiran odvojeno; U toku fuzinga mogao se dobiti sertifikat koji bi doveo do ispoljavanja predmetne ranjivosti, ali njegova verifikacija nije stigla do verifikacionog koda i problem nije otkriven.
  • Tokom fuzzing testova postavljena su stroga ograničenja na veličinu izlaza (10,000 bajtova) u odsustvu takvih ograničenja u NSS-u (mnoge strukture u normalnom režimu mogu biti veće od 10,000 bajtova, stoga je za identifikaciju problema potrebno više ulaznih podataka ). Za potpunu verifikaciju, ograničenje je trebalo biti 2 24 -1 bajta (16 MB), što odgovara maksimalnoj veličini certifikata dozvoljenoj 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 je koristio unaprijed definirani skup gotovih certifikata, koji je ograničio verifikaciju koda za provjeru certifikata samo na TLS poruke i promjene stanja protokola.

Na kraju, Vrijedi napomenuti da je problem sa kodnim imenom BigSig popravljen u NSS 3.73 i NSS ESR 3.68.1 a ažuriranja rješenja u obliku paketa već su puštena 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 komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.