Podrobnosti o Juniperjevih stranskih vratih

Matej Huš

23. dec 2015 ob 09:13:42

Znanih je več podrobnosti o stranskih vratih, ki jih je v svojih napravah odkril Juniper. V kodi je dvoje stranskih vrat, ki izkoriščajo različne ranljivosti in omogočajo zlorabo. Prva stranska vrata so v resnici v kodo vstavljeno geslo, ki ob prijavi s poljubnim uporabniškim imenom in geslom <<< %s(un='%s') = %u prek SSH ali telneta omogoči dostop z najvišjimi privilegiji. Znakovno geslo so napadalci bržkone izbrali zato, da se ga v kodi laže spregleda, saj je od daleč videti kot le eden izmed nizov za obdelavo vnosa. A v resnici omogoča dostop do naprave, kar lahko preizkusite tudi sami. Ranljive so vse naprave s firmwarom verzije 6.3.0r17, 6.3.0r18, 6.3.0r19 in 6.3.0r20, ostale verzije pa ne. Ranljivost se je v kodo prikradla leta 2013.

Bistveno zanimivejša pa so druga stranska vrata, za katere je vsaj posredno odgovorna NSA. Do tega zaključka pridemo ob analizi pogojev, ki so morali biti izpolnjeni za uspešno dešifriranje prometa prek VPN. Ključen problem je uporaba algoritma Dual EC, ki je eden izmed štirih od NIST odobrenih algoritmov za tvorjenje naključnih števil za šifriranje, standardiziran kot NIST SP 800-90A. Toda že leta 2007 sta Shumow in Ferguson pokazala, da je Dual EC ranljiv, če izberemo naključni konstanti za šifriranje (P in Q) na način, kot si ga je zamislila NSA. V standardu so priporočene vrednosti, a nihče ne ve, od kod so se vzele, sumi pa se, da jih je NSA postavila tja zaradi lažjega razbijanja šifer. Spomnimo, da je RSA od NSA prejela 10 milijonov dolarjev za uporabo oslabljenega algoritma.

Juniper bi moral uporabljati tudi drugi generator naključnih števil ANSI X.9.31, a zaradi hrošča v kodi tega ni ustrezno počel. Nekaj časa je Juniper za P in Q uporabljal svoje vrednosti, sredi leta 2012 pa sumljive vrednosti. To sovpada z vstavitvijo stranskih vrat v kodo. Zaradi tega je ves promet prek VPN mogoče dešifrirati. Zakaj in kdo je v kodo vstavil prvega hrošča (ali pa je tam namerno?), ki je preskočil ANSI, ne bo jasno nikoli. Juniper je tega hrošča popravil na pol, in sicer so P in Q spremenili nazaj v prvotne vrednosti.