Na konferencii 39C3 (Chaos Communication Congress) konanej v Nemecku boli odhalené detaily o 12 doteraz neznámych a neopravených (0-day) zraniteľnostiach v nástrojoch GnuPG (GNU Privacy Guard), ktoré poskytujú nástroje kompatibilné so štandardmi OpenPGP a S/MIME na šifrovanie dát, prácu s elektronickými podpismi, správu kľúčov a prístup k verejným úložiskám kľúčov. Najnebezpečnejšie zraniteľnosti umožňujú obísť overenie digitálneho podpisu a dosiahnuť vykonanie kódu pri spracovaní šifrovaných údajov v ASCII formáte (ASCII Armor). Funkčné prototypy exploitov a opráv sľubujú zverejniť neskôr. CVE identifikátory zatiaľ neboli pridelené.
Zraniteľnosti sú spôsobené chybami v kóde na spracovanie údajov a analýzu formátov a nie sú spojené s nedostatkami v kryptografických algoritmoch. Napríklad, chyba v parseri vedie k zlyhaniu pri určovaní skutočne podpísaných údajov a vytvára podmienky, za ktorých sa overované údaje môžu líšiť od podpísaných údajov, čo umožňuje útočníkovi zameniť čistý text bez prístupu k súkromnému kľúču.
Zistené problémy:
- Chyba v kóde parsera šifrovaných údajov šírených vo formáte ASCII-Armor (textové súbory s blokom „BEGIN/END PGP ARMORED FILE“) vedie k zápisu do oblasti pamäte mimo hranice vyrovnávacej pamäte. Problém môže viesť k vykonaniu kódu pri spracovaní v gpg špeciálne formátovaných údajov. Zraniteľnosť sa prejavuje vo funkcii armor_filter() a je spôsobená dvojitým zvýšením počítadla „n“ v cykle „for“ – bez ohľadu na príkaz „n++“ v samotnom cykle, sa počítadlo zvyšuje aj v tele cyklu pri zápise údajov do vyrovnávacej pamäte „buf[n++]“. Nakoniec sa mimo vyrovnávacej pamäte zapíše nadbytočný bajt, pričom premenná s veľkosťou „ret_len“ je nastavená na hodnotu, ktorá prekračuje skutočnú.
- Možnosť vytvoriť alebo prepísať akýkoľvek súbor, pokiaľ to umožňujú aktuálne práva prístupu, kvôli nesprávnemu spracovaniu obsahu poľa „filename“ v balíku s údajmi. Zraniteľnosť môže byť využitá na organizovanie vykonania kódu v systéme, ak príjemca vykoná príkazy „gpg --decrypt poc.enc“ a „gpg poc.enc“ na zobrazenie súboru poc.enc zaslaného útočníkom. Vykonanie kódu sa dá dosiahnuť napríklad vytvorením súborov ~/ .bash_completion alebo ~/ .ssh/authorized_keys.
- Možnosť zmeny otvoreného textu zobrazeného používateľovi pri zadávaní voľby „—decrypt“ a verifikácie pomocou samostatne dodávaných digitálnych podpisov (Detached Signature, vytvárajú sa voľbou „—detach-sig“ a dodávajú sa v samostatnom súbore sig). Podstata problému spočíva v tom, že pri oddelenej podpise správy a sig súboru môže útočník kontrolujúci medzičlánkovú komunikáciu (MITM) vykonať zmeny v sig súbore, po ktorých bude verifikácia úspešná, ale pri prezeraní správy zo sig súboru pomocou voľby „—decrypt“ bude zobrazený iný obsah. echo Plaintext > plaintext gpg —detach-sig plaintext # zmena plaintext.sig útočníkom s pridaním dodatočného textu gpg —verify plaintext.sig plaintext # verifikované gpg —decrypt plaintext.sig # verifikované, ale zobrazuje iný text
- Možnosť doplnenia podpísanej správy ľubovoľnými údajmi pri zachovaní úspešnej kontroly podpisu. Problém vzniká z dôvodu orezania údajov na hranici 20000 znakov pri výpočte hash.
- Nesprávna kontrola kódov autentifikovaného šifrovania (MDC — Modification Detection Codes), ktorá umožňuje manipulovať so šifrovanými paketmi tak, že pri dešifrovaní bude získaný obsah spracovaný ako iný typ paketu (napríklad bude považovaný za určený na publikáciu otvorený kľúč).
- Možnosť podstrčenia dodatočných údajov do CS-podpisov (Cleartext Signature), vytvorených s použitím príznaku „—not-dash-escaped“ alebo skonvertovaných zo samostatne dodávaných podpisov (Detached Signature). Zraniteľnosť môže byť využitá na vytvorenie falošného dojmu u používateľa o tom, aké údaje boli skutočne podpísané. Napríklad, používateľ môže načítať z dôveryhodných zdrojov platný kľúč na kontrolu digitálneho podpisu, ale útočník počas MITM útoku môže vymeniť naťahovaný iso-obraz a pridať do podpisu k obrazu dodatočný hash, takým spôsobom, že verifikácia vymeneného obrazu prebehne úspešne pri prítomnosti v systéme správneho kontrolného kľúča.
- Podstrčenie dodatočných údajov do ASCII-reprezentácie CS-podpisu (Cleartext Signature) prostredníctvom vloženia znaku s nulovým kódom. Zraniteľnosť napríklad umožňuje vložiť ľubovoľný text do hlavičky Hash.
- Nesprávna interpretácia formátu OpenPGP, kvôli ktorej môže byť správa „One-Pass Signed Message“ v ASCII kódovaní spracovaná ako správa „Cleartext Signature“ pri určitých zmenách v hlavičke. Zraniteľnosť umožňuje nahradiť pôvodné podpísané údaje škodlivým obsahom, pričom sa zachová dojem úspešnej verifikácie.
- Nedostatok jasného oddelenia v zobrazovaní informácií o úspešnosti overenia digitálneho podpisu a obsahu správy, čo umožňuje vytvárať falošné nepodpísané správy, ktoré pri vykonaní „gpg —decrypt“ vyzerajú ako autentické.
- Možnosť vytvárať OpenPGP správy, ktoré budú v gpg spracované inak ako v iných implementáciách OpenPGP. Problém spôsobuje zvláštnosť spracovania veľmi dlhých riadkov v ASCII zastúpení OpenPGP dát.
- Vytvorenie podmienok v procese overovania digitálneho podpisu na vrátenie algoritmu kontroly hash späť na nebezpečný SHA1.
- Možnosť pozmenenia svojich sekundárnych kľúčov (subkey) bez ich autorizácie pomocou privátnej súčasti hlavného kľúča. Útok sa vykonáva pridaním falošného úložiska kľúčov s pomocou voľby „—keyring“.
Ďalšie dve zraniteľnosti sa objavili v minisign, zjednodušenom nástroji na vytváranie a overovanie digitálnych podpisov. Obidve zraniteľnosti (1, 2) umožňujú použiť riadiace sekvencie terminálu („\e[1E“) alebo špeciálne znaky („\r“) v poli s komentárom na modifikáciu výstupu programu, napríklad na nahradenie informácií o výsledku overenia.
Zdroj: opennet.ru
