V TLS odkrita 19 let stara ranljivost

Matej Huš

14. dec 2017 ob 06:56:52

Leta 1998 je Daniel Bleichenbacher v šifrirnem protokolu SSL (predhodniku TLS) odkril ranljivost, ki je omogočala prebiranje z RSA šifriranih sporočil celo brez zasebnega ključa. Iz sporočil o napakah, ki so jih vračali strežniki, je bilo mogoče s primerno izbranimi poizkusi izluščiti podatke za dešifriranje komunikacije. Problem so tedaj rešili zelo napol, in sicer je RSA ostal enako luknjičav, le sporočila o napakah so porezali. Zelo presenetljivo pa je, da so leta 2017 spletne strani, ki uporabljajo TLS, še vedno množično ranljive na zelo podobno napako.

Napad, ki so ga raziskovalci poimenovali ROBOT (Return Of Bleichenbacher's Oracle Threat) in opisali v znanstvenem članku, je mogoč, ker je ranljivost prisotna v številnih implementacijah algoritmov. V raziskavi so odkrili osem različnih proizvajalcev in odprtokodnih projektov, ki so imeli v kodi ranljivost, ki je odpirala pot za ROBOT. Ob tem je raziskovalce najbolj presenetilo, da je tako preprosta ranljivost, ki so jo odkrili hitro, ostala tako dolgo neopažena. Res pa je, da je obvod, ki so jo leta 1998 pripravili za ranljivost, zelo zapleten in zato ni čudno, da je marsikod implementiran površno in nezadostno. Posledično je prizadetih 27 izmed prvih sto najpopularnejših spletnih strani, med njimi tudi Facebook in Paypal. Med milijonom najbolj popularnih strani je prevalenca 2,8 odstotka. Mimogrede, ranljivost je v celoti problem strežnikov, zato odjemalci ne morejo storiti ničesar.

V praksi to pomeni, da je komunikacija s strežniki, ki podpirajo le RSA, tvegana, saj lahko napadalec posname promet in ga kasneje analizira. Če se uporablja poudarjena zaupnost (forward secrecy), je napad odvisen od tega, kako hitro lahko napadalec analiza promet. Prizadeti so programi F5, Citrixa in Cisca, pa tudi na primer WolfSSL, Java/JSSE in MatrixSSL. Najenostavnejša rešitev je onemogočenje uporabe RSA, saj elipitične krivulje niso prizadete.