Në konferencën 39C3 (Chaos Communication Congress) që po zhvillohet në Gjermani, janë zbuluar detaje mbi 12 vulnerabilitete të panjohura deri tani dhe të pa rregulluar (0-day) në instrumentin GnuPG (GNU Privacy Guard), që ofron mjete të përputhshme me standardet OpenPGP dhe S/MIME për enkriptimin e të dhënave, punën me nënshkrime elektronike, menaxhimin e çelësave dhe qasjen në depo publike çelësh. Vulnerabilitetet më të rrezikshme lejojnë kalimin e verifikimit të nënshkrimit digjital dhe mundësinë e ekzekutimit të kodit gjatë përpunimit të të dhënave të enkriptuara në prezantim ASCII (ASCII Armor). Prototipet funksionalë të eksploitëve dhe patch-et pritet të publikohen në një të ardhme.
Vulnerabilitetet shkaktohen nga gabimet në kodin për përpunimin e të dhënave dhe analizen e formateve, dhe nuk lidhen me defekte në algoritmet kriptografike. Për shembull, një gabim në parser çon në dështim gjatë përcaktimit të të dhënave të nënshkruara në të vërtetë dhe krijon kushte ku të dhënat e verifikuara mund të mos përputhen me të dhënat e nënshkruara, duke lejuar sulmuesin të zëvendësojë tekstin e hapur pa pasur qasje në çelësin privat.
Problemet e zbuluara:
- NjĂ« gabim nĂ« kodin e parser-it tĂ« tĂ« dhĂ«nave tĂ« enkriptuara, tĂ« shpĂ«rndara nĂ« formatin ASCII-Armor (skedarĂ« tekstualĂ« me bllokun 'BEGIN/END PGP ARMORED FILE'), qĂ« çon nĂ« shkruarje nĂ« njĂ« zonĂ« tĂ« kujtesĂ«s jashtĂ« kufijve tĂ« tamponit. Problemi mund tĂ« çojĂ« nĂ« ekzekutimin e kodit gjatĂ« pĂ«rpunimit nĂ« gpg tĂ« tĂ« dhĂ«nave tĂ« shqiptuara posaçërisht. Vulnerabiliteti shfaqet nĂ« funksionin armor_filter() dhe shkaktohet nga njĂ« rritje e dyfishtĂ« e numĂ«ruesit 'n' nĂ« ciklin 'for' â pavarĂ«sisht nga nĂ«nshkrimi 'n++' nĂ« vetĂ« ciklin, numĂ«ruesi rritet gjithashtu nĂ« trupin e ciklit kur shkruhen tĂ« dhĂ«nat nĂ« tamponin 'buf[n++]'. Si rezultat, njĂ« bajt i tepĂ«rt shkruhet pĂ«rtej kufijve tĂ« tamponit, dhe dukuria me madhĂ«sinĂ« 'ret_len' vendoset nĂ« njĂ« vlerĂ« qĂ« tejkalon tĂ« vĂ«rtetĂ«n.
- Mundësia për të krijuar ose për të mbivendosur çdo skedar, sa i lejojnë të drejtat aktuale të qasjes, për shkak të trajtimit të papërshtatshëm të përmbajtjes së fushës 'filename' në paketën e të dhënave. Vulnerabiliteti mund të përdoret për të organizuar ekzekutimin e kodit në sistem gjatë ekzekutimit të komandave 'gpg --decrypt poc.enc' dhe 'gpg poc.enc' për të parë skedarin e dërguar nga sulmuesi poc.enc. Ekzekutimi i kodit mund të arrihet, për shembull, duke krijuar skedarë ~/ .bash_completion ose ~/ .ssh/authorized_keys.
- MundĂ«sia pĂ«r tĂ« zĂ«vendĂ«suar tekstin e hapur qĂ« i tregohet pĂ«rdoruesit kur shĂ«nohet opsioni «âdecrypt» dhe verifikimi duke pĂ«rdorur nĂ«nshkrime digjitale tĂ« ofruara veçmas (Detached Signature, krijohen me opsionin «âdetach-sig» dhe ofrohen nĂ« njĂ« skedar sig). Problemi qĂ«ndron tek fakti se, kur dĂ«rgohet veçmas mesazhi dhe skedari sig, njĂ« sulmues qĂ« kontrollon trafikun ndĂ«rmjetĂ«s (MITM) mund tĂ« bĂ«jĂ« ndryshime nĂ« skedarin sig, pas tĂ« cilave verifikimi mbetet i suksesshĂ«m, por kur mesazhi shikohet nga skedari sig duke pĂ«rdorur opsionin «âdecrypt», do tĂ« shfaqet njĂ« pĂ«rmbajtje tjetĂ«r. echo Plaintext > plaintext gpg âdetach-sig plaintext # ndryshimi plaintext.sig nga sulmuesi duke shtuar tekst shtesĂ« gpg âverify plaintext.sig plaintext # e verifikuar gpg âdecrypt plaintext.sig # e verifikuar, por shfaqet njĂ« tekst tjetĂ«r
- Mundësia për të shtuar të dhëna të rastësishme në një mesazh të nënshkruar pa humbur verifikimin e suksesshëm të nënshkrimit. Problemi lind për shkak të prerjes së të dhënave në kufirin prej 20000 karakteresh gjatë llogaritjes së hash-it.
- Kontrolli i pasaktĂ« i kodave tĂ« enkriptimit tĂ« autentikuar (MDC â Modification Detection Codes), duke lejuar manipulimin e paketave tĂ« enkriptuara nĂ« mĂ«nyrĂ« qĂ«, gjatĂ« dekodimit, pĂ«rmbajtja e marrĂ« tĂ« trajtohet si njĂ« lloj tjetĂ«r pakete (p.sh., tĂ« perceptohet si e destinuar pĂ«r publikim kyçi i hapur).
- MundĂ«sia pĂ«r tĂ« futur tĂ« dhĂ«na shtesĂ« nĂ« nĂ«nshkrimet CS (Cleartext Signature), tĂ« krijuara duke pĂ«rdorur flagun «ânot-dash-escaped» ose tĂ« konvertuara nga nĂ«nshkrime tĂ« ofruara veçmas (Detached Signature). Kjo dobĂ«si mund tĂ« pĂ«rdoret pĂ«r tĂ« krijuar te pĂ«rdoruesi njĂ« pĂ«rshtypje tĂ« gabuar se cilat tĂ« dhĂ«na janĂ« nĂ«nshkruar nĂ« tĂ« vĂ«rtetĂ«. PĂ«r shembull, pĂ«rdoruesi mund tĂ« shkarkojĂ« nga burime tĂ« besueshme njĂ« çelĂ«s tĂ« saktĂ« pĂ«r verifikimin e nĂ«nshkrimit digjital, por njĂ« sulmues gjatĂ« njĂ« sulmi MITM mund tĂ« zĂ«vendĂ«sojĂ« imazhin iso qĂ« pĂ«rdoruesi shkarkon dhe tĂ« shtojĂ« njĂ« hash shtesĂ« nĂ« nĂ«nshkrimin e imazhit nĂ« njĂ« mĂ«nyrĂ« qĂ« verifikimi i imazhit tĂ« zĂ«vendĂ«suar tĂ« kalojĂ« me sukses nĂ« prani tĂ« njĂ« çelĂ«si korrekt verifikues nĂ« sistem.
- Shtimi i të dhënave shtesë në përfaqësimin ASCII të nënshkrimit CS (Cleartext Signature) përmes futjes së simbolit me kod zero. Kjo dobësi, për shembull, lejon që të shtohet tekst të rastësishëm në titullin Hash.
- Interpretim i gabuar i formatit OpenPGP, i cili bën që mesazhi "One-Pass Signed Message" në formatin ASCII të trajtohet si mesazhi "Cleartext Signature" në rastin e një ndryshimi të caktuar të titullit. Ky dikaster lejon zëvendësimin e të dhënave origjinale të nënshkruara me përmbajtje të dëmshme, duke ruajtur dukshmërinë e verifikimit të suksesshëm.
- Mungesa e ndarjes eksplicite në daljen e informacionit mbi suksesin e kontrollit të nënshkrimit digjital dhe përmbajtjes së mesazhit, që lejon krijimin e mesazheve të falsifikuara, të pa nënshkruara, të cilat gjatë ekzekutimit të "gpg --decrypt" duken si autentike.
- Mundësia për të krijuar mesazhe OpenPGP, të cilat në gpg do të trajtohen ndryshe nga implementimet e tjera të OpenPGP. Problemi shkaktohet nga karakteristikat e trajtimit të vargjeve shumë të gjata në ASCII-në e të dhënave OpenPGP.
- Krijimi i kushteve në procesin e verifikimit të nënshkrimit digjital për të rrokullisur algoritmin e kontrollit të hash-it në SHA1 të pasigurt.
- Mundësia për të futur çelësat e mi dhe të ndihmës (subkey) pa autorizimin e tyre duke përdorur komponentin privat të çelësit kryesor. Sulmi realizohet përmes shtimit të një depoje çelësh false duke përdorur opsionin "--keyring".
Përveç kësaj, janë zbuluar dy vulnerabilitete në minisign, një mjet të thjeshtëzuar për krijimin dhe verifikimin e nënshkrimeve digjitale. Të dy vulnerabilitetet (1, 2) lejojnë përdorimin e sekuencave të kontrollit të terminalit ("\e[1E") ose karaktereve speciale ("\r") në fushën e komentit për modifikimin e daljes së programit, për shembull, për të zëvendësuar informacionin mbi rezultatin e verifikimit.
Burimi: opennet.ru
