Saksamaal toimuval 39C3 (Chaos Communication Congress) konferentsil avaldati detailid 12 varem tundmatu ja jĂ€tkuvalt parandamata (0-pĂ€eva) haavatavuse kohta GnuPG (GNU Privacy Guard) tööriistades, mis pakuvad OpenPGP ja S/MIME standarditega ĂŒhilduvaid utiliite andmete krĂŒptimiseks, digitaalsete allkirjade haldamiseks ja avalike vĂ”tmehoidlate juurde pÀÀsemiseks. Ohtlikumad haavatavused vĂ”imaldavad mööda minna digitaalallkirja kontrollist ja saavutada koodi kĂ€itamine ASCII-esitamiseks (ASCII Armor) krĂŒptitud andmete töötlemisel. Töötavaid exploite ja patĆĄe lubatakse hiljem avaldada. CVE-identifikaatoreid pole veel mÀÀratud.
Haavatavused on pĂ”hjustatud vigadest andmete töötlemise ja vormingute analĂŒĂŒsi koodis ning need ei ole seotud krĂŒptoalgoritmide puudustega. NĂ€iteks viga parseris pĂ”hjustab tĂ”rke, kui tuvastatakse tegelikult allkirjastatud andmeid, ja loob tingimused, kus kontrollitavad andmed vĂ”ivad mitte kokku langeda allkirjastatud andmetega, mis vĂ”imaldab rĂŒndajal asendada selget teksti ilma juurdepÀÀsuta privaatvĂ”tmele.
Tuvastatud probleemid:
- Paranduskood vihjes krĂŒptitud andmete parsimise viga, mis levivad ASCII-Armor formaadis (tekstid, millel on plokid «BEGIN/END PGP ARMORED FILE»), viib mĂ€lupiiri ĂŒletava salvestamiseni. Probleem vĂ”ib vĂ”imaldada koodi tĂ€itmist, kui gpg töötleb spetsiaalselt vormindatud andmeid. Haavatavus ilmneb funktsioonis armor_filter() ja on pĂ”hjustatud ânâ loenduri kahekordse suurendamise tĂ”ttu for-tsĂŒklis â vaatamata ân++â mÀÀramisele tsĂŒklis, suureneb loendur ka tsĂŒkli kehas, kui andmeid kirjutatakse puhvri âbuf[n++]â sisse. Selle tulemusena salvestatakse puhvri piiridest vĂ€lja tĂ€iendav bait ning muutujaks âret_lenâ seatakse vÀÀrtus, mis ĂŒletab tegeliku.
- VĂ”imalus luua vĂ”i kirjutada ĂŒle mĂ”ni fail, kui seda lubavad praegused ligipÀÀsuĂ”igused, valesti Töötlemise tĂ”ttu andmepaketi âfilenameâ vĂ€lja sisu. Haavatavust vĂ”ib kasutada koodi tĂ€itmise korraldamiseks sĂŒsteemis, kui vastuvĂ”tja tĂ€idab kĂ€ske âgpg âdecrypt poc.encâ ja âgpg poc.encâ rĂŒnnakust saatja saadetud faili poc.enc vaatamiseks. Koodi tĂ€itmist on vĂ”imalik saavutada nĂ€iteks luues faile ~/.bash_completion vĂ”i ~/.ssh/authorized_keys.
- Valik, mis vĂ”imaldab muuta avatud teksti, mida kasutajale kuvatakse, kui mÀÀratakse valik ââdecryptâ ja kontrollimine eraldi edastatud digitaalsete allkirjade abil (Detached Signature, luuakse valiku ââdetach-sigâ abil ja edastatakse eraldi sig-failina). Probleemi olemus seisneb selles, et sĂ”numi ja sig-faili eraldi saatmise korral vĂ”ib rĂŒndaja, kes kontrollib vahepealset liiklust (MITM), teha sig-failis muudatusi, mille jĂ€rel kontrollimine jÀÀb edukaks, kuid ââdecryptâ valiku abil sig-failist sĂ”numit vaadates kuvatakse teine sisu. echo Plaintext > plaintext gpg âdetach-sig plaintext # rĂŒndaja muudab plaintext.sig, lisades tĂ€iendava teksti gpg âverify plaintext.sig plaintext # kontrollitud gpg âdecrypt plaintext.sig # kontrollitud, kuid kuvatakse teine tekst
- VÔimalus lisada allkirjastatud sÔnumisse suvalisi andmeid, sÀilitades allkirja edukat kontrollimist. Probleem tekib andmete lÔikamisest 20000 tÀhemÀrgi piiril rÀsimise arvutamisel.
- Vale valev koodide kontrollimine, mis on autentimise krĂŒpteerimise (MDC â Modification Detection Codes) konteksti konfigureerimine, mis vĂ”imaldab manipuleerida krĂŒpteeritud pakettidega nii, et dekrĂŒpteerimisel töödeldakse saadud sisu teise tĂŒĂŒpi pakettina (nĂ€iteks peetakse seda avaliku vĂ”tmena, mis on mĂ”eldud avaldamiseks).
- VĂ”imalus lisada tĂ€iendavaid andmeid CS-allkirjadesse (Cleartext Signature), mis on loodud lipuga âânot-dash-escapedâ vĂ”i konverteeritud eraldi lisatud allkirjadest (Detached Signature). Ohutuspuudus vĂ”ib kasutada, et luua kasutajale vale mulje, millised andmed tegelikult allkirjastatud on. NĂ€iteks vĂ”ib kasutaja allalaadida usaldusvÀÀrsetest allikatest korrektse vĂ”tme digitaalallkirja kontrollimiseks, kuid rĂŒndaja vĂ”ib MITM-rĂŒnnaku kĂ€igus asendada kasutaja alla laaditud ISO-pildi ja lisada pildi allkirjale tĂ€iendava rĂ€sihoodi, nii et muudetud pildi kontrollimine Ă”nnestub, kui sĂŒsteemis on olemas kontrollimiseks korrektne vĂ”ti.
- Lisainformatsiooni sisestamine ASCII-esituses CS-allkirja (Cleartext Signature) kaudu, kasutades nullkoodi sĂŒmbolit. TurvanĂ”rkus vĂ”imaldab nĂ€iteks sisestada suvalist teksti Hashi pĂ€isesse.
- Vale OpenPGP formaadi tÔlgendamine, mille tÔttu "One-Pass Signed Message" ASCII-kodeeritud formaadis vÔib teatud header'i muutuste korral töödelda kui "Cleartext Signature" sÔnumit. TurvanÔrkus vÔimaldab asendada originaali allkirjastatud andmed kuritahtliku sisuga, sÀilitades nÀiliselt eduka kontrollimise.
- Selge eristumise puudumine digitaalallkirja kontrollimise edu ja sÔnumi sisu vahel, mis vÔimaldab luua vale allkirjadeta sÔnumeid, mis kÀivitamisel "gpg --decrypt" nÀevad vÀlja nagu ehtsad.
- VÔimalus luua OpenPGP sÔnumeid, mida gpg töötleb teisiti kui teised OpenPGP teostused. Probleem tuleneb vÀga pikkade ridade töötlemise eripÀradest ASCII-esituses OpenPGP andmete puhul.
- Digitaalallkirja kontrollimise protsessis tingimuste loomine, mis vÔimaldab hash-kontrolli algoritmi tagasi pöörata ebaturvalisele SHA1-ile.
- VĂ”imalus sisestada oma teiseseid vĂ”tmeid (subkey) ilma nende autoriseerimiseta, kasutades privaatset master key komponenti. RĂŒnnak toimub vale vĂ”tmehoidla lisamise kaudu, kasutades valikut «âkeyring».
Lisaks on avastatud kaks haavatavust minisignis, lihtsustatud tööriistakomplektis digiallkirjade loomiseks ja kontrollimiseks. MÔlemad haavatavused (1, 2) vÔimaldavad kasutada terminali juhtimisjÀrgude («\e[1E») vÔi erimÀrke («\r») kommentaarivÀljas, et muuta programmi vÀljundit, nÀiteks asendades valideerimise tulemuse teavet.
Allikas: opennet.ru
