BigSig, zranitelnost v Mozilla NSS, která by mohla umožnit spuštění kódu

Zprávy o identifikaci kritické zranitelnosti (již uvedeno pod CVE-2021-43527) en soubor kryptografických knihoven NSS (Služby zabezpečení sítě) od Mozilly, které by mohly vést ke spuštění škodlivého kódu při zpracování digitálních podpisů DSA nebo RSA-PSS specifikovaných pomocí DER (Distinguished Encoding Rules).

Problém se projevuje v aplikacích, které využívají NSS ke zpracování digitálních podpisů CMS, S/MIME, PKCS # 7 a PKCS # 12, nebo při ověřování certifikátů v nasazení TLS, X.509, OCSP a CRL. Tato chyba zabezpečení se může objevit v různých klientských a serverových aplikacích s podporou TLS, DTLS a S/MIME, e-mailových klientech a prohlížečích PDF, které k ověřování digitálních podpisů používají volání NSS CERT_VerifyCertificate ().

Jako příklady zranitelných aplikací jsou zmíněny LibreOffice, Evolution a Evince. Potenciálně se problém může týkat i projektů, jako je Pidgin, Apache OpenOffice, Suricata, Curl a další.

Současně zranitelnost se neobjevuje v prohlížečích Firefox, Thunderbird a Tor, které k ověření využívají samostatnou knihovnu mozilla ::pkix, která je rovněž součástí NSS. The Prohlížeče založené na prohlížeči Chrome (pokud nebyly speciálně zkompilovány s NSS), který používal NSS do roku 2015, ale poté se přenesl na BoringSSL, se jich problém netýká.

Tato chyba zabezpečení je způsobena chybou v ověřovacím kódu certifikátu v vfy_CreateContext funkce souboru secvfy.c. Chyba se projeví jak ve chvíli, kdy klient čte certifikát ze serveru jako když server zpracovává certifikáty klienta.

Při ověřování digitálního podpisu s kódováním DER NSS dekóduje podpis do vyrovnávací paměti pevné velikosti a předá tuto vyrovnávací paměť modulu PKCS # 11. Během následného zpracování je u podpisů DSA a RSA-PSS velikost nesprávně ověřena, což má za následek což vede k přetečení alokovaného bufferu pro strukturu VFYContextStr, pokud velikost digitálního podpisu přesáhne 16384 bitů (2048 bajtů je alokováno pro buffer, ale není ověřeno, že podpis může být větší).

Kód, který obsahuje zranitelnost, pochází z roku 2003, ale nehrozilo až do refaktoringu v roce 2012. V roce 2017 došlo ke stejné chybě při implementaci podpory RSA-PSS. K provedení útoku není nutné generování určitých klíčů náročné na zdroje pro získání potřebných dat, protože k přetečení dochází ve fázi před ověřením platnosti digitálního podpisu. Část dat mimo hranice se zapisuje do oblasti paměti, která obsahuje ukazatele funkcí, což usnadňuje vytváření pracovních exploitů.

Zranitelnost byla identifikována výzkumníky Google Project Zero během experimentů s novými testovacími metodami fuzzingu a je dobrou ukázkou toho, jak mohou triviální zranitelnosti zůstat dlouho neodhaleny ve známém a osvědčeném projektu.

Pokud jde o hlavní problémy, pro které problém zůstal bez povšimnutí na dlouhou dobu:

  • Knihovna pohonů NSS a fuzzing testy nebyly provedeny jako celek, ale na úrovni jednotlivých komponent.
  • Například kód pro dekódování DER a zpracování certifikátů byl ověřen samostatně; V průběhu fuzzingu mohlo dojít k získání certifikátu vedoucího k manifestaci dotyčné zranitelnosti, ale jeho ověření nedosáhlo ověřovacího kódu a problém nebyl odhalen.
  • Během fuzzing testů byly nastaveny přísné limity na velikost výstupu (10,000 10,000 bajtů), pokud taková omezení v NSS neexistovala (mnoho struktur v normálním režimu mohlo být větších než 2 24 bajtů, proto je k identifikaci problémů zapotřebí více vstupních dat ). Pro úplné ověření měl být limit 1 16 -XNUMX bajtů (XNUMX MB), což odpovídá maximální velikosti certifikátu povolené v TLS.
  • Mylná představa o pokrytí kódu fuzzing testy. Zranitelný kód byl aktivně testován, ale pomocí fuzerů, které nebyly schopny vygenerovat požadovaná vstupní data. Například fuzzer tls_server_target používal předdefinovanou sadu předdefinovaných certifikátů, která omezovala ověření ověřovacího kódu certifikátu pouze na zprávy TLS a změny stavu protokolu.

Konečně, Za zmínku stojí, že problém s kódovým označením BigSig byl opraven v NSS 3.73 a NSS ESR 3.68.1 a aktualizace řešení ve formě balíčků již byly vydány v různých distribucích: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD atd.

Pokud se o tom chcete dozvědět více, můžete se poradit následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.