BigSig, en sårbarhet i Mozilla NSS som kan tillate kjøring av kode

Nyhetene om identifisere en kritisk sårbarhet (allerede oppført under CVE-2021-43527) en settet med kryptografiske biblioteker NSS (Nettverkssikkerhetstjenester) fra Mozilla som kan føre til kjøring av ondsinnet kode når du behandler digitale DSA- eller RSA-PSS-signaturer spesifisert ved bruk av DER (Distinguished Encoding Rules).

Problemet manifesterer seg i applikasjoner som bruker NSS til å håndtere digitale signaturer CMS, S / MIME, PKCS # 7 og PKCS # 12, eller når du bekrefter sertifikater i distribusjoner TLS, X.509, OCSP og CRL. Sårbarheten kan oppstå i ulike klient- og serverapplikasjoner med TLS-, DTLS- og S/MIME-støtte, e-postklienter og PDF-lesere som bruker NSS CERT_VerifyCertificate ()-kallet for å bekrefte digitale signaturer.

LibreOffice, Evolution og Evince nevnes som eksempler på sårbare applikasjoner. Potensielt kan problemet også påvirke prosjekter som Pidgin, Apache OpenOffice, Suricata, Curl, blant andre.

Samtidig sårbarheten vises ikke i Firefox, Thunderbird og Tor Browser, som bruker et eget mozilla :: pkix-bibliotek for verifisering, som også er en del av NSS. De Chrome-baserte nettlesere (med mindre de var spesifikt kompilert med NSS), som brukte NSS frem til 2015, men deretter overført til BoringSSL, de er ikke berørt av problemet.

Sårbarheten skyldes en feil i sertifikatverifiseringskoden i vfy_CreateContext funksjonen til filen secvfy.c. Feilen viser seg både når klienten leser sertifikatet fra serveren som når serveren behandler klientens sertifikater.

Når du verifiserer en DER-kodet digital signatur, dekoder NSS signaturen til en buffer med fast størrelse og sender denne bufferen til PKCS # 11-modulen. Under etterbehandling, for DSA- og RSA-PSS-signaturer, blir størrelsen feil verifisert, noe som resulterer i som fører til overløp av den tildelte bufferen for VFYContextStr-strukturen, hvis størrelsen på den digitale signaturen overstiger 16384 biter (2048 byte er tildelt for bufferen, men det er ikke verifisert at signaturen kan være større).

Koden som inneholder sikkerhetsproblemet dateres tilbake til 2003, men det var ikke en trussel før refaktorisering i 2012. I 2017 ble den samme feilen gjort ved implementering av RSA-PSS-støtte. For å utføre et angrep er det ikke nødvendig med en ressurskrevende generering av visse nøkler for å få de nødvendige dataene, siden overløpet skjer i stadiet før verifiseringen av gyldigheten til den digitale signaturen. Out-of-bounds-delen av dataene skrives til et minneområde som inneholder funksjonspekere, noe som gjør det enkelt å lage fungerende utnyttelser.

Sårbarheten ble identifisert av Google Project Zero-forskere under eksperimenter med nye fuzzing testmetoder og er en god demonstrasjon av hvordan trivielle sårbarheter kan forbli uoppdaget i lang tid i et velprøvd kjent prosjekt.

Som for hovedproblemer som problemet ikke ble lagt merke til i lang tid:

  • NSS-stasjonsbiblioteket og fuzzing-testene ble ikke utført i sin helhet, men på enkeltkomponentnivå.
  • For eksempel ble koden for å dekode DER og behandle sertifikater verifisert separat; I løpet av fuzzingen kunne et sertifikat godt ha blitt innhentet, noe som førte til manifestasjonen av den aktuelle sårbarheten, men verifiseringen nådde ikke bekreftelseskoden og problemet ble ikke avslørt.
  • Under fuzzing-testene ble det satt strenge grenser for størrelsen på utdataene (10,000 10,000 byte) i fravær av slike begrensninger i NSS (mange strukturer i normal modus kan være større enn 2 24 byte, derfor kreves det mer inndata for å identifisere problemer. ). For full verifisering burde grensen vært 1 16 -XNUMX byte (XNUMX MB), som tilsvarer den maksimale størrelsen på et sertifikat som er tillatt i TLS.
  • Misforståelse om kodedekning ved uklare tester. Den sårbare koden ble aktivt testet, men ved bruk av fuzere, som ikke var i stand til å generere de nødvendige inndataene. For eksempel brukte fuzzer tls_server_target et forhåndsdefinert sett med ut-av-boksen sertifikater, som begrenset verifiseringen av sertifikatverifiseringskoden til kun TLS-meldinger og endringer i protokollstatus.

Endelig, Det er verdt å nevne at problemet med kodenavnet BigSig er løst i NSS 3.73 og NSS ESR 3.68.1 og oppdateringene av løsningen i pakkeform er allerede utgitt i de forskjellige distribusjonene: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, etc.

Hvis du vil vite mer om det, kan du konsultere følgende lenke.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.