Tæknilegar upplýsingar um nýlega slökkt á viðbótum í Firefox

Athugið þýðandi: til þæginda fyrir lesendur eru dagsetningar gefnar upp á Moskvutíma

Við misstum nýlega af því að eitt af vottorðunum sem notuð eru til að undirrita viðbætur rennur út. Þetta leiddi til þess að viðbætur voru óvirkar fyrir notendur. Nú þegar vandamálið hefur að mestu verið lagað, langar mig að deila smáatriðum um hvað gerðist og vinnuna sem var unnin.

Bakgrunnur: viðbætur og undirskriftir

Þó að margir noti vafrann út úr kassanum styður Firefox viðbætur sem kallast „viðbætur“. Með hjálp þeirra bæta notendur ýmsum eiginleikum við vafrann. Það eru yfir 15 þúsund viðbætur: frá auglýsingalokun í stjórna hundruðum flipa.

Uppsettar viðbætur verða að hafa stafræna undirskrift, sem verndar notendur fyrir skaðlegum viðbótum og krefst lágmarks yfirferðar starfsmanna Mozilla á viðbótum. Við kynntum þessa kröfu árið 2015 vegna þess að við vorum að upplifa alvarleg vandamál með skaðlegum viðbótum.

Hvernig það virkar: Hvert eintak af Firefox inniheldur „rótarvottorð“. Lykillinn að þessari „rót“ er geymdur í Vélbúnaðaröryggiseining (HSM)án netaðgangs. Á nokkurra ára fresti er nýtt „milliskilríki“ undirritað með þessum lykli, sem notað er við undirritun viðbætur. Þegar þróunaraðili sendir inn viðbót búum við til tímabundið „lokavottorð“ og undirritum það með því að nota millivottorð. Viðbótin sjálf er síðan undirrituð með lokaskírteini. Skematískt þetta lítur svona út.

Athugið að hvert skírteini hefur „viðfangsefni“ (sem skírteinið var gefið út) og „útgefandi“ (sem gaf út skírteinið). Þegar um er að ræða rótarvottorð, „subject“ = „útgefandi“, en fyrir önnur skírteini er útgefandi skírteinisins viðfang móðurskírteinisins sem það er undirritað með.

Mikilvægur punktur: hver viðbót er undirrituð með einstöku lokaskírteini, en næstum alltaf eru þessi endavottorð undirrituð með sama millivottorðinu.

Athugasemd höfundar: Undantekningin er mjög gamlar viðbætur. Á þeim tíma voru notuð ýmis millivottorð.

Þetta millivottorð olli vandamálum: hvert vottorð gildir í ákveðinn tíma. Fyrir eða eftir þetta tímabil er vottorðið ógilt og vafrinn mun ekki nota viðbætur sem eru undirritaðar með þessu vottorði. Því miður rann milliskírteinið út 4. maí klukkan 4:XNUMX.

Afleiðingarnar komu ekki fram strax. Firefox athugar ekki undirskrift uppsettra viðbóta stöðugt, heldur um það bil einu sinni á 24 klukkustunda fresti, og staðfestingartíminn er einstaklingsbundinn fyrir hvern notanda. Þetta leiddi til þess að sumir lentu í vandræðum strax en aðrir miklu seinna. Við urðum fyrst vör við vandamálið um það leyti sem skírteinið rann út og fórum strax að leita að lausn.

Að draga úr skemmdum

Þegar við áttum okkur á því hvað hafði gerst reyndum við að koma í veg fyrir að ástandið versnaði.

Í fyrsta lagi hættu þeir að samþykkja og skrifa undir nýjar viðbætur. Það þýðir ekkert að nota útrunnið skírteini fyrir þetta. Þegar ég lít til baka myndi ég segja að við hefðum getað skilið allt eftir eins og það var. Við höfum nú aftur tekið við fæðubótarefnum.

Í öðru lagi sendu þeir strax út lagfæringu sem kom í veg fyrir að undirskriftir væru athugaðar daglega. Þannig björguðum við þeim notendum sem vafra hafði ekki enn haft tíma til að athuga viðbæturnar á síðasta sólarhring. Þessi lagfæring hefur nú verið afturkölluð og er ekki lengur þörf.

Samhliða rekstur

Fræðilega séð lítur lausnin á vandamálinu einföld út: búðu til nýtt gilt millivottorð og endurskráðu hverja viðbót. Því miður virkar þetta ekki:

  • við getum ekki aftur undirritað aftur 15 þúsund viðbætur í einu, kerfið er ekki hannað fyrir slíkt álag
  • Eftir að við undirritum viðbæturnar þarf að koma uppfærðu útgáfunum til notenda. Flestar viðbætur eru settar upp frá Mozilla netþjónum, þannig að Firefox mun finna uppfærslur á næstu XNUMX klukkustundum, en sumir forritarar dreifa undirrituðum viðbótum í gegnum rásir þriðja aðila, þannig að notendur þyrftu að uppfæra slíkar viðbætur handvirkt

Þess í stað reyndum við að þróa lagfæringu sem myndi ná til allra notenda án þess að þurfa mikla eða enga aðgerð af þeirra hálfu.

Nokkuð fljótt komumst við að tveimur meginaðferðum sem við notuðum samhliða:

  • Uppfærðu Firefox til að breyta gildistíma vottorðsins. Þetta mun láta núverandi viðbætur virka aftur á töfrandi hátt, en mun krefjast þess að gefa út og senda nýja gerð af Firefox
  • Búðu til gilt vottorð og sannfærðu Firefox einhvern veginn um að samþykkja það í stað þess sem fyrir er sem er útrunnið

Við ákváðum að nota fyrsta valmöguleikann fyrst, sem leit nokkuð vel út. Í lok dagsins gáfu þeir út aðra lagfæringu (nýtt vottorð), sem við munum tala um síðar.

Að skipta um skírteini

Eins og ég nefndi hér að ofan var það krafist:

  • búa til nýtt gilt vottorð
  • settu það upp fjarstýrt í Firefox

Til að skilja hvers vegna þetta virkar skulum við skoða nánar staðfestingarferlið fyrir viðbótina. Viðbótin sjálf kemur sem sett af skrám, þar á meðal keðju vottorða sem notuð eru til undirritunar. Fyrir vikið er hægt að staðfesta viðbótina ef vafrinn þekkir rótarvottorðið, sem er innbyggt í Firefox á byggingartíma. Hins vegar, eins og við vitum nú þegar, er millivottorðið útrunnið, svo það er ómögulegt að staðfesta viðbótina.

Þegar Firefox reynir að staðfesta viðbót er það ekki takmarkað við að nota vottorðin sem eru í viðbótinni sjálfri. Þess í stað reynir vafrinn að búa til gilda vottorðakeðju, byrjar á endavottorðinu og heldur áfram þar til það kemst að rótinni. Á fyrsta stigi byrjum við á lokaskírteininu og finnum síðan vottorðið sem er útgefandi lokaskírteinisins (þ.e. millivottorðið). Venjulega fylgir þetta millivottorð með viðbótinni, en hvaða vottorð sem er úr geymslu vafrans getur einnig þjónað sem þetta millivottorð. Ef við getum fjarlægt bætt nýju gildu vottorði við vottorðageymsluna mun Firefox reyna að nota það. Staðan fyrir og eftir uppsetningu á nýju skírteini.

Eftir að nýja skírteinið hefur verið sett upp mun Firefox hafa tvo valkosti þegar vottorðakeðjan er staðfest: nota gamla ógilda vottorðið (sem mun ekki virka) eða nýja gilda vottorðið (sem mun virka). Mikilvægt er að nýja skírteinið innihaldi sama efnisheiti og opinbera lykil og gamla skírteinið, þannig að undirskrift þess á lokaskírteini sé gild. Firefox er nógu klár til að prófa báða valkostina þar til hann finnur einn sem virkar, svo viðbæturnar verða prófaðar aftur. Athugaðu að þetta er sama rökfræði og við notum til að staðfesta TLS vottorð.

Athugasemd höfundar: Lesendur sem þekkja WebPKI munu taka eftir því að krossvottorð virka á nákvæmlega sama hátt.

Það frábæra við þessa lagfæringu er að hún krefst þess ekki að þú endurskráir núverandi viðbætur. Um leið og vafrinn fær nýja vottorðið virka allar viðbætur aftur. Áskorunin sem eftir er er að afhenda notendum nýja skírteinið (sjálfvirkt og fjarstýrt), auk þess að fá Firefox til að athuga aftur óvirkar viðbætur.

Normandí og rannsóknarkerfið

Það er kaldhæðnislegt að þetta vandamál er leyst með sérstakri viðbót sem kallast „kerfi“. Til að framkvæma rannsóknir þróuðum við kerfi sem kallast Normandy sem skilar rannsóknum til notenda. Þessar rannsóknir eru sjálfkrafa gerðar í vafranum og hafa aukinn aðgang að innri API Firefox. Rannsóknir geta bætt nýjum vottorðum við vottorðageymsluna.

Athugasemd höfundar: Við erum ekki að bæta við vottorði með neinum sérstökum réttindum; það er undirritað af rótarvottorðinu, svo Firefox treystir því. Við bætum því einfaldlega við skírteinasafnið sem vafrinn getur notað.

Þannig að lausnin er að búa til rannsókn:

  • að setja upp nýja vottorðið sem við bjuggum til fyrir notendur
  • neyða vafrann til að athuga aftur óvirkar viðbætur svo þær virki aftur

„En bíddu,“ segir þú, „viðbætur virka ekki, hvernig get ég ræst kerfisviðbót? Skrifum undir það með nýju skírteini!

Að setja þetta allt saman... af hverju tekur það svona langan tíma?

Svo, áætlunin: Gefðu út nýtt vottorð til að skipta um það gamla, búðu til kerfisviðbót og settu það upp fyrir notendur í gegnum Normandí. Vandamálin byrjuðu eins og ég sagði 4. maí klukkan 4:00 og þegar klukkan 12:44 sama dag, innan við 9 klukkustundum síðar, sendum við lagfæringu til Normandí. Það tók aðra 6-12 klukkustundir að ná til allra notenda. Alls ekki slæmt, en fólk á Twitter spyr hvers vegna við hefðum ekki getað brugðist hraðar.

Í fyrsta lagi tók það tíma að gefa út nýtt millivottorð. Eins og ég nefndi hér að ofan er lykillinn að rótarvottorðinu geymdur án nettengingar í vélbúnaðaröryggiseiningunni. Þetta er gott frá öryggissjónarmiði, þar sem rótin er mjög sjaldan notuð og ætti að vera áreiðanlega varin, en það er örlítið óþægilegt þegar þú þarft að undirrita nýtt skírteini í skyndi. Einn af verkfræðingum okkar þurfti að fara í geymslu HSM. Þá voru árangurslausar tilraunir til að gefa út rétt vottorð og kostaði hver tilraun eina eða tvær klukkustundir í prófun.

Í öðru lagi tók þróun kerfisviðbótarinnar nokkurn tíma. Hugmyndalega er það mjög einfalt, en jafnvel einföld forrit krefjast umhyggju. Við vildum tryggja að við gerðum ekki ástandið verra. Prófa þarf rannsóknir áður en þær eru sendar til notenda. Auk þess þarf að undirrita viðbótina, en viðbótarundirritunarkerfið okkar var óvirkt, svo við urðum að finna lausn.

Að lokum, þegar við höfðum rannsóknina tilbúna til framlagningar, tók uppsetningin tíma. Vafrinn leitar að Normandí uppfærslum á 6 klukkustunda fresti. Ekki eru allar tölvur alltaf kveiktar og tengdar við internetið, svo það mun taka tíma fyrir lagfæringuna að breiðast út til notenda.

Lokaskref

Rannsóknin ætti að laga vandamálið fyrir flesta notendur, en er ekki í boði fyrir alla. Sumir notendur þurfa sérstaka nálgun:

  • notendur sem hafa gert rannsóknir eða fjarmælingar óvirkar
  • notendur Android útgáfunnar (Fennec), þar sem rannsóknir eru alls ekki studdar
  • notendur sérsniðinna smíði Firefox ESR í fyrirtækjum þar sem ekki er hægt að virkja fjarmælingar
  • notendur sem sitja á bak við MitM umboð, þar sem viðbótaruppsetningarkerfið okkar notar lyklafestingu, sem virkar ekki með slíkum umboðum
  • notendur eldri útgáfur af Firefox sem styðja ekki rannsóknir

Við getum ekki gert neitt í seinni flokki notenda - þeir ættu samt að uppfæra í nýju útgáfuna af Firefox, vegna þess að gamaldags notendur eru með alvarlega óuppfærða veikleika. Við vitum að sumir eru áfram á eldri útgáfum af Firefox vegna þess að þeir vilja keyra gamlar viðbætur, en margar af gömlu viðbótunum hafa þegar verið fluttar yfir í nýrri útgáfur af vafranum. Fyrir aðra notendur höfum við þróað plástur sem mun setja upp nýtt vottorð. Það var gefið út sem villuleiðréttingarútgáfa (Athugasemd þýðanda: Firefox 66.0.5), þannig að fólk mun fá það - líklega þegar hefur það - í gegnum venjulegu uppfærslurásina. Ef þú ert að nota sérsniðna byggingu af Firefox ESR, vinsamlegast hafðu samband við umsjónarmann þinn.

Við skiljum að þetta er ekki tilvalið. Í sumum tilfellum týndu notendur viðbótargögnum (til dæmis viðbótargögnum Fjölreikningsgámar).

Ekki var hægt að forðast þessa aukaverkun, en við teljum að til skamms tíma litið höfum við valið bestu lausnina fyrir flesta notendur. Til lengri tíma litið munum við leita að öðrum, fullkomnari arkitektúraðferðum.

Kennslustundir

Í fyrsta lagi vann teymið okkar ótrúlega vinnu við að búa til og senda lagfæringu á innan við 12 klukkustundum eftir að vandamálið uppgötvaðist. Sem sá sem sótti fundina get ég sagt að við þessar erfiðu aðstæður lagði fólk mjög hart að sér og mjög lítill tími fór til spillis.

Augljóslega hefði ekkert af þessu átt að gerast. Það er greinilega þess virði að laga ferla okkar til að draga úr líkum á slíkum atvikum og gera úrbætur auðveldari.

Í næstu viku munum við birta opinbera skurðaðgerð og lista yfir breytingar sem við ætlum að gera. Í bili mun ég deila hugsunum mínum. Í fyrsta lagi verður að vera til betri leið til að fylgjast með stöðu þess sem er hugsanleg tímasprengja. Við þurfum að vera viss um að við lendum ekki í aðstæðum þar sem einn þeirra vinnur allt í einu. Við erum enn að vinna úr smáatriðum, en að minnsta kosti er nauðsynlegt að taka tillit til allra slíkra hluta.

Í öðru lagi þurfum við kerfi til að skila uppfærslum fljótt til notenda, jafnvel þegar - sérstaklega þegar - allt annað bilar. Það var frábært að við gátum notað „rannsóknarkerfið“ en það er ófullkomið tæki og hefur nokkrar óæskilegar aukaverkanir. Sérstaklega vitum við að kveikt er á sjálfvirkum uppfærslum hjá mörgum notendum, en vilja helst ekki taka þátt í rannsóknum (ég viðurkenni að ég hef slökkt á þeim líka!). Á sama tíma þurfum við leið til að senda uppfærslur til notenda, en hver sem innri tæknileg útfærsla er, ættu notendur að geta gerst áskrifandi að uppfærslum (þar á meðal heitum lagfæringum) en afþakkað allt annað. Að auki ætti uppfærslurásin að vera móttækilegri en hún er núna. Jafnvel þann 6. maí voru enn notendur sem nýttu hvorki lagfæringuna né nýju útgáfuna. Þegar var búið að vinna í þessu vandamáli en það sem gerðist sýndi hversu mikilvægt það er.

Að lokum munum við skoða öryggisarkitektúr viðbótarinnar nánar til að tryggja að hún veiti rétt öryggisstig með lágmarkshættu á að eitthvað brotni.

Í næstu viku munum við skoða niðurstöður ítarlegri greiningar á því sem gerðist, en á meðan mun ég gjarnan svara spurningum með tölvupósti: [netvarið]

Heimild: linux.org.ru

Bæta við athugasemd