BigSig, una vulnerabilitat a Mozilla NSS que podria permetre l'execució de codi

Es va donar a conèixer la notícia sobre identificació d'una vulnerabilitat crítica (ja catalogada sota CVE-2021-43527) en el conjunt de biblioteques criptogràfiques NSS (Serveis de seguretat de xarxa) de Mozilla que podria conduir a lexecució de codi maliciós en processar signatures digitals DSA o RSA-PSS especificades mitjançant la DER (Distingit regles de codificació).

el problema es manifesta en aplicacions que usen NSS per manejar firmes digitals CMS, S/MIME, PKCS#7 i PKCS#12, o en verificar certificats en implementacions TLS, X.509, OCSP i CRL. La vulnerabilitat podria sorgir en diverses aplicacions de client i servidor amb suport TLS, DTLS i S/MIME, clients de correu electrònic i visors de PDF que utilitzen lanomenada NSS CERT_VerifyCertificate () per verificar signatures digitals.

LibreOffice, Evolution i Evince s'esmenten com a exemples d'aplicacions vulnerables. Potencialment, el problema també pot afectar projectes com ara Pidgin, Apache OpenOffice, Suricata, Curl, entre d'altres.

Alhora, la vulnerabilitat no apareix a Firefox, Thunderbird i Tor Browser, que utilitzen una biblioteca mozilla::pkix separada per a la verificació, que també és part de NSS. Els navegadors basats en Chrome (llevat que s'hagin compilat específicament amb NSS), que van utilitzar NSS fins al 2015, però després es van transferir a BoringSSL, no es veuen afectats pel problema.

La vulnerabilitat es deu a un error al codi de verificació de certificat al vfy_CreateContext funció del fitxer secvfy.c. L'error es manifesta tant quan el client llegeix el certificat del servidor com quan el servidor processa els certificats del client.

En verificar una signatura digital codificada en DER, NSS descodifica la signatura en un memòria intermèdia de mida fixa i passa aquest memòria intermèdia al mòdul PKCS # 11. Durant el processament posterior, per a les signatures DSA i RSA-PSS, la mida es verifica incorrectament, el que condueix a un desbordament del memòria intermèdia assignat per a l'estructura VFYContextStr , si la mida de la signatura digital supera els 16384 bits (s'assignen 2048 bytes per al memòria intermèdia, però no es comprova que la signatura pugui ser més gran).

El codi que conté la vulnerabilitat es remunta al 2003, però no va representar una amenaça fins a la refactorització el 2012. El 2017, es va cometre el mateix error en implementar el suport RSA-PSS. Per dur a terme un atac, no es requereix una generació intensiva en recursos de certes claus per obtenir les dades necessàries, ja que el desbordament passa a l'etapa prèvia a la verificació de la validesa de la signatura digital. La part de les dades fora dels límits s'escriu en una àrea de memòria que conté punters de funció, cosa que facilita la creació d'exploits de treball.

La vulnerabilitat va ser identificada per investigadors de Google Project Zero durant experiments amb nous mètodes de proves de fuzzing i és una bona demostració de com les vulnerabilitats trivials poden passar desapercebudes durant molt de temps en un projecte conegut àmpliament provat.

Pel que fa als principals problemes pels quals el problema va passar desapercebut durant molt de temps:

  • La biblioteca d'unitats NSS i les proves de fuzzing no es van dur a terme totalment, sinó a nivell de components individuals.
  • Per exemple, el codi per descodificar DER i processar certificats es va verificar per separat; en el curs del fuzzing, bé podria haver-se obtingut un certificat, fet que va portar a la manifestació de la vulnerabilitat en qüestió, però la seva verificació no va assolir el codi de verificació i el problema no es va revelar.
  • Durant les proves de fuzzing, es van establir límits estrictes a la mida de la sortida (10,000 bytes) en absència de tals limitacions en NSS (moltes estructures en mode normal podrien tenir una mida de més de 10,000 bytes, per tant, per identificar problemes , més quantitat de dades d'entrada necessàries). Per a una verificació completa, el límit hauria d'haver estat 2 24 -1 bytes (16 MB), que correspon a la mida màxima d'un certificat permès a TLS.
  • Concepte erroni sobre la cobertura del codi mitjançant proves fuzzing. El codi vulnerable es va provar activament, però fent servir fuzers, que no van poder generar les dades d'entrada requerides. Per exemple, fuzzer tls_server_target va utilitzar un conjunt predefinit de certificats preparats per utilitzar, que limitaven la verificació del codi de verificació del certificat a només missatges TLS i canvis d'estat del protocol.

Finalment, cal esmentar que el problema amb nom en codi BigSig s'ha solucionat a NSS 3.73 i NSS ESR 3.68.1 i les actualitzacions de la solució en forma de paquet ja s'han llançat a les diferents distribucions: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, etc.

Si vols conèixer més a l'respecte, pots consultar el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.