Firefox-en azken gehigarrien desgaitzearen xehetasun teknikoak

Ohar itzultzailea: irakurleen erosotasunerako, datak Moskuko garaian ematen dira

Duela gutxi, gehigarriak sinatzeko erabiltzen diren ziurtagirietako baten iraungipena galdu dugu. Horren ondorioz, erabiltzaileentzako gehigarriak desgaitu egin ziren. Orain arazoa gehienbat konponduta dagoela, gertatutakoaren eta egindako lanaren xehetasunak partekatu nahiko nituzke.

Aurrekariak: gehiketak eta sinadurak

Jende askok arakatzailea lehenbailehen erabiltzen badu ere, Firefoxek "gehigarriak" izeneko luzapenak onartzen ditu. Haien laguntzarekin, erabiltzaileek hainbat funtzio gehitzen dizkiote arakatzaileari. 15 mila gehigarri baino gehiago daude: tik iragarkien blokeoa to kudeatu ehunka fitxa.

Instalatutako gehigarriak izan behar dira sinadura digitala, erabiltzaileak gehigarri gaiztoetatik babesten dituena eta Mozillako langileek gehigarrien gutxieneko berrikuspena eskatzen duena. Baldintza hau 2015ean sartu genuen bizitzen ari ginelako arazo larriak gehigarri gaiztoekin.

Nola funtzionatzen duen: Firefox-en kopia bakoitzak "root ziurtagiria" dauka. "Erro" honen gakoa bertan gordetzen da Hardwarearen segurtasun modulua (HSM)sarerako sarbiderik gabe. Urte gutxiro, "tarteko ziurtagiri" berri bat sinatzen da gako honekin, gehigarriak sinatzeko erabiltzen dena. Garatzaile batek gehigarri bat bidaltzen duenean, aldi baterako "amaiera-ziurtagiria" sortzen dugu eta tarteko ziurtagiri bat erabiliz sinatzen dugu. Ondoren, gehigarria bera sinatzen da azken ziurtagiriarekin. Eskematikoki honen itxura du.

Kontuan izan ziurtagiri bakoitzak "gai" bat (ziurtagiria nori eman zitzaion) eta "jaulkitzailea" (ziurtagiria eman zuena) dituela. Erro-ziurtagiriaren kasuan, "subject" = "issuer", baina beste ziurtagiri batzuen kasuan, ziurtagiriaren igorlea da sinatzen duen guraso-ziurtagiriaren subjektua.

Puntu garrantzitsu bat: gehigarri bakoitza amaierako ziurtagiri bakarrarekin sinatzen da, baina ia beti amaierako ziurtagiri hauek tarteko ziurtagiri berdinarekin sinatzen dira.

Egilearen oharra: salbuespena oso zaharrak diren gehiketak dira. Garai hartan, tarteko hainbat ziurtagiri erabiltzen ziren.

Tarteko ziurtagiri horrek arazoak sortu zituen: ziurtagiri bakoitzak epe jakin baterako balio du. Epe hori baino lehen edo ondoren, ziurtagiria baliogabea da eta arakatzaileak ez ditu ziurtagiri honek sinatutako gehigarririk erabiliko. Zoritxarrez, bitarteko ziurtagiria maiatzaren 4an iraungi zen goizeko 4etan.

Ondorioak ez ziren berehala agertu. Firefoxek ez ditu etengabe egiaztatzen instalatutako gehigarrien sinadurak, 24 orduz behin, gutxi gorabehera, eta egiaztapen-denbora banakakoa da erabiltzaile bakoitzarentzat. Ondorioz, pertsona batzuek berehala arazoak izan zituzten, beste batzuek, berriz, askoz geroago. Ziurtagiria iraungi zenean arazoaren berri izan genuen eta berehala hasi ginen irtenbide bila.

Kalteak murriztea

Gertatutakoaz konturatu ginenean, egoerak okerrera ez zedin saiatu ginen.

Lehenik eta behin, gehigarri berriak onartu eta sinatzeari utzi zioten. Horretarako ez du balio iraungitako ziurtagiri bat erabiltzeak. Atzera begiratuta, dena zegoen bezala utzi genezakeela esango nuke. Orain osagarriak onartzen hasi gara.

Bigarrenik, berehala bidali zuten sinadurak egunero egiaztatzea eragozten zuen konponketa. Horrela, azken XNUMX orduetan arakatzaileak oraindik gehigarriak egiaztatzeko astirik izan ez duten erabiltzaileak gorde ditugu. Konponketa hau kendu egin da eta jada ez da beharrezkoa.

Funtzionamendu paraleloa

Teorian, arazoaren konponbideak erraza dirudi: bitarteko baliozko ziurtagiri berri bat sortu eta gehigarri bakoitza berriro sinatu. Zoritxarrez, honek ez du funtzionatuko:

  • ezin ditugu azkar berriro sinatu 15 mila gehigarri aldi berean, sistema ez dago karga horretarako diseinatuta
  • Gehiketak sinatu ondoren, bertsio eguneratuak erabiltzaileei entregatu behar zaizkie. Gehigarri gehienak Mozilla zerbitzarietatik instalatzen dira, beraz, Firefoxek eguneraketak topatuko ditu hurrengo XNUMX orduetan, baina garatzaile batzuek sinatutako gehigarriak hirugarrenen kanalen bidez banatzen dituzte, erabiltzaileek eskuz eguneratu beharko lituzkete gehigarri horiek.

Horren ordez, erabiltzaile guztiengana iritsiko zen konponketa bat garatzen saiatu ginen, haien partetik ekintza handirik edo bat ere behar izan gabe.

Oso azkar heldu ginen bi estrategia nagusietara, paraleloan erabili genituenak:

  • Eguneratu Firefox ziurtagiriaren balio-epea aldatzeko. Honek lehendik dauden gehigarriak magiaz funtzionatuko du berriro, baina Firefox-en bertsio berri bat askatu eta bidaltzea eskatuko du
  • Sortu baliozko ziurtagiri bat eta nolabait konbentzitu Firefox iraungi denaren ordez onar dezan

Lehenengo aukera erabiltzea erabaki genuen, nahiko bideragarria zirudien. Egunaren amaieran, bigarren konponketa bat kaleratu zuten (ziurtagiri berri bat), geroago hitz egingo dugunaz.

Ziurtagiri bat ordezkatzea

Goian aipatu dudan bezala, beharrezkoa zen:

  • sortu baliozko ziurtagiri berri bat
  • instalatu urrunetik Firefox-en

Honek zergatik funtzionatzen duen ulertzeko, ikus diezaiogun gehigarrien egiaztapen-prozesuari. Gehigarria bera fitxategi multzo gisa dator, sinatzeko erabiltzen den ziurtagiri kate bat barne. Ondorioz, gehigarria egiaztatu daiteke arakatzaileak erro-ziurtagiria ezagutzen badu, Firefox-en eraikitze-unean eraikita dagoena. Hala ere, lehendik dakigunez, tarteko ziurtagiria iraungita dago, beraz, ezinezkoa da gehigarria egiaztatzea.

Firefox gehigarri bat egiaztatzen saiatzen denean, ez da gehigarriaren barruan dauden ziurtagiriak erabiltzera mugatzen. Horren ordez, arakatzailea baliozko ziurtagiri kate bat sortzen saiatzen da, amaierako ziurtagiritik hasi eta errora iritsi arte. Lehen mailan, amaierako ziurtagiriarekin hasten gara eta, ondoren, amaierako ziurtagiriaren gaia den ziurtagiria aurkitzen dugu (hau da, tarteko ziurtagiria). Normalean tarteko ziurtagiri hau gehigarriarekin hornitzen da, baina nabigatzailearen biltegiratze edozein ziurtagiri ere tarteko ziurtagiri hau izan daiteke. Ziurtagirien biltegian baliozko ziurtagiri berri bat urrutitik gehitzen badugu, Firefox hura erabiltzen saiatuko da. Ziurtagiri berri bat instalatu aurreko eta ondorengo egoera.

Ziurtagiri berria instalatu ondoren, Firefoxek bi aukera izango ditu ziurtagiri-katea balioztatzean: erabili baliogabeko ziurtagiri zaharra (ez du funtzionatuko) edo baliozko ziurtagiri berria (funtzionatuko duena). Garrantzitsua da ziurtagiri berriak ziurtagiri zaharraren gai-izen eta gako publiko bera izatea, beraz, azken ziurtagirian duen sinadura baliozkoa izango da. Firefox nahikoa inteligentea da bi aukerak probatzeko funtzionatzen duen bat aurkitu arte, beraz, gehigarriak berriro probatu egiten dira. Kontuan izan TLS ziurtagiriak balioztatzeko erabiltzen dugun logika bera dela.

Egilearen oharra: WebPKI ezagutzen duten irakurleek ohartuko dira ziurtagiri gurutzatuak modu berean funtzionatzen dutela.

Konponketa honen gauza bikaina da ez duela eskatzen lehendik dauden gehigarriak berriro sinatzea. Arakatzaileak ziurtagiri berria jaso bezain laster, gehigarri guztiek funtzionatuko dute berriro. Gainerako erronka erabiltzaileei ziurtagiri berria ematea da (automatikoki eta urrunetik), baita Firefoxek desgaitutako gehigarriak berriro egiaztatzea ere.

Normandia eta ikerketa sistema

Ironikoki, arazo hau "sistema" izeneko gehigarri berezi baten bidez konpontzen da. Ikerketak egiteko, erabiltzaileei ikerketak eskaintzen dizkien Normandy izeneko sistema garatu dugu. Azterketa hauek automatikoki egiten dira arakatzailean, eta Firefoxen barneko APIetarako sarbide hobetua dute. Ikerketak ziurtagiri berriak gehi ditzake ziurtagirien biltegian.

Egilearen oharra: ez dugu pribilegio berezirik duen ziurtagiririk gehitzen ari; erro ziurtagiriak sinatzen du, beraz, Firefox fidagarria da. Besterik gabe, nabigatzaileak erabil ditzakeen ziurtagiri multzora gehitzen dugu.

Beraz, irtenbidea azterketa bat sortzea da:

  • erabiltzaileentzat sortu dugun ziurtagiri berria instalatzen
  • arakatzailea desgaitutako gehigarriak berriro egiaztatzea behartuz, berriro funtziona dezaten

"Baina itxaron", diozu, "gehigarriek ez dute funtzionatzen, nola abiarazi dezaket sistemaren gehigarri bat?" Sina dezagun ziurtagiri berri batekin!

Guztia batuta... zergatik ari da hainbeste denbora?

Beraz, plana: ziurtagiri berri bat eman zaharra ordezkatzeko, sistemaren gehigarri bat sortu eta erabiltzaileei Normandiaren bidez instalatu. Arazoak, esan bezala, maiatzaren 4an hasi ziren 4:00etan, eta dagoeneko egun bereko 12:44etan, 9 ordu beranduago, konponketa bat bidali genuen Normandiara. Beste 6-12 ordu behar izan zituen erabiltzaile guztiengana iristeko. Ez dago batere gaizki, baina Twitterren jendea galdetzen ari da zergatik ezin genuen azkarrago jokatu.

Lehenik eta behin, tarteko ziurtagiri berri bat emateko denbora behar izan zen. Goian aipatu dudan bezala, erro-ziurtagiriaren gakoa lineaz kanpo gordetzen da hardware-segurtasun moduluan. Hau ona da segurtasunaren ikuspuntutik, erroa oso gutxitan erabiltzen baita eta modu fidagarrian babestuta egon behar duelako, baina apur bat deserosoa da ziurtagiri berri bat premiaz sinatu behar duzunean. Gure ingeniari batek HSM biltegira joan behar izan zuen. Ondoren, ziurtagiri zuzena emateko saiakerak huts egin ziren, eta saiakera bakoitzak probak egiteko ordu bat edo bi kostatu zuen.

Bigarrenik, sistemaren gehigarriaren garapenak denbora pixka bat behar izan zuen. Kontzeptualki oso erraza da, baina programa sinpleek ere arreta behar dute. Egoera okerrago ez genuela ziurtatu nahi genuen. Ikerketa probatu behar da erabiltzaileei bidali aurretik. Horrez gain, gehigarria sinatu behar da, baina gure gehigarrien sinatzeko sistema desgaituta zegoen, beraz, konponbide bat aurkitu behar izan dugu.

Azkenik, ikerketa aurkezteko prest genuenean, zabaltzeak denbora behar zuen. Arakatzaileak Normandiako eguneraketak egiaztatzen ditu 6 orduz behin. Ordenagailu guztiak ez daude beti Internetera konektatuta eta, beraz, denbora beharko da konponketa erabiltzaileei zabaltzeko.

Azken urratsak

Ikerketak erabiltzaile gehienentzat konpondu beharko luke arazoa, baina ez dago guztiontzat eskuragarri. Erabiltzaile batzuek ikuspegi berezia behar dute:

  • Ikerketa edo telemetria desgaituta duten erabiltzaileak
  • Android bertsioaren erabiltzaileak (Fennec), non ikerketa batere onartzen ez den
  • Firefox ESR bertsio pertsonalizatuen erabiltzaileak telemetria gaitu ezin den enpresetan
  • MitM proxyen atzean eserita dauden erabiltzaileak, gure gehigarrien instalazio-sistemak gako-apintzea erabiltzen baitu, proxy horiekin funtzionatzen ez duena.
  • Ikerketa onartzen ez duten Firefox-en bertsio zaharragoen erabiltzaileak

Ezin dugu ezer egin azken erabiltzaile-kategoria horri buruz - hala ere Firefox-en bertsio berrira eguneratu beharko lukete, zaharkituek adabaki gabeko ahultasun larriak baitituzte. Badakigu pertsona batzuk Firefox-en bertsio zaharragoetan geratzen direla, gehigarri zaharrak exekutatu nahi dituztelako, baina gehigarri zahar asko jada arakatzailearen bertsio berrietara eraman dira. Beste erabiltzaileentzat, ziurtagiri berri bat instalatuko duen adabaki bat garatu dugu. Akatsen konponketa gisa kaleratu zen (Itzultzailearen oharra: Firefox 66.0.5), jendeak eguneratze-kanal arruntaren bidez lortuko du, ziurrenik jadanik. Firefox ESR-ren eraikuntza pertsonalizatu bat erabiltzen ari bazara, jarri harremanetan zure zaintzailearekin.

Ulertzen dugu hori ez dela ideala. Zenbait kasutan, erabiltzaileek gehigarrien datuak galdu zituzten (adibidez, gehigarrien datuak Kontu anitzeko edukiontziak).

Bigarren mailako efektu hori ezin izan da saihestu, baina uste dugu epe laburrean erabiltzaile gehienentzako irtenbiderik onena aukeratu dugula. Epe luzera, beste ikuspegi arkitektoniko aurreratuago batzuk bilatuko ditugu.

Ikasgaiak

Lehenik eta behin, gure taldeak lan bikaina egin zuen arazoa aurkitu eta 12 ordu baino gutxiagoan konponketa bat sortu eta bidaltzen. Bileretara joandakoa naizenez, esan dezaket egoera zail honetan jendeak oso gogor lan egin zuela eta oso denbora gutxi galdu zela.

Bistan denez, horrelakorik ez zen batere gertatu behar. Argi dago gure prozesuak egokitzea merezi duela horrelako gertakariak gertatzeko probabilitatea murrizteko eta konponketa errazteko.

Datorren astean post-mortem ofiziala eta egin nahi ditugun aldaketen zerrenda argitaratuko ditugu. Oraingoz, nire pentsamenduak partekatuko ditut. Lehenik eta behin, erloju-bonba potentziala denaren egoera kontrolatzeko modu hobea izan behar da. Ziur egon behar dugu ez garela aurkitzen horietako batek bat-batean lan egiten duen egoera batean. Oraindik xehetasunak lantzen ari gara, baina, gutxienez, beharrezkoa da horrelako gauza guztiak kontuan hartzea.

Bigarrenik, erabiltzaileei eguneraketak azkar helarazteko mekanismo bat behar dugu, nahiz eta β€”batez ereβ€” gainontzeko guztiak huts egiten duenean. Ikaragarria izan zen "ikerketa" sistema erabili ahal izatea, baina tresna inperfektua da eta nahi ez diren albo-ondorio batzuk ditu. Bereziki, badakigu erabiltzaile askok eguneratze automatikoak aktibatuta dituztela, baina nahiago luketela ikerketan ez parte hartu (aitortzen dut, desaktibatuta ditudala ere!). Aldi berean, erabiltzaileei eguneraketak bidaltzeko modu bat behar dugu, baina barne inplementazio teknikoa edozein dela ere, erabiltzaileek eguneratzeetara harpidetu ahal izan beharko lukete (konponketa beroak barne), baina gainerako guztia baztertu. Gainera, eguneratze-kanalak orain baino erantzun handiagoa izan beharko luke. Maiatzaren 6an ere bazeuden erabiltzaileak ez konponketa ez bertsio berria aprobetxatu ez zutenak. Arazo hau dagoeneko landu da, baina gertatutakoak erakutsi zuen zein garrantzitsua den.

Azkenik, gehigarriaren segurtasun-arkitektura sakonago aztertuko dugu segurtasun-maila egokia eskaintzen duela ziurtatzeko, ezer hausteko arrisku minimoarekin.

Datorren astean gertatutakoaren analisi sakonago baten emaitzak ikusiko ditugu, baina bitartean posta elektronikoz galderei erantzungo diet: [posta elektroniko bidez babestua]

Iturria: linux.org.ru

Gehitu iruzkin berria