Kritična ranljivost v GnuTLS neodkrita skoraj devet let

Matej Huš

9. mar 2014 ob 21:48:51

V odprtokodni knjižnici GnuTLS, ki jo številni operacijski sistemi in programi uporabljajo za uporabo TLS in SSL, so odkrili ranljivost, ki omogoča uspešno predložitev lažnih certifikatov. Napaka je zelo podobna ranljivosti v Applovih sistemih iOS in Mac OS X, ki jo je Apple potem sicer popravil.

Ranljivost naj bi bila v kodi prisotna že vse od leta 2005, odkrili pa so jo šele sedaj. Primerjava izvirne in popravljene izvorne kode pokaže, da je luknja posledica napačne uporabe stavka goto. Spomnimo, da je bil v Applovem sistemu problem enkrat preveč ponovljen stavek goto, ki se je zato nekritično izvedel vsakokrat. V primeru GnuTLS pa goto večkrat kliče napačno funkcijo (cleanup namesto fail). Zaradi tega se rutina preverjanja veljavnosti certifikata X.509 ne izvede do konca, kar omogoči, da se kot veljaven in ustrezen certifikat predstavi podpisani certifikat za drugo domeno od obiskane. Vsem uporabnikom zato priporočajo nadgradnjo na verzijo GnuTLS 3.2.12.

To ni prvi problem s knjižnico GnuTLS, saj so na internetu že dlje časa ugotavljali, da je napisana pomanjkljivo. Podobnost te napake z Applovo in časovno ujemanje je zelo zanimivo in omogoča špekulacije, da je prav odkritje Applove ranljivosti povzročilo pregled kode GnuTLS, kjer so odkrili podobno ranljivost.

Postavljajo pa tovrstna odkritja pod vprašaj staro mantro, da je odprta koda varnejša, ker jo lahko vsakdo pregleda, tako da se očitne ranljivosti ne morejo izmuzniti skozi pregled. Vse to je res le, če kodo dejansko več kompetentnih programerjev tudi pregleda. Sicer prav tako lahko skriva neprijetna presenečenja.