Zranitelnosti v GnuPG, které umožňují obejít ověřování a provést vlastní kód

Na konferenci 39C3 (Chaos Communication Congress), která se koná v Německu, byly zveřejněny podrobnosti o 12 dříve neznámých a stále neopravitelných (0-day) zranitelnostech v nástroji GnuPG (GNU Privacy Guard), poskytujícím nástroje kompatibilní se standardy OpenPGP a S/MIME pro šifrování dat, práci s elektronickými podpisy, správu klíčů a přístup k veřejným úložištím klíčů. Nejnebezpečnější zranitelnosti umožňují obejít kontrolu digitálního podpisu a dosáhnout provedení kódu při zpracování šifrovaných dat v ASCII formátu (ASCII Armor). Funkční prototypy exploitů a záplaty budou zveřejněny později. CVE identifikátory zatím nebyly přiděleny.

Zranitelnosti jsou způsobeny chybami v kódu pro zpracování dat a analýzu formátů a nesouvisí s nedostatky v kryptografických algoritmech. Například chyba v parseru vede k selhání při určení skutečně podepsaných dat a vytváří podmínky, za kterých se ověřovaná data mohou lišit od podepsaných dat, což útočníkovi umožňuje nahradit otevřený text bez přístupu k soukromému klíči.

Identifikované problémy:

  • Chyba v kódu parseru šifrovaných dat, distribuovaných ve formátu ASCII-Armor (textové soubory se sekcí „BEGIN/END PGP ARMORED FILE“), vede k zápisům mimo hranice vyrovnávací paměti. Problém může vést k provedení kódu při zpracování speciálně formátovaných dat v gpg. Zranitelnost se projevuje ve funkci armor_filter() a je způsobena zdvojeným zvýšením čítače „n“ v cyklu „for“ — i když je uvedeno „n++“ přímo v cyklu, čítač se zvyšuje i v těle cyklu při zápisu dat do vyrovnávací paměti „buf[n++]“. V důsledku toho je do vyrovnávací paměti zapsán nadbytečný byt a proměnná velikosti „ret_len“ se nastaví na hodnotu přesahující skutečné.
  • Možnost vytvořit nebo přepsat jakýkoli soubor, jak dovolují aktuální přístupová práva, kvůli nesprávnému zpracování obsahu pole „filename“ v datovém balíčku. Tato zranitelnost může být využita k vykonání kódu v systému při provádění příkazů „gpg —decrypt poc.enc“ a „gpg poc.enc“ pro zobrazení souboru poc.enc zaslaného útočníkem. K provedení kódu lze například dojít vytvořením souborů ~/.bash_completion nebo ~/.ssh/authorized_keys.
  • Možnost nahrazení otevřeného textu, který je zobrazen uživateli při použití volby „—decrypt“ a verifikaci s použitím samostatně dodávaných digitálních podpisů (Detached Signature, vytváří se volbou „—detach-sig“ a dodávají se v samostatném souboru sig). Podstatou problému je, že při odděleném odeslání zprávy a souboru sig může útočník, který kontroluje mezitímní provoz (MITM), provést změny v souboru sig, po kterých zůstane verifikace úspěšná, ale při prohlížení zprávy ze souboru sig pomocí volby „—decrypt“ bude vypsán jiný obsah. echo Plaintext > plaintext gpg —detach-sig plaintext # změna plaintext.sig útočníkem s přidáním dalšího textu gpg —verify plaintext.sig plaintext # verifikováno gpg —decrypt plaintext.sig # verifikováno, ale je vypsán jiný text
  • Možnost doplnění podepsané zprávy o libovolná data při zachování úspěšné kontroly podpisu. Problém nastává z důvodu ořezu dat na hranici 20000 znaků při výpočtu hash.
  • Nesprávná kontrola kódů autentizovaného šifrování (MDC — Modification Detection Codes), která umožňuje manipulaci se šifrovanými pakety tak, že při dešifrování bude získaný obsah zpracován jako jiný typ paketu (například vnímán jako určený pro publikaci otevřeného klíče).
  • Možnost substituce dodatečných dat v CS-podpisy (Cleartext Signature), vytvořených pomocí příznaku „—not-dash-escaped“ nebo konvertovaných z odděleně dodávaných podpisů (Detached Signature). Zranitelnost může být využita k tomu, aby uživatel měl falešný dojem o tom, jaká data byla skutečně podepsána. Například uživatel může stáhnout ze spolehlivých zdrojů správný klíč pro kontrolu digitálního podpisu, ale útočník během MITM útoku může změnit stahovaný iso-obraz a přidat do podpisu k obrazu další hash, takovým způsobem, že verifikace změněného obrazu proběhne úspěšně při přítomnosti správného klíče v systému.
  • Substituce dodatečných dat v ASCII-representaci CS-podpisu (Cleartext Signature) prostřednictvím vložení znaku s nulovým kódem. Zranitelnost například umožňuje vložit libovolný text do záhlaví Hash.
  • Nesprávná interpretace formátu OpenPGP, díky které může být zpráva „One-Pass Signed Message“ v ASCII kódovaném formátu zpracována jako zpráva „Cleartext Signature“ při určité změně hlavičky. Zranitelnost umožňuje nahradit původní podepsaná data škodlivým obsahem, přičemž se zachovává vzhled úspěšné verifikace.
  • Nedostatek zřejmého oddělení ve výstupu informací o úspěšnosti kontroly digitálního podpisu a obsahu zprávy, což umožňuje vytvářet falešná nepodepsaná sdělení, která při provedení „gpg --decrypt“ vypadají jako autentická.
  • Možnost vytvářet OpenPGP zprávy, které budou v gpg zpracovávány jinak, než v jiných implementacích OpenPGP. Problém je způsoben zvláštností zpracování velmi dlouhých řetězců v ASCII reprezentaci OpenPGP dat.
  • Vytváření podmínek v procesu verifikace digitálního podpisu pro návrat algoritmu kontroly hash na nebezpečné SHA1.
  • Možnost vložení vlastních sekundárních klíčů (subkey) bez jejich autorizace pomocí soukromé části hlavního klíče. Útok se provádí přidáním falešného úložiště klíčů pomocí možnosti „--keyring“.

Dále byly odhaleny dvě zranitelnosti v minisign, zjednodušeném nástroji pro vytváření a kontrolu digitálních podpisů. Obě zranitelnosti (1, 2) umožňují používat ovládací sekvence terminálu („\e[1E“) nebo speciální znaky („\r“) v poli s komentářem k modifikaci výstupu programu, například k nahrazení informací o výsledku verifikace.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster