BigSig, „Mozilla NSS“ pažeidžiamumas, galintis leisti vykdyti kodą

Naujienos apie nustatyti kritinį pažeidžiamumą (jau įtraukta į CVE-2021-43527) en kriptografinių bibliotekų rinkinys NSS (Tinklo saugos paslaugos) iš Mozilla, dėl kurios gali būti paleistas kenkėjiškas kodas apdorojant DSA arba RSA-PSS skaitmeninius parašus, nurodytus naudojant DER (Distinguished Encoding Rules).

Problema pasireiškia programose, kurios naudoja NSS skaitmeniniams parašams tvarkyti CMS, S / MIME, PKCS # 7 ir PKCS # 12, arba tikrinant sertifikatus diegimo metu TLS, X.509, OCSP ir CRL. Pažeidžiamumas gali atsirasti įvairiose klientų ir serverių programose su TLS, DTLS ir S/MIME palaikymu, el. pašto programose ir PDF peržiūros programose, kurios naudoja NSS CERT_VerifyCertificate () iškvietimą skaitmeniniams parašams patikrinti.

LibreOffice, Evolution ir Evince minimi kaip pažeidžiamų programų pavyzdžiai. Potencialiai problema taip pat gali turėti įtakos projektams, tokiems kaip Pidgin, Apache OpenOffice, Suricata, Curl ir kt.

Tuo pačiu metu pažeidžiamumas nerodomas „Firefox“, „Thunderbird“ ir „Tor“ naršyklėse, kurios patikrinimui naudoja atskirą mozilla :: pkix biblioteką, kuri taip pat yra NSS dalis. The „Chrome“ pagrįstos naršyklės (nebent jie buvo specialiai sudaryti naudojant NSS), kuris naudojo NSS iki 2015 m., bet vėliau buvo perkeltas į BoringSSL, jų neveikia problema.

Pažeidžiamumas atsirado dėl sertifikato patvirtinimo kodo, esančio vfy_CreateContext, klaidos failo secvfy.c funkcija. Klaida pasireiškia ir tada, kai klientas nuskaito sertifikatą iš serverio kaip tada, kai serveris apdoroja kliento sertifikatus.

Tikrinant DER koduotą skaitmeninį parašą, NSS dekoduoja parašą į fiksuoto dydžio buferį ir perduoda šį buferį PKCS # 11 moduliui. Apdorojant DSA ir RSA-PSS parašus, DSA ir RSA-PSS parašų dydis patikrinamas neteisingai, todėl kuriame VFYContextStr struktūrai skirto buferio perpildymas, jei skaitmeninio parašo dydis viršija 16384 bitus (buferiui skiriami 2048 baitai, bet nepatikrinta, kad parašas gali būti didesnis).

Kodas, kuriame yra pažeidžiamumas, datuojamas 2003 m, tačiau tai nekėlė grėsmės iki 2012 m. pertvarkymo. 2017 m. ta pati klaida buvo padaryta diegiant RSA-PSS palaikymą. Norint įvykdyti ataką, nereikia daug išteklių reikalaujančių tam tikrų raktų generuoti reikiamiems duomenims gauti, nes perpildymas įvyksta prieš skaitmeninio parašo galiojimo patikrinimą. Neribojama duomenų dalis įrašoma į atminties sritį, kurioje yra funkcijų rodyklės, todėl lengva kurti veikiančius išnaudojimus.

Pažeidžiamumą nustatė „Google Project Zero“ tyrėjai per eksperimentus su naujais neryškiais bandymo metodais ir yra geras įrodymas, kaip trivialus pažeidžiamumas gali likti nepastebimas ilgą laiką gerai žinomame gerai patikrintame projekte.

kaip pagrindinės problemos, dėl kurių problema buvo nepastebėta ilgam laikui:

  • NSS diskų biblioteka ir „fuzzing“ testai buvo atlikti ne visos, o atskirų komponentų lygiu.
  • Pavyzdžiui, kodas, skirtas iššifruoti DER ir apdoroti sertifikatus, buvo patikrintas atskirai; Atliekant apibendrinimą, galėjo būti gautas sertifikatas, dėl kurio atsirado atitinkamas pažeidžiamumas, tačiau jo patikrinimas nepasiekė patvirtinimo kodo ir problema nebuvo atskleista.
  • Atliekant „fuzzing“ testus, buvo nustatyti griežti išvesties dydžio apribojimai (10,000 10,000 baitų), nes tokių apribojimų NSS nebuvo (daugelis struktūrų įprastu režimu gali būti didesnės nei 2 24 baitų, todėl norint nustatyti problemas, reikia daugiau įvesties duomenų ). Norint visiškai patikrinti, riba turėjo būti 1 16 -XNUMX baitas (XNUMX MB), o tai atitinka didžiausią TLS leidžiamą sertifikato dydį.
  • Klaidinga nuomonė apie kodo aprėptį naudojant neaiškius testus. Pažeidžiamas kodas buvo aktyviai testuojamas, tačiau naudojant fuzerius, kurie negalėjo sugeneruoti reikiamų įvesties duomenų. Pavyzdžiui, „fuzzer tls_server_target“ naudojo iš anksto nustatytą „out-of-the-box“ sertifikatų rinkinį, kuris apribojo sertifikato patvirtinimo kodo patikrinimą tik TLS pranešimais ir protokolo būsenos pakeitimais.

Galiausiai, Verta paminėti, kad problema su kodiniu pavadinimu BigSig buvo ištaisyta NSS 3.73 ir NSS ESR 3.68.1 o sprendimo atnaujinimai paketo pavidalu jau buvo išleisti skirtinguose platinimuose: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD ir kt.

Jei norite apie tai sužinoti daugiau, galite pasikonsultuoti šią nuorodą.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.