Hiljuti toimunud tÀiendusete tehnilised detailid Firefoxis

TÔlkija mÀrkus: lugejate mugavuse huvides on kuupÀevad esitatud Moskva ajavööndis

Hiljuti jĂ€ime ilma ĂŒhe meie allkirjastamiseks kasutatava sertifikaadi kehtivusajast. See pĂ”hjustas tĂ€iendusete peatamise kasutajate seas. NĂŒĂŒd, kui enamik probleeme on lahendatud, soovin rÀÀkida toimunust lĂ€hemalt ning tehtud tööst.

Taust: tÀiendid ja allkirjad

Kuigi paljud inimesed kasutavad brauserit "karbist vĂ€lja", toetab Firefox laiendusi, mida nimetatakse "tĂ€iendused". Nende abil saavad kasutajad lisada brauserisse erinevaid funktsioone. Praegu on saadaval ĂŒle 15 000 tĂ€iendi: alates reklaami blokeerimisest kuni sajate vahelehtede haldamiseni.

Paigaldatud tÀiendusidel peab olema digitaalne allkiri, mis kaitseb kasutajaid pahatahtlike tÀienduste eest ning nÔuab minimaalset tÀienduste kontrollimist Mozilla töötajate poolt. Meie kehtestasime selle nÔude 2015. aastal, kuna kogesime tÔsiseid probleeme pahatahtlike tÀiendustega.

Kuidas see töötab: iga Firefoxi koopia sisaldab "juursertifikaati". Selle "juure" vĂ”tme hoiab riistvara kaitsemoodul (HSM), mis ei ole vĂ”rku ĂŒhendatud. Iga paariaasta tagant allkirjastatakse selle vĂ”tmega uus "vahesertifikaat", mida kasutatakse lisade allkirjastamiseks. Kui arendaja saadab lisa, loome ajutise "lĂ”ppsertifikaadi" ja allkirjastame selle vahesertifikaadiga. SeejĂ€rel allkirjastatakse lĂ”ppsertifikaadiga ise lisa. Skeemiliselt nĂ€eb see vĂ€lja nii.

Pange tÀhele: igal sertifikaadil on "subjekt" (kellele sertifikaat on vÀlja antud) ja "vÀljaandja" (kes sertifikaadi vÀljastas). Juursertifikaadi puhul on "subjekt" = "vÀljaandja", kuid muude sertifikaatide puhul on sertifikaadi vÀljaandja ettepoole mineva sertifikaadi subjekt, millega see on allkirjastatud.

Oluline punkt: iga lisa on allkirjastatud unikaalse lÔppsertifikaadiga, kuid peaaegu alati on need lÔppsertifikaadid allkirjastatud sama vahesertifikaadiga.

Autori mÀrkused: erandiks on vÀga vanad lisandused. Sel ajal kasutati erinevaid vahesertifikaate.

See vahesertifikaat tekitas probleeme: iga sertifikaat on kehtiv kindla perioodi jooksul. Enne vÔi pÀrast seda perioodi sertifikaat ei kehti ja brauser ei kasuta selle sertifikaadiga allkirjastatud lisandeid. Kahjuks aegus vahesertifikaadi kehtivus 4. mail kell 4 hommikul.

TagajÀrjed ei ilmunud kohe. Firefox kontrollib installitud lisandite allkirju mitte pidevalt, vaid umbes kord 24 tunni jooksul, ning kontrollimise aeg on individuaalne iga kasutaja jaoks. Selle tulemusena tekkisid probleemid mÔnel inimesel kohe, mÔnel aga palju hiljem. Saime probleemist teada umbes samal ajal, kui sertifikaadi kehtivus lÔppes, ja hakkasime kohe lahendust otsima.

Kahju vÀhendamine

Kui me aru saime, mis juhtus, pĂŒĂŒdsime olukorra halvenemist vĂ€ltida.

Esiteks lĂ”petati uute lisade vastuvĂ”tmine ja allkirjastamine. Pole mĂ”tet kasutada selleks aegunud sertifikaati. Tagasi vaadates ĂŒtleksin, et oleks vĂ”inud kĂ”ik nii jĂ€tta. Praegu on lisade vastuvĂ”tt taas alustatud.

Teiseks saadeti kohe vÀlja parandav teade, mis takistas igapÀevaseid allkirjade kontrollimisi. Nii pÀÀstsime neid kasutajaid, kelle brauserid ei olnud viimase 24 tunni jooksul veel lisanud kontrollinud. Praegu on see parandav teade tagasi vÔetud, vajadus selle jÀrele on kadunud.

Paralleelne töö

Teoreetiliselt nÀeb probleemi lahendus vÀlja lihtne: loome uue kehtiva vahe-sertifikaadi ja uuesti allkirjastame iga lisa. Kahjuks see ei Ônnestu:

  • me ei saa kiiresti allkirjastada 15 tuhat lisandust korraga, sĂŒsteem ei ole selliseks koormuseks valmis.
  • PĂ€rast lisade allkirjastamist peavad vĂ€rskendatud versioonid jĂ”udma kasutajateni. Enamik lisasid installitakse Mozilla serveritest, seega leiab Firefox jĂ€rgmise 24 tunni jooksul vĂ€rskendusi, kuid mĂ”ned arendajad levitavad allkirjastatud lisasid kolmandate osapoolte kanalite kaudu, mistĂ”ttu peavad kasutajad selliseid lisasid kĂ€sitsi vĂ€rskendama.

Selle asemel pĂŒĂŒdsime vĂ€lja töötada lahenduse, mis jĂ”uaks kĂ”igi kasutajateni, nĂ”udmata (vĂ”i peaaegu mitte nĂ”udmata) nende poolset tegevust.

JĂ”udsime ĂŒsna kiiresti kahe peamise strateegiani, mida kasutasime paralleelselt:

  • VĂ€rskendada Firefoxi, et muuta sertifikaadi kehtivusaega. See paneks olemasolevad lisad taas töötama, kuid nĂ”uaks uue Firefoxi versiooni vĂ€ljaandmist ja tarnimist.
  • Luua kehtiv sertifikaat ja kuidagi veenda Firefoxi seda aktsepteerima, mitte olemasolevat, mille kehtivusaeg on lĂ”ppenud.

Otsustasime alguses kasutada esimest varianti, mis tundus ĂŒsna töökindel. PĂ€eva lĂ”puks vabastasime ka teise lahenduse (uue sertifikaadi), millest rÀÀgime edasi.

Sertifikaadi vahetamine

Nagu ma eelnevalt mainisin, oli vajalik:

  • luua uus kehtiv sertifikaat
  • kaugelt see Firefoxi installida

Selle mÔistmiseks, miks see töötab, vaatame pÔhjalikumalt pistikprogrammi kontrollimise protsessi. Ise pistikprogramm koosneb failide kogumist, sealhulgas sertifikaadivÔrgustikku, mida kasutatakse allkirjastamiseks. SeetÔttu saab pistikprogrammi kontrollida, kui brauserile on teada juursertifikaat, mis on Firefoxi koostamise ajal sisse ehitatud. Kuid nagu me juba teame, on vahe-sertifikaat aegunud, seetÔttu ei ole pistikprogrammi kontrollimine vÔimalik.

Kui Firefox ĂŒritab laiendust kontrollida, ei piira ta end ainult laienduses sisalduvate sertifikaatide kasutamisega. Selle asemel pĂŒĂŒab brauser luua kehtiva sertifikaadi ahela, alustades lĂ”ppsertifikaadist ja liikudes edasi kuni juureni. Esimesel tasemel alustame lĂ”ppsertifikaadist ja seejĂ€rel otsime sertifikaadi, mille subjekt on lĂ”ppsertifikaadi vĂ€ljaandja (st vahesertifikaat). Tavalises olukorras kaasneb see vahesertifikaat laiendusega, kuid sellessamas rollis vĂ”idakse kasutada ka mĂ”nda sertifikaati brauseri hoidlast. Kui suudame kaugel lisada sertifikaatide hoidlasse uue kehtiva sertifikaadi, pĂŒĂŒab Firefox seda kasutada. Olukord enne ja pĂ€rast uue sertifikaadi installimist.

PÀrast uue sertifikaadi installimist on Firefoxil sertifikaadiga seotud kaheksa vÔimalust: kasutada vanemat ja kehtetuks tunnistatud sertifikaati (mis ei tööta) vÔi uut ja kehtivat sertifikaati (mis töötab). Oluline on, et uus sertifikaat sisaldab samu subjektinime ja avalikku vÔtme, mis ka vanal sertifikaadil, seega on selle allkiri lÔppsertifikaadil kehtiv. Firefox on piisavalt nutikas, et proovida mÔlemat varianti, kuni ta leiab töötava, seetÔttu saavad lisad taas kinnitatud. Pange tÀhele, et see on sama loogika, mida me kasutame TLS-sertifikaatide kontrollimisel.

Autori mÀrkus: lugejad, kes tunnevad WebPKI-d, mÀrkavad, et ristsertifikaadid töötavad tÀpselt samamoodi.

Selle paranduse kĂ”ige rohkem tĂ€helepanuvÀÀrne aspekt on see, et see ei nĂ”ua olemasolevate lisade allkirjastamist. Niipea kui brauser saab uue sertifikaadi, hakkavad kĂ”ik lisad taas tööle. Üks keerukus seisneb selles, kuidas tarnida uus sertifikaat kasutajatele (automaatselt ja eemalt) ning sundida Firefoxi lĂ€bi vaatama keelatud lisasid.

Normandy ja uurimisĂŒsteem

Ironiseerivalt lahendab selle probleemi spetsiaalne lisand, mida nimetatakse 'sĂŒsteemseks'. Uuringute lĂ€biviimiseks oleme arendanud sĂŒsteemi nimega Normandy, mis toob uuringud kasutajateni. Need uuringud toimuvad automaatselt brauseris ja neil on laiendatud juurdepÀÀs Firefoxi sise-API-dele. Uuringud saavad lisada uusi sertifikaate sertifikaatide salvestusse.

Autori mÀrkuse kohaselt: me ei lisa sertifikaati mingite eriliste privileegidega; see on allkirjastatud juursertifikaadiga, seetÔttu usaldab Firefox seda. Me lihtsalt lisame selle sertifikaatide hulka, mida brauser saab kasutada.

Seega, lahendus seisneb uuringu loomises:

  • kasutajatele meie loodud uue sertifikaadi seadmine
  • brauseri sundimine desaktiveeritud lisandeid uuesti kontrollima, et need töötaksid taas

„Aga oota,“ ĂŒtlete teie, „lisandid ei tööta, kuidas kĂ€ivitada sĂŒsteemset lisandit?“. Allkirjastame selle uue sertifikaadiga!

Kogume kÔik kokku... miks see nii kaua vÔtab?

Nii et, plaan: vĂ€lja anda uus sertifikaat, et asendada vana, luua sĂŒsteemne tĂ€iendus ja paigaldada see kasutajatele lĂ€bi Normandy. Probleemid, nagu ma ĂŒtlesin, algasid 4. mail kell 4:00 ja juba kell 12:44 samal pĂ€eval, vĂ€hem kui 9 tunni jooksul, saatsime paranduse Normandy'sse. Selle jĂ”udmine kĂ”ikide kasutajateni vĂ”ttis veel 6-12 tundi. See on juba mitte halb, kuid Twitteris kĂŒsivad kasutajad, miks me ei saanud kiiremini tegutseda.

Esiteks, uue vahesertifikaadi vĂ€ljaandmiseks kulus aega. Nagu ma eelnevalt mainisin, on juursertifikaadi vĂ”ti salvestatud eraldi turvaseadmestikku. See on turvalisuse seisukohalt hea, kuna juurt kasutatakse vĂ€ga harva ja see peab olema usaldusvÀÀrselt kaitstud, kuid see on veidi ebamugav, kui on vaja kiiresti uue sertifikaadi allkirjastamist. Ühel meie inseneridest tuli minna HSM-i ladustamisse. SeejĂ€rel olid katsetused Ă”igete sertifikaatide vĂ€ljastamiseks ebaĂ”nnestunud, ning iga katse vĂ”ttis aega ĂŒks kuni kaks tundi, mis kulus testimise peale.

Teiseks, vĂ”ttis sĂŒsteemi tĂ€ienduse vĂ€ljatöötamine aega. Kontseptuaalselt on see vĂ€ga lihtne, kuid isegi lihtsad programmid nĂ”uavad tĂ€helepanu. Soovisime veenduda, et me ei teeks olukorda veel hullemaks. Uuringut peab enne kasutajatele saatmist testima. Lisaks peab tĂ€iendus olema allkirjastatud, kuid meie tĂ€iendite allkirjastamise sĂŒsteem oli vĂ€lja lĂŒlitatud, seega tuli leida lahendus.

LĂ”puks, kui olime uuringud saatmiseks ette valmistanud, vĂ”ttis juurutamine aega. Brauser kontrollib Normandy vĂ€rskenduste kĂ€ttesaadavust iga 6 tunni jĂ€rel. Mitte kĂ”ik arvutid ei ole pidevalt sisse lĂŒlitatud ja vĂ”rguga ĂŒhendatud, seetĂ”ttu on vajalik aeg, et parandus kasutajateni jĂ”uaks.

LÔppfaasid

Uuring peaks lahendama probleemi enamikul kasutajatel, kuid see ei ole kÔigile kergesti kÀttesaadav. Teatud kasutajate puhul on vajalik eriline lÀhenemine:

  • kasutajad, kes on uuringud vĂ”i telemetria vĂ€lja lĂŒlitanud
  • Androidi versiooni (Fennec) kasutajad, kus uuringud pole ĂŒldse toetatud
  • Firefox ESR kohandatud versioonide kasutajad ettevĂ”tetes, kus telemeetriat ei ole vĂ”imalik lubada
  • kasutajad, kes on MitM-prokside taga, kuna meie lisade paigaldamise sĂŒsteem kasutab vĂ”tme sidumist, mis ei tööta selliste proksidega
  • vanemate Firefoxi versioonide kasutajad, mis ei toeta uuringute lĂ€biviimist

Me ei saa viimase kategooria kasutajatega midagi ette vĂ”tta — nad peaksid kindlasti uuendama Firefoxi uue versioonini, sest vanematel on tĂ”sised, lahendamata haavatavused. Me teame, et mĂ”ned inimesed jÀÀvad vanadele Firefoxi versioonidele lootuses kĂ€ivitada vanu lisaelemente, kuid paljusid vanu lisaelemente on juba kohandatud uute brauseriversioonide jaoks. ÜlejÀÀnud kasutajatele oleme vĂ€lja töötanud patareid, mis paigaldavad uue sertifikaadi. See on vĂ€lja antud kui veaparanduse versioon (tĂ”lkija mĂ€rkus: Firefox 66.0.5), seega saavad inimesed selle — tĂ”enĂ€oliselt on nad juba saanud — lĂ€bi tavalise uuenduste kanali. Kui kasutate kohandatud Firefox ESR versiooni, pöörduge oma hooldaja poole.

Me mÔistame, et see pole kÔikehÔlmav lahendus. MÔnel juhul on kasutajad kaotanud lisaandmed (nÀiteks lisasegu Multi-Account Containers).

Seda kĂ”rvalmĂ”ju oli vĂ€ltimatu, kuid usume, et lĂŒhiajaliselt valisime enamikule kasutajatele parima lahenduse. Pikaajalises plaanis otsime vĂ€lja teisi, tĂ€iustatud arhitektuurilisi lĂ€henemisviise.

Tunnid

Esiteks on meie meeskond teinud imelist tööd, luues ja edastades paranduse vÀhem kui 12 tunni jooksul pÀrast probleemi tuvastamist. Inimesena, kes oli koosolekutel kohal, vÔin öelda, et selles keerulises olukorras töötasid inimesed vÀga hoolsalt ning aega raisati vaid vÀhe.

On ilmne, et seda kĂ”ike ei oleks tohtinud ĂŒldse juhtuda. Selgelt on vaja korrigeerida meie protsesse, et vĂ€hendada sarnaste juhtumite tĂ”enĂ€osust ja kergendada tagajĂ€rgede eemaldamist.

JĂ€rgmise nĂ€dala jooksul avaldame ametliku post-mortemi ja muudatuste nimekirja, mida kavatseme teha. Kuni selle ajani jagan oma mĂ”tteid. Esiteks peab olema parem viis jĂ€lgida, mis on potentsiaalne aegpomm. Peame olema kindlad, et me ei satuks olukorda, kus ĂŒks neist ĂŒhel hetkel plahvatab. Töötame veel ĂŒksikasjade kallal, kuid vĂ€hemalt on vajalik kĂ”igi selliste asjade arvestamine.

Teiseks vajame kiire uuenduste edastamise mehhanismi kasutajatele, isegi siis, kui — eriti kui — kĂ”ik muu ei tööta. Oli suurepĂ€rane, et saime kasutada „uurimiste“ sĂŒsteemi, kuid see on ebatĂ€iuslik tööriist ja sel on mĂ”ned soovimatud kĂ”rvaltoimed. EelkĂ”ige teame, et paljude kasutajate automaatne vĂ€rskendamine on sisse lĂŒlitatud, kuid nad eelistaksid uurimistest mitte osa vĂ”tta (tĂ”den, et mul on need samuti vĂ€lja lĂŒlitatud!). Samas vajame viisi, kuidas edastada kasutajatele vĂ€rskendusi, kuid ĂŒkskĂ”ik, milline on sisemine tehniline teostus, peavad kasutajad saama tellida vĂ€rskendusi (sealhulgas kiireid parandusi), kuid loobuda kĂ”igest muust. Lisaks peab vĂ€rskenduste kanal olema praegusest reageerivam. Isegi 6. mail olid kasutajad, kes ei olnud kasutanud ĂŒhtki parandust ega uut versiooni. Selle probleemi kallal on juba töötatud, kuid toimunud nĂ€itas, kui oluline see on.

LÔpuks vaatame lÀhemalt lisaehitiste turbekonstruktsiooni, et veenduda, et see tagab vajaliku turvalisuse taseme minimaalse riskiga midagi rikkuda.

JĂ€rgmisel nĂ€dalal vaatame pĂ”hjalikuma analĂŒĂŒsi tulemusi, aga praegu olen valmis vastama kĂŒsimustele e-posti teel: ekr-blog@mozilla.com

Allikas: linux.org.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster