BigSig, a Mozilla NSS biztonsági rése, amely kódfuttatást tesz lehetővé

A hírek arról kritikus sérülékenység azonosítása (már szerepel a CVE-2021-43527 alatt) en a kriptográfiai könyvtárak halmaza NSS (Hálózatbiztonsági szolgáltatások) a Mozillától, ami rosszindulatú kód futtatásához vezethet a DER (Distinguished Encoding Rules) segítségével meghatározott DSA vagy RSA-PSS digitális aláírások feldolgozásakor.

A probléma Azokban az alkalmazásokban nyilvánul meg, amelyek NSS-t használnak a digitális aláírások kezelésére CMS, S/MIME, PKCS # 7 és PKCS # 12, vagy a tanúsítványok ellenőrzésekor a telepítésekben TLS, X.509, OCSP és CRL. A biztonsági rés különböző TLS-, DTLS- és S/MIME-támogatással rendelkező kliens- és szerveralkalmazásokban, e-mail kliensekben és PDF-megtekintőkben merülhet fel, amelyek az NSS CERT_VerifyCertificate () hívást használják a digitális aláírások ellenőrzésére.

A sebezhető alkalmazások példájaként a LibreOffice, az Evolution és az Evince szerepel. A probléma potenciálisan olyan projekteket is érinthet, mint például a Pidgin, Apache OpenOffice, Suricata, Curl.

Ugyanakkor, a sebezhetőség nem jelenik meg a Firefox, a Thunderbird és a Tor böngészőben, amelyek egy külön mozilla :: pkix könyvtárat használnak az ellenőrzéshez, ami szintén az NSS része. Az Chrome alapú böngészők (kivéve, ha kifejezetten az NSS-sel lettek összeállítva), amely 2015-ig használta az NSS-t, de aztán átkerült a BoringSSL-re, nem érinti őket a probléma.

A biztonsági rést a vfy_CreateContext tanúsítvány-ellenőrző kódjában lévő hiba okozza secvfy.c fájl függvénye. A hiba akkor is megjelenik, amikor az ügyfél beolvassa a tanúsítványt a szerverről mint amikor a szerver feldolgozza az ügyfél tanúsítványait.

A DER kódolású digitális aláírás ellenőrzésekor az NSS dekódolja az aláírást egy fix méretű pufferbe, és ezt a puffert továbbítja a PKCS # 11 modulnak. Az utófeldolgozás során a DSA és RSA-PSS aláírások mérete helytelenül kerül ellenőrzésre, ami azt eredményezi, hogy amelyben a VFYContextStr struktúra számára lefoglalt puffer túlcsordulásához vezet, ha a digitális aláírás mérete meghaladja az 16384 bitet (2048 bájt van lefoglalva a pufferhez, de nincs igazolva, hogy az aláírás nagyobb lehet).

A biztonsági rést tartalmazó kód 2003-ból származik, de ez a 2012-es refaktorálásig nem jelentett veszélyt. 2017-ben ugyanezt a hibát követték el az RSA-PSS támogatás bevezetésekor. A támadás végrehajtásához nem szükséges bizonyos kulcsok erőforrás-igényes generálása a szükséges adatok megszerzéséhez, mivel a túlcsordulás a digitális aláírás érvényességének ellenőrzését megelőző szakaszban történik. Az adatok határokon kívüli része egy függvénymutatókat tartalmazó memóriaterületre íródik, ami megkönnyíti a működő exploitok létrehozását.

A sebezhetőséget a Google Project Zero kutatói azonosították új, zavaros tesztelési módszerekkel végzett kísérletek során, és jól demonstrálja, hogy egy széles körben tesztelt ismert projektben miként maradhatnak sokáig észrevétlenek a triviális sebezhetőségek.

Ami főbb problémák, amelyeknél a probléma észrevétlen maradt hosszú ideje:

  • Az NSS meghajtókönyvtárat és a fuzzing teszteket nem teljes egészében, hanem az egyes komponensek szintjén végezték el.
  • Például a DER dekódolásához és a tanúsítványok feldolgozásához szükséges kódot külön ellenőrizték; A fuzzing során könnyen meg lehetett volna szerezni egy tanúsítványt, ami a kérdéses sérülékenység megnyilvánulásához vezetett, de annak ellenőrzése nem jutott el az ellenőrző kódig, és a probléma nem derült ki.
  • A fuzzing tesztek során szigorú korlátokat szabtak a kimenet méretére (10,000 10,000 bájt), ilyen korlátozások hiányában az NSS-ben (normál módban sok struktúra nagyobb lehet 2 24 bájtnál, ezért a problémák azonosításához több bemeneti adatra volt szükség ). A teljes ellenőrzéshez a korlátnak 1 16 -XNUMX bájtnak (XNUMX MB) kellett volna lennie, ami megfelel a TLS-ben engedélyezett tanúsítvány maximális méretének.
  • Tévhit a kódlefedettségről a zavaros tesztekkel. A sérülékeny kódot aktívan tesztelték, de fuzerekkel, amelyek nem tudták előállítani a szükséges bemeneti adatokat. Például a fuzzer tls_server_target a készenléti tanúsítványok előre meghatározott készletét használta, amely a tanúsítvány-ellenőrző kód ellenőrzését csak a TLS-üzenetekre és a protokollállapot-változásokra korlátozta.

Végül, Érdemes megemlíteni, hogy a BigSig kódnévvel kapcsolatos problémát az NSS 3.73 és az NSS ESR 3.68.1 javították. és a megoldás frissítései csomag formájában már megjelentek a különböző disztribúciókban: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD stb.

Ha többet szeretne tudni róla, konzultálhat a következő link.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.