MÀrkus: kasutajate mugavuse huvides on kuupÀevad toodud Moskva aja jÀrgi
Hiljuti jĂ€tsime tĂ€helepanuta ĂŒhe sertifikaadi aegumise, mida kasutati lisandite allkirjastamiseks. See viis lisandite keelamiseni kasutajatel. NĂŒĂŒd, kui vĂ€hemalt enamus probleemist on lahendatud, soovin rÀÀkida juhtunust ja tehtud tööst.
Taust: lisandid ja allkirjad
Paigaldatud lisanditel peab olema digitaalne allkiri, mis kaitseb kasutajaid pahavara sisaldavate lisandite eest ning nÔuab minimaalset lisandite kontrollimist Mozilla töötajate poolt. Me kehtestasime selle nÔude 2015. aastal, kuna kogesime tÔsiseid probleeme pahatahtlike lisanditega.
Kuidas see töötab: iga Firefoxi koopia sisaldab "juursertifikaati". Selle "juure" vÔtmed hoitakse riistvara kaitsemoodulis (HSM), millele puudub ligipÀÀs internetile. Iga paari aasta tagant allkirjastatakse nende vÔtmega uus "vahesertifikaat", mida kasutatakse lisandite allkirjastamisel. Kui arendaja saadab lisandi, loome ajutise "lÔppsertifikaadi" ja allkirjastame selle, kasutades vahesertifikaati. SeejÀrel allkirjastatakse lisandi ise lÔppsertifikaadiga. Skeemiliselt nÀeb see vÀlja nii.
Pange tĂ€hele: iga sertifikaadil on "subjekt" (kellele sertifikaat on antud) ja "vĂ€ljastaja" (kes sertifikaadi vĂ€lja andis). Juursertifikaadi puhul on "subjekt" = "vĂ€ljastaja", kuid teiste sertifikaatide puhul on vĂ€ljastaja sertifikaadi ĂŒlemise taseme sertifikaadi subjekt, mida see allkirjastas.
Oluline punkt: iga lisand on allkirjastatud ainulaadse lĂ”ppsertifikaadiga, kuid peaaegu alati on need lĂ”ppsertifikaadid allkirjastatud ĂŒhe ja sama vahesertifikaadiga.
Autori mÀrkus: erandiks on vÀga vanad lisandid. Sel ajal kasutati erinevaid vahesertifikaate.
See vahesertifikaat tekitas probleeme: iga sertifikaat kehtib teatud aja jooksul. Enne vÔi pÀrast seda perioodi on sertifikaat kehtetu ja brauser ei kasuta selle sertifikaadiga allkirjastatud lisasid. Kahjuks aegus vahesertifikaadi kehtivus 4. mail kell 4 hommikul.
TagajÀrjed ei ilmunud kohe. Firefox ei kontrolleeri installitud lisade allkirju pidevalt, vaid umbes iga 24 tunni jÀrel, kontrollimise aeg on iga kasutaja jaoks individuaalne. SeetÔttu tekkisid probleemid mÔnel inimesel kohe, teistel aga palju hiljem. Saime probleemist esmakordselt teada just siis, kui sertifikaadi kehtivus lÔppes, ja alustasime kohe lahenduse otsimist.
Kahjude vÀhendamine
Niipea kui me aru saime, mis juhtus, pĂŒĂŒdsime olukorra halvenemist vĂ€ltida.
Esiteks, lÔpetasime uute lisade vastuvÔtmise ja allkirjastamise. Pole mÔtet kasutada selleks aegunud sertifikaati. Tagasi vaadates, vÔiksin öelda, et oleks vÔinud kÔik jÀtta nii, nagu see oli. Praegu on lisade vastuvÔtmine taasalustatud.
Teiseks, saatsime kohe vÀlja paranduse, mis katkis igapÀevase allkirjade kontrolli. Nii pÀÀstsime need kasutajad, kelle brauser ei olnud viimase 24 tunni jooksul veel kontrollinud lisasid. Praegu on see parandamine tagasi vÔetud, selle jaoks ei ole enam vajadust.
Paralleeltöö
Teoreetiliselt nÀeb probleemi lahendus vÀlja lihtne: loome uue kehtiva vahesertifikaadi ja allkirjastame kÔik lisad uuesti. Kahjuks see ei toimi:
- me ei saa kiiresti allkirjastada 15 tuhat lisandit korraga, sĂŒsteem ei ole selleks ette valmistatud
- pÀrast lisade allkirjastamist peab uuendatud versioonid kasutajateni toimetama. Enamik lisasid installitakse Mozilla serveritest, seetÔttu leiab Firefox jÀrgmise 24 tunni jooksul uuendusi, kuid mÔned arendajad levitavad allkirjastatud lisasid kolmandate osapoolte kanalite kaudu, mistÔttu peavad kasutajad selliseid lisasid kÀsitsi uuendama
Selle asemel pĂŒĂŒdsime vĂ€lja töötada paranduse, mis jĂ”uaks kĂ”ikide kasutajateni, nĂ”udes samal ajal (vĂ”i peaaegu mitte nĂ”udes) nende poolt tegevusi.
Meie jĂ”udsime ĂŒsna kiiresti kahe peamise strateegiani, mida kasutasime samaaegselt:
- Uuendage Firefoxi, et muuta sertifikaadi kehtivusperioodi. See muudab olemasolevad laiendused taas tööle, kuid nÔuab uue Firefoxi versiooni vÀljastamist ja tootmist.
- Looge kehtiv sertifikaat ja pange Firefox kuidagi sellele uuele sertifikaadile ĂŒle minema, mitte kehtivuse lĂ”ppemisega sertifikaadile.
Otsustasime kÔigepealt kasutada esimest varianti, mis tundus töötavat. PÀeva lÔpuks vÀljastasime ka teise paranduse (uue sertifikaadi), millest rÀÀgime hiljem.
Sertifikaadi asendamine
Nagu ma juba eespool mainisin, oli vajalik:
- luua uus kehtiv sertifikaat
- installida see kaugjuhtimise teel Firefoxi
Et mÔista, miks see töötab, vaatame lÀhemalt lisandi kontrollimise protsessi. Lisand ise on komplekt failidest, sealhulgas sertifikaatide ahel, mida kasutatakse allkirjastamiseks. SeetÔttu saab lisandit kontrollida, kui brauserile on tuntud juurersertifikaat, mis on Firefoxi paigaldamise ajal sisse ehitatud. Kuid nagu oleme juba teada saanud, on vahe-sertifikaat aegunud, seega pole lisandi kontrollimine vÔimalik.
Kui Firefox proovib lisandit kontrollida, ei piirdud ta sertifikaatide kasutamisega, mis sisaldavad endas lisandit. Selle asemel pĂŒĂŒab brauser luua kehtivat sertifikaatide ahelat, alustades lĂ”ppsertifikaadist ja jĂ€tkates, kuni jĂ”utakse juureni. Esimeses astmes alustame lĂ”ppsertifikaadiga ja seejĂ€rel leiame sertifikaadi, mille subjekt on lĂ”ppsertifikaadi vĂ€ljaandja (st vahe-sertifikaat). Tavaliselt tarnitakse see vahe-sertifikaat koos lisandiga, kuid sellel rollil vĂ”ib olla ka mis tahes sertifikaat brauseri sertifikaadipoest. Kui suudame kaugjuhtimise teel lisada sertifikaadipoe uue kehtiva sertifikaadi, pĂŒĂŒab Firefox seda kasutada. Olukord enne ja pĂ€rast uue sertifikaadi paigaldamist.
PÀrast uue sertifikaadi installimist on Firefox-il kaks vÔimalust sertifikaadiketju kontrollimisel: kasutada vana kehtetuks tunnistatud sertifikaati (mis ei tööta) vÔi uut kehtivat (mis töötab). Oluline on, et uus sertifikaat sisaldab samu subjektinimesid ja avalikku vÔtit, mis on vanas sertifikaadis, seetÔttu on selle allkiri lÔppsertifikaadil kehtiv. Firefox on piisavalt nutikas, et proovida mÔlemat varianti, kuni leiab töötava, seega saavad laiendused taas kontrollitud. Pange tÀhele, et see on sama loogika, mida me TLS sertifikaatide kontrollimisel kasutame.
Autor mÀrkus: lugejad, kes tunnevad WebPKI-d, mÀrkavad, et samuti toimivad ristsertifikaadid.
Selle paranduse juures on kÔige tÀhelepanuvÀÀrsem see, et see ei nÔua olemasolevate lisade uuesti allkirjastamist. Niipea kui brauser saab uue sertifikaadi, töötavad kÔik lisad jÀlle. JÀÀb keerukaks see, kuidas tarnida uus sertifikaat kasutajatele (automaatsete ja kaugjÔul) ning sundida Firefoxit kontrollima keelatud lisasid uuesti.
Normandy ja uurimissĂŒsteem
Ironiaga lahendab selle probleemi spetsiaalne lisand, mida nimetatakse 'sĂŒsteemseks'. Uuringute lĂ€biviimiseks oleme vĂ€lja töötanud sĂŒsteemi nimega Normandy, mis toimetab uuringud kasutajateni. Need uuringud viiakse automaatselt lĂ€bi brauseris ja neil on ulatuslik ligipÀÀs Firefoxi sisemistele API-dele. Uuringud saavad lisada uusi sertifikaate sertifikaatide ladustamisse.
Autor mÀrkus: me ei lisa sertifikaati mingite eriliste privileegidega; see on allkirjastatud juursusertifikaadiga, seega usaldab Firefox seda. Me lihtsalt lisame selle sertifikaatide hulka, mida brauser saab kasutada.
Seega seisneb lahendus uuringu koostamises:
- mis paigaldab kasutajatele meie koostatud uue sertifikaadi
- mis sunnib brauserit kontrollima keelatud lisasid, et need uuesti tööle hakkaksid
âAga oota,â ĂŒtled sa, âlisad ei tööta, kuidas kĂ€ivitada sĂŒsteemne lisand?â. Allkirjastame selle uue sertifikaadiga!
Kogume kÔik kokku⊠miks see nii kaua aega vÔtab?
Nii, plaan: vĂ€lja anda uus sertifikaat vana asendamiseks, luua sĂŒsteemilisand ja paigaldada see kasutajatele lĂ€bi Normandy. Probleemid, nagu ma juba ĂŒtlesin, algasid 4. mail kell 4:00 ja juba kell 12:44 samal pĂ€eval, vĂ€hem kui 9 tunni pĂ€rast, saatsime paranduse Normandy. Veel kulus 6-12 tundi, et see jĂ”uaks kĂ”ikide kasutajateni. Juba mitte paha, aga kasutajad Twitteris kĂŒsivad, miks me ei saanud kiiremini tegutseda.
Esiteks, uue vahe-sertifikaadi vĂ€ljaandmiseks kulus aega. Nagu ma juba varem mainisin, on juursertifikaadi vĂ”tmed isoleeritud turvahoidlas. See on hea turvalisuse seisukohalt, kuna juurt kasutatakse vĂ€ga harva ja see peab olema korralikult kaitstud, kuid see on veidi ebamugav, kui on vaja kiiresti uut sertifikaati allkirjastada. Ăks meie inseneridest pidi minema HSM hoiukohta. SeejĂ€rel olid ebaĂ”nnestunud katsed vĂ€lja anda Ă”iget sertifikaati, iga katse nĂ”udis ĂŒhe kuni kahe tunni kulutamist testimisele.
Teiseks, sĂŒsteemilisandi arendamine vĂ”ttis aega. Kontseptuaalselt on see vĂ€ga lihtne, kuid isegi lihtsad programmid nĂ”uavad tĂ€helepanu. Me tahtsime veenduda, et me ei halvendaks olukorda veelgi. Uuringut tuleb enne kasutajatele saatmist testida. Lisaks peab lisand olema allkirjastatud, kuid meie lisandite allkirjastamise sĂŒsteem oli vĂ€ljalĂŒlitatud, seega pidime leidma vea, kuidas vĂ€ltida.
LĂ”puks, pĂ€rast seda, kui olime uuringud saatmiseks ette valmistanud, kulus nende juurutamiseks aega. Brauser kontrollib Normandy uuenduste olemasolu iga 6 tunni jĂ€rel. Mitte kĂ”ik arvutid ei ole pidevalt sisse lĂŒlitatud ja internetiĂŒhenduses, seega kulub aega, et parandust kasutajate seas levitada.
LÔppastmed
Uuring peaks enamikul kasutajatel probleemi lahendama, kuid see ei ole kÔigile kÀttesaadav. MÔne kasutajaga on vaja erilist lÀhenemist:
- kasutajad, kes on uuringud vĂ”i telemeetria vĂ€lja lĂŒlitanud
- Androidi versiooni (Fennec) kasutajad, kus uuringud ei ole ĂŒldse toetatud
- kohandatud Firefox ESR versioonide kasutajad ettevÔtetes, kus telemeetria lubamine ei ole vÔimalik
- kasutajad, kes on MitM-proksi taga, kuna meie lisandmoodulite installimise sĂŒsteem kasutab vĂ”tme sidumist (key pinning), mis ei toimi selliste proksidega
- vanade Firefoxi versioonide kasutajad, mis ei toeta uurimisi
Me ei saa midagi teha viimase kategooria kasutajatega â neil on ikkagi soovitatav uuendada uusimale Firefoxi versioonile, kuna vanadel versioonidel on tĂ”sised lahendamatud haavatavused. Teame, et mĂ”ned inimesed jÀÀvad vanadele Firefoxi versioonidele, et kĂ€ivitada vanu lisandeid, kuid paljusid vanu lisandeid on juba uute brauseri versioonide jaoks portitud. ĂlejÀÀnud kasutajate jaoks oleme vĂ€lja töötanud plaastri, mis paigaldab uue sertifikaadi. See anti vĂ€lja bugfix-versioonina (tĂ”lkija mĂ€rkus: Firefox 66.0.5), seega saavad inimesed selle â tĂ”enĂ€oliselt on nad selle juba saanud â kaudu tavapĂ€rast uuenduste kanalit. Kui kasutate kohandatud Firefox ESR taastamist, vĂ”tke ĂŒhendust oma hooldajaga.
MÔistame, et see ei ole ideaalne. MÔnedel juhtudel on kasutajad kaotanud lisandite andmed (nÀiteks lisandi andmed Multi-Account Containers).
Seda kĂ”rvaltoimet ei Ă”nnestunud vĂ€ltida, kuid usume, et lĂŒhikeses perspektiivis valisime enamiku kasutajate jaoks parima lahenduse. Pikaajalisemal perioodil uurime muid tĂ€iustatud arhitektuurilisi lĂ€henemisviise.
Ăppetunnid
Esiteks on meie meeskond teinud uskumatut tööd, luues ja saadetades paranduse vÀhem kui 12 tunni jooksul pÀrast probleemi avastamist. Inimesena, kes osales koosolekutel, vÔin öelda, et selles keerulises olukorras töötasid inimesed vÀga kÔvasti ja aega raisati tÔeliselt vÀhe.
On ilmne, et seda kÔike ei oleks tohtinud juhtuda. Selgelt tuleb kohandada meie protsesse, et vÀhendada sarnaste juhtumite tÔenÀosust ja lihtsustada tagajÀrgede lahendamist.
JĂ€rgmisel nĂ€dalal avaldame ametliku post-mortemi ja nimekirja muudatustest, mida kavatseme teha. Praegu jagan oma mĂ”tteid. Esiteks peaks olema parem viis jĂ€lgida potentsiaalsete pommide seisundit. Peame olema kindlad, et me ei satuks olukorda, kus ĂŒks neist Ă€kki plahvatab. Me töötame veel ĂŒksikasjade kallal, kuid vĂ€hemalt on vajalik kĂ”igi selliste asjade arvesse vĂ”tmine.
Teiseks on vajalik mehhanism, millega kiiresti kasutajatele vĂ€rskendusi edastada, isegi siis, kui â eriti siis â kĂ”ik muu ei tööta. Oli tore, et saime kasutada 'uurimiste' sĂŒsteemi, kuid see ei ole tĂ€iuslik tööriist ja tal on mĂ”ned soovimatud kĂ”rvaltoimed. EeskĂ€tt teame, et paljudel kasutajatel on automaatne vĂ€rskendamine sisse lĂŒlitatud, kuid nad eelistaksid mitte osaleda uuringutes (pean tunnistama, et ka minul on need vĂ€lja lĂŒlitatud!). Samal ajal vajame viisi, kuidas edastada kasutajatele vĂ€rskendusi, kuid olgu see sise- vĂ”i tehniline rakendus, kasutajatel peab olema vĂ”imalik tellida vĂ€rskendusi (sealhulgas kiireid parandusi), kuid loobuda muudest. Lisaks peaks vĂ€rskenduste kanal olema praegusest reageerivam. I isegi 6. mail olid veel kasutajad, kes ei olnud kasutanud ei parandust ega uut versiooni. Selle probleemiga on juba tegeletud, kuid see, mis juhtus, nĂ€itas, kui oluline see on.
LĂ”puks vaatame ĂŒle lisa turvaarhitektuuri, et veenduda, et see tagab vajaliku turvalisuse taseme minimaalse riskiga midagi purustada.
JĂ€rgmisel nĂ€dalal vaatame pĂ”hjalikuma analĂŒĂŒsi tulemusi, aga seni olen valmis e-posti teel kĂŒsimustele vastama: ekr-blog@mozilla.com
Allikas: linux.org.ru
