BigSig, Mozilla NSS:n haavoittuvuus, joka voi sallia koodin suorittamisen

Uutinen aiheesta kriittisen haavoittuvuuden tunnistaminen (jo lueteltu kohdassa CVE-2021-43527) en joukko kryptografisia kirjastoja NSS (Verkon suojauspalvelut) Mozillasta, mikä voi johtaa haitallisen koodin suorittamiseen kun käsitellään DER:llä (Distinguished Encoding Rules) määritettyjä digitaalisia DSA- tai RSA-PSS-allekirjoituksia.

Ongelma näkyy sovelluksissa, jotka käyttävät NSS:ää digitaalisten allekirjoitusten käsittelyyn CMS, S / MIME, PKCS # 7 ja PKCS # 12, tai kun varmenteita varmistetaan käyttöönotoissa TLS, X.509, OCSP ja CRL. Haavoittuvuus voi ilmetä erilaisissa asiakas- ja palvelinsovelluksissa, joissa on TLS-, DTLS- ja S/MIME-tuki, sähköpostiohjelmat ja PDF-katseluohjelmat, jotka käyttävät NSS CERT_VerifyCertificate () -kutsua digitaalisten allekirjoitusten vahvistamiseen.

LibreOffice, Evolution ja Evince mainitaan esimerkkeinä haavoittuvista sovelluksista. Mahdollisesti ongelma voi vaikuttaa myös projekteihin, kuten Pidgin, Apache OpenOffice, Suricata, Curl jne.

Samalla haavoittuvuus ei näy Firefoxissa, Thunderbirdissä ja Tor-selaimessa, jotka käyttävät todentamiseen erillistä mozilla :: pkix -kirjastoa, joka on myös osa NSS:ää. The Chrome-pohjaiset selaimet (ellei niitä ole erityisesti koottu NSS:n kanssa), joka käytti NSS:ää vuoteen 2015 asti, mutta siirtyi sitten BoringSSL:ään, ongelma ei vaikuta heihin.

Haavoittuvuus johtuu vfy_CreateContextin varmenteen vahvistuskoodin virheestä secvfy.c-tiedoston toiminto. Virhe ilmenee sekä silloin, kun asiakas lukee varmenteen palvelimelta kuten silloin, kun palvelin käsittelee asiakkaan varmenteita.

Vahvistaessaan DER-koodattua digitaalista allekirjoitusta NSS purkaa allekirjoituksen kiinteän kokoiseksi puskuriksi ja välittää tämän puskurin PKCS # 11 -moduulille. Jälkikäsittelyn aikana DSA- ja RSA-PSS-allekirjoitusten koko tarkistetaan väärin, mikä johtaa jossa johtaa VFYContextStr-rakenteen allokoidun puskurin ylivuotoon, jos digitaalisen allekirjoituksen koko ylittää 16384 bittiä (puskurille on varattu 2048 tavua, mutta ei ole varmistettu, että allekirjoitus voi olla suurempi).

Haavoittuvuuden sisältävä koodi on peräisin vuodelta 2003, mutta se ei ollut uhka ennen refaktorointia vuonna 2012. Vuonna 2017 tehtiin sama virhe RSA-PSS-tuen käyttöönotossa. Hyökkäyksen toteuttaminen ei edellytä resurssiintensiivistä tiettyjen avainten generointia tarvittavien tietojen saamiseksi, koska ylivuoto tapahtuu digitaalisen allekirjoituksen oikeellisuuden varmistusta edeltävässä vaiheessa. Tiedon rajojen ulkopuolella oleva osa kirjoitetaan muistialueelle, joka sisältää toimintoosoittimia, mikä helpottaa toimivien hyväksikäyttötoimintojen luomista.

Google Project Zero -tutkijat tunnistivat haavoittuvuuden uusien fuzzing-testausmenetelmien kokeilujen aikana ja on hyvä osoitus siitä, kuinka triviaaleja haavoittuvuuksia voi jäädä huomaamatta pitkään hyvin testatussa tunnetussa projektissa.

kuten pääongelmat, joiden osalta ongelma jäi huomaamatta pitkään aikaan:

  • NSS-asemakirjastoa ja fuzzing-testejä ei tehty kokonaisuudessaan, vaan yksittäisten komponenttien tasolla.
  • Esimerkiksi koodi DER:n ja prosessisertifikaattien purkamiseen varmistettiin erikseen; Summauksen aikana olisi hyvinkin voitu hankkia kyseisen haavoittuvuuden ilmenemiseen johtanut varmenne, mutta sen varmistus ei päässyt varmennuskoodiin eikä ongelma paljastunut.
  • Sumeustestien aikana lähdön koolle (10,000 10,000 tavua) asetettiin tiukat rajoitukset, koska NSS:ssä ei ollut tällaisia ​​rajoituksia (monet rakenteet normaalitilassa voivat olla suurempia kuin 2 24 tavua, joten ongelmien tunnistamiseksi tarvitaan enemmän syöttötietoja ). Täydellistä todentamista varten rajan olisi pitänyt olla 1 16 -XNUMX tavua (XNUMX Mt), mikä vastaa TLS:ssä sallittua varmenteen enimmäiskokoa.
  • Väärä käsitys koodin kattavuudesta sumeiden testien avulla. Haavoittuvaa koodia testattiin aktiivisesti, mutta fuzereillä, jotka eivät pystyneet luomaan vaadittua syöttödataa. Esimerkiksi fuzzer tls_server_target käytti valmiita varmenteita, jotka rajoittivat varmenteen vahvistuskoodin tarkistamisen vain TLS-sanomiin ja protokollan tilan muutoksiin.

lopuksi, On syytä mainita, että koodinimen BigSig ongelma on korjattu NSS 3.73:ssa ja NSS ESR 3.68.1:ssä ja ratkaisun päivitykset pakettimuodossa on jo julkaistu eri jakeluissa: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD jne.

Jos haluat tietää enemmän siitä, voit ottaa yhteyttä seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.