Detay teknik sou dènye enfimite siplemantè nan Firefox

Remak tradiktè: pou konvenyans nan lektè yo, dat yo bay nan tan Moskou

Nou dènyèman rate ekspirasyon youn nan sètifika yo itilize pou siyen adisyon yo. Sa a te lakòz ajoute yo te enfim pou itilizatè yo. Kounye a ke pwoblèm nan te sitou fikse, mwen ta renmen pataje detay yo sou sa ki te pase ak travay ki te fèt la.

Background: ajoute ak siyati

Malgre ke anpil moun sèvi ak navigatè a soti nan bwat la, Firefox sipòte ekstansyon yo rele "add-ons." Avèk èd yo, itilizatè yo ajoute plizyè karakteristik nan navigatè a. Gen plis pase 15 mil ajoute-ons: soti nan anons bloke до jere dè santèn de onglet.

Enstale ajoute-ons dwe genyen siyati dijital, ki pwoteje itilizatè yo kont adisyonèl move epi ki mande yon revizyon minimòm de adisyon pa anplwaye Mozilla. Nou te prezante egzijans sa a an 2015 paske nou te fè eksperyans pwoblèm grav ak move add-ons.

Ki jan li fonksyone: Chak kopi Firefox gen yon "sètifika rasin". Se kle nan "rasin" sa a ki estoke nan Modil Sekirite Materyèl (HSM)san aksè nan rezo a. Chak kèk ane, yon nouvo "sètifika entèmedyè" siyen ak kle sa a, ki itilize lè w ap siyen adisyonèl. Lè yon pwomotè soumèt yon adisyon, nou kreye yon "sètifika fen" tanporè epi siyen li lè l sèvi avèk yon sètifika entèmedyè. Lè sa a, ajoute nan tèt li siyen ak sètifika final la. Schematically li sanble sa a.

Tanpri sonje ke chak sètifika gen yon "sijè" (ki moun yo te bay sètifika a) ak yon "emetteur" (ki moun ki bay sètifika a). Nan ka yon sètifika rasin, "subject" = "emetteur", men pou lòt sètifika, emeteur sètifika a se sijè a nan sètifika paran ke li siyen.

Yon pwen enpòtan: chak ajoute-sou siyen pa yon sètifika fen inik, men prèske tout tan sètifika final sa yo siyen pa menm sètifika entèmedyè a.

Nòt otè a: eksepsyon an se adisyon trè fin vye granmoun. Nan tan sa a, yo te itilize divès kalite sètifika entèmedyè.

Sètifika entèmedyè sa a te lakòz pwoblèm: chak sètifika valab pou yon sèten peryòd. Anvan oswa apre peryòd sa a, sètifika a pa valab epi navigatè a pa pral sèvi ak sipleman ki siyen pa sètifika sa a. Malerezman, sètifika entèmedyè a ekspire le 4 me a 4 am.

Konsekans yo pa t parèt imedyatman. Firefox pa tcheke siyati siplemantè enstale yo toujou, men apeprè yon fwa chak 24 èdtan, epi tan verifikasyon an se endividyèl pou chak itilizatè. Kòm rezilta, kèk moun te fè eksperyans pwoblèm imedyatman, pandan ke lòt moun te fè eksperyans pwoblèm anpil pita. Nou te premye vin okouran de pwoblèm nan nan moman sètifika a ekspire epi imedyatman te kòmanse chèche yon solisyon.

Diminye domaj

Yon fwa nou te reyalize sa ki te pase, nou te eseye anpeche sitiyasyon an vin pi mal.

Premyèman, yo sispann aksepte ak siyen nouvo adisyon. Pa gen okenn pwen nan sèvi ak yon sètifika ekspire pou sa. Gade dèyè, mwen ta ka di ke nou te kapab kite tout bagay jan li te ye. Kounye a nou rekòmanse aksepte sipleman.

Dezyèmman, yo imedyatman voye yon ranje ki anpeche siyati yo te tcheke sou yon baz chak jou. Kidonk, nou sove itilizatè sa yo ki gen navigatè a poko gen tan tcheke adisyonèl yo nan dènye XNUMX èdtan yo. Kounye a ranje sa a te retire epi li pa nesesè ankò.

Operasyon paralèl

Nan teyori, solisyon an nan pwoblèm nan sanble senp: kreye yon nouvo sètifika entèmedyè valab epi re-siyen chak adisyon. Malerezman sa a pa pral travay:

  • nou pa ka byen vit re-siyen 15 mil ajoute-ons nan yon fwa, sistèm nan pa fèt pou yon chaj konsa
  • Apre nou fin siyen adisyon yo, vèsyon ki ajou yo dwe delivre bay itilizatè yo. Pifò ajoute-yo enstale nan sèvè Mozilla, kidonk Firefox pral jwenn mizajou nan pwochen XNUMX èdtan yo, men gen kèk devlopè ki distribye siyen anplis atravè chanèl twazyèm pati, kidonk itilizatè yo ta dwe mete ajou sa yo manyèlman.

Olye de sa, nou te eseye devlope yon ranje ki ta rive jwenn tout itilizatè san yo pa mande anpil oswa pa gen okenn aksyon sou pati yo.

Byen vit nou rive nan de estrateji prensipal, ke nou itilize an paralèl:

  • Mete ajou Firefox pou chanje peryòd validite sètifika a. Sa a pral fè adisyon ki egziste deja yo travay majik ankò, men li pral mande pou lage ak anbake yon nouvo konstriksyon Firefox
  • Jenere yon sètifika valab epi yon jan kanmenm konvenk Firefox aksepte li olye de youn ki egziste deja ki ekspire

Nou deside sèvi ak premye opsyon an premye, ki te sanble byen travayabl. Nan fen jounen an, yo lage yon dezyèm ranje (yon nouvo sètifika), ki nou pral pale sou pita.

Ranplase yon sètifika

Kòm mwen mansyone pi wo a, li te obligatwa:

  • kreye yon nouvo sètifika valab
  • enstale li adistans nan Firefox

Pou w konprann poukisa sa a fonksyone, ann pran yon gade pi pre nan pwosesis verifikasyon adisyonèl la. Add-on nan tèt li vini kòm yon seri dosye, ki gen ladan yon chèn sètifika yo itilize pou siyen. Kòm yon rezilta, ajoute-sou ka verifye si navigatè a konnen sètifika rasin lan, ki se bati nan Firefox nan tan bati. Sepandan, kòm nou deja konnen, sètifika entèmedyè a ekspire, kidonk li enposib verifye adisyon a.

Lè Firefox eseye verifye yon adisyon, li pa limite a sèvi ak sètifika ki genyen nan add-on li menm. Olye de sa, navigatè a ap eseye kreye yon chèn sètifika valab, kòmanse ak sètifika nan fen epi kontinye jiskaske li vin nan rasin lan. Nan premye nivo a, nou kòmanse ak sètifika final la ak Lè sa a, jwenn sètifika a ki gen sijè a se emèt sètifika final la (ki se, sètifika entèmedyè a). Tipikman, sètifika entèmedyè sa a apwovizyone ak siplemantè a, men nenpòt sètifika ki soti nan depo navigatè a kapab sèvi tou kòm sètifika entèmedyè sa a. Si nou ka ajoute adistans yon nouvo sètifika valab nan magazen sètifika a, Firefox ap eseye sèvi ak li. Sitiyasyon an anvan ak apre enstale yon nouvo sètifika.

Apre w fin enstale nouvo sètifika a, Firefox pral gen de opsyon lè w ap valide chèn sètifika a: sèvi ak ansyen sètifika ki pa valab (ki pa pral travay) oswa nouvo sètifika ki valab (ki pral travay). Li enpòtan pou nouvo sètifika a gen menm non sijè a ak kle piblik ak ansyen sètifika a, kidonk siyati li sou sètifika final la pral valab. Firefox se entelijan ase pou eseye tou de opsyon jiskaske li jwenn youn ki travay, kidonk ajoute yo vin teste ankò. Remake byen ke sa a se menm lojik nou itilize pou valide sètifika TLS.

Nòt otè a: Lektè ki abitye ak WebPKI pral remake ke sètifika kwa yo travay egzakteman menm jan an.

Bagay la gwo sou ranje sa a se ke li pa mande pou ou re-siyen sipleman ki egziste deja. Le pli vit ke navigatè a resevwa nouvo sètifika a, tout adisyon yo pral travay ankò. Defi ki rete a se delivre nouvo sètifika a bay itilizatè yo (otomatikman ak adistans), osi byen ke jwenn Firefox re-tcheke sipleman ki andikape.

Normandy ak sistèm rechèch la

Iwonilman, pwoblèm sa a rezoud pa yon sipleman espesyal ki rele "sistèm". Pou fè rechèch, nou devlope yon sistèm ki rele Normandy ki bay itilizatè yo rechèch. Etid sa yo otomatikman fèt nan navigatè a, epi yo gen aksè amelyore nan API entèn Firefox yo. Rechèch ka ajoute nouvo sètifika nan magazen sètifika a.

Nòt otè a: Nou pa ajoute yon sètifika ak okenn privilèj espesyal; li siyen pa sètifika rasin lan, kidonk Firefox fè konfyans li. Nou tou senpleman ajoute li nan rezèvwa sètifika ki ka itilize pa navigatè a.

Se konsa, solisyon an se kreye yon etid:

  • enstale nouvo sètifika nou te kreye pou itilizatè yo
  • fòse navigatè a re-tcheke add-ons ki andikape pou yo travay ankò

"Men, tann," ou di, "add-ons pa travay, ki jan mwen ka lanse yon sistèm ajoute sou?" Ann siyen li ak yon nouvo sètifika!

Mete li tout ansanm... poukisa li pran anpil tan?

Se konsa, plan an: bay yon nouvo sètifika ranplase ansyen an, kreye yon sistèm ajoute-sou epi enstale li bay itilizatè yo atravè Normandy. Pwoblèm yo, jan mwen te di, te kòmanse 4 me a 4:00, e deja a 12:44 nan menm jounen an, mwens pase 9 èdtan apre, nou voye yon ranje nan Normandie. Li te pran yon lòt 6-12 èdtan pou li rive jwenn tout itilizatè yo. Pa mal ditou, men moun sou Twitter ap mande poukisa nou pa t 'kapab aji pi vit.

Premyèman, li te pran tan pou bay yon nouvo sètifika entèmedyè. Kòm mwen mansyone pi wo a, kle sètifika rasin lan estoke offline nan modil sekirite pyès ki nan konpitè. Sa a se bon nan yon pwen de vi sekirite, depi rasin lan itilize trè raman epi yo ta dwe fyab pwoteje, men li se yon ti kras enkonvenyan lè ou bezwen ijan siyen yon nouvo sètifika. Youn nan enjenyè nou yo te oblije vwayaje nan depo HSM. Lè sa a, te gen tantativ san siksè bay sètifika ki kòrèk la, ak chak tantativ koute youn oswa de èdtan te pase tès.

Dezyèmman, devlopman nan sistèm nan ajoute sou te pran kèk tan. Konseptyèlman li trè senp, men menm pwogram senp yo mande pou swen. Nou te vle asire w ke nou pa fè sitiyasyon an vin pi mal. Rechèch yo dwe teste anvan yo voye yo bay itilizatè yo. Anplis de sa, yo dwe siyen siplemantè a, men sistèm siyen siplemantè nou an te enfim, kidonk nou te oblije jwenn yon solisyon.

Finalman, yon fwa nou te gen rechèch la pare pou soumèt, deplwaman te pran tan. Navigatè a tcheke pou mizajou Normandy chak 6 èdtan. Se pa tout òdinatè yo toujou sou ak konekte ak entènèt la, kidonk li pral pran tan pou ranje a gaye nan itilizatè yo.

Etap final yo

Rechèch la ta dwe rezoud pwoblèm nan pou pifò itilizatè yo, men li pa disponib pou tout moun. Gen kèk itilizatè bezwen yon apwòch espesyal:

  • itilizatè ki gen andikape rechèch oswa telemetri
  • itilizatè yo nan vèsyon an android (Fennec), kote rechèch pa sipòte ditou
  • itilizatè yo nan bati koutim nan Firefox ESR nan antrepriz kote telemetry pa ka aktive
  • itilizatè yo chita dèyè MitM proxys, depi sistèm enstalasyon adisyonèl nou an itilize kle pinning, ki pa travay ak proxy sa yo.
  • itilizatè vèsyon eritaj Firefox ki pa sipòte rechèch

Nou pa ka fè anyen sou dènye kategori itilizatè yo - yo ta dwe toujou mete ajou ak nouvo vèsyon Firefox la, paske demode yo gen gwo frajilite san patch. Nou konnen ke gen kèk moun ki rete sou ansyen vèsyon Firefox paske yo vle kouri ansyen add-ons, men anpil nan ansyen add-ons yo te deja pote nan vèsyon pi nouvo nan navigatè a. Pou lòt itilizatè yo, nou devlope yon patch ki pral enstale yon nouvo sètifika. Li te pibliye kòm yon lage bugfix (nòt tradiktè a: Firefox 66.0.5), se konsa moun pral jwenn li - gen plis chans deja jwenn li - atravè chanèl aktyalizasyon regilye a. Si w ap itilize yon konsepsyon koutim nan Firefox ESR, tanpri kontakte moun k ap okipe w la.

Nou konprann ke sa a se pa ideyal. Nan kèk ka, itilizatè yo pèdi done siplemantè (pa egzanp, done siplemantè Kontenè Multi-Kont).

Efè segondè sa a pa t 'kapab evite, men nou kwè ke nan kout tèm nou te chwazi solisyon ki pi bon pou pifò itilizatè yo. Nan tèm long la, nou pral chèche lòt apwòch achitekti ki pi avanse.

Leson

Premyèman, ekip nou an te fè yon travay etonan pou kreye ak anbake yon ranje nan mwens pase 12 èdtan apre yo te dekouvri pwoblèm nan. Antanke yon moun ki te asiste reyinyon yo, mwen ka di nan sitiyasyon difisil sa a moun te travay anpil e yo te pèdi anpil tan.

Li evidan, pa gen anyen nan sa a ta dwe rive nan tout. Li klèman entérésan pou ajiste pwosesis nou yo pou diminye chans pou ensidan sa yo epi fè reparasyon pi fasil.

Semèn pwochèn nou pral pibliye yon post-mortem ofisyèl ak yon lis chanjman nou gen entansyon fè. Pou kounye a, mwen pral pataje panse mwen. Premyèman, dwe gen yon pi bon fason pou kontwole estati sa ki se yon bonm potansyèl. Nou bezwen asire nou ke nou pa jwenn tèt nou nan yon sitiyasyon kote youn nan yo toudenkou travay. Nou toujou ap travay sou detay yo, men nan yon minimòm, li nesesè pran an kont tout bagay sa yo.

Dezyèmman, nou bezwen yon mekanis pou byen vit delivre mizajou bay itilizatè yo, menm lè-sitou lè-tout lòt bagay echwe. Li te gwo ke nou te kapab itilize sistèm nan "rechèch", men li se yon zouti enpafè e li gen kèk efè segondè vle. An patikilye, nou konnen ke anpil itilizatè yo gen mizajou otomatik limen, men ta prefere pa patisipe nan rechèch (mwen admèt, mwen gen yo fèmen tou!). An menm tan an, nou bezwen yon fason yo voye mizajou bay itilizatè yo, men kèlkeswa aplikasyon teknik entèn la, itilizatè yo ta dwe kapab abònman ak mizajou (ki gen ladan reparasyon cho) men refize soti nan tout lòt bagay. Anplis de sa, chanèl aktyalizasyon a ta dwe pi reponn pase kounye a. Menm 6 me, te toujou itilizatè ki pa t pwofite ni ranje a oswa nouvo vèsyon an. Pwoblèm sa a te deja travay sou, men sa ki te pase te montre jan li enpòtan.

Finalman, nou pral pran yon gade pi pre nan achitekti sekirite siplemantè a pou asire w ke li bay bon nivo sekirite ak risk minim pou kraze anyen.

Semèn pwochèn nou pral gade rezilta yon analiz pi apwofondi sou sa ki te pase, men nan entre-temps mwen pral kontan reponn kesyon pa imel: [imèl pwoteje]

Sous: linux.org.ru

Add nouvo kòmantè