{"id":33377,"date":"2019-10-31T21:52:15","date_gmt":"2019-10-31T18:52:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox\/"},"modified":"2019-10-31T21:52:15","modified_gmt":"2019-10-31T18:52:15","slug":"tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox","title":{"rendered":"Szczeg\u00f3\u0142y techniczne niedawnego wy\u0142\u0105czenia dodatk\u00f3w w Firefoxie","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Przyp. t\u0142umacza: dla wygody czytelnik\u00f3w daty podane s\u0105 w czasie moskiewskim<\/i><\/p>\n<p>Ostatnio przegapili\u015bmy moment wyga\u015bni\u0119cia jednego z certyfikat\u00f3w u\u017cywanych do podpisywania dodatk\u00f3w. Doprowadzi\u0142o to do wy\u0142\u0105czenia dodatk\u00f3w u u\u017cytkownik\u00f3w. Teraz, gdy w wi\u0119kszo\u015bci problem zosta\u0142 rozwi\u0105zany, chcia\u0142bym opowiedzie\u0107 o szczeg\u00f3\u0142ach tego, co si\u0119 wydarzy\u0142o, oraz o wykonanej pracy.\n<\/p>\n<p><b>Kontekst: dodatki i podpisy<\/b><\/p>\n<p><noindex>Cho\u0107 wiele os\u00f3b korzysta z przegl\u0105darki &#171;bez zmian&#187;, Firefox obs\u0142uguje rozszerzenia zwane &#171;dodatkami&#187;. Dzi\u0119ki nim u\u017cytkownicy mog\u0105 dodawa\u0107 r\u00f3\u017cnorodne funkcje do przegl\u0105darki. Istnieje ponad 15 tysi\u0119cy dodatk\u00f3w: od <a rel=\"nofollow\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/ublock-origin\/\">blokowania reklam<\/a> do <a rel=\"nofollow\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/tree-style-tab\/\">zarz\u0105dzania setkami kart<\/a>.<\/noindex><\/p>\n<p>Zainstalowane dodatki musz\u0105 mie\u0107 <a rel=\"nofollow\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/10\/extension-signing-safer-experience\/\">cyfrowy podpis<\/a>, kt\u00f3ry chroni u\u017cytkownik\u00f3w przed z\u0142o\u015bliwymi dodatkami i wymaga minimalnej weryfikacji dodatk\u00f3w przez pracownik\u00f3w Mozilli. Wprowadzili\u015bmy ten wym\u00f3g w 2015 roku, poniewa\u017c mieli\u015bmy <a rel=\"nofollow\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/04\/15\/the-case-for-extension-signing\/\">powa\u017cne problemy<\/a> z z\u0142o\u015bliwymi dodatkami.<\/p>\n<p>Jak to dzia\u0142a: ka\u017cda kopia Firefox zawiera &#171;klucz g\u0142\u00f3wny&#187;. Klucz do tego &#171;g\u0142\u00f3wny&#187; jest przechowywany w <a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_security_module\">module zabezpiecze\u0144 sprz\u0119towych (HSM)<\/a>, kt\u00f3ry nie ma dost\u0119pu do sieci. Co kilka lat ten klucz podpisuje nowy &#171;certyfikat po\u015bredni&#187;, kt\u00f3ry jest u\u017cywany do podpisywania dodatk\u00f3w. Gdy deweloper wysy\u0142a dodatek, tworzymy tymczasowy &#171;certyfikat ko\u0144cowy&#187; i podpisujemy go przy u\u017cyciu certyfikatu po\u015bredniego. Nast\u0119pnie certyfikat ko\u0144cowy podpisuje sam dodatek. Schematycznie <a rel=\"nofollow\" href=\"https:\/\/hacks.mozilla.org\/files\/2019\/05\/Add-on-blog-post-visual-May-7-2019-768x859.png\">wygl\u0105da to tak<\/a>.<\/p>\n<p>Zauwa\u017c: ka\u017cdy certyfikat ma &#171;podmiot&#187; (komu wydano certyfikat) i &#171;wydawc\u0119&#187; (kto wyda\u0142 certyfikat). W przypadku certyfikatu g\u0142\u00f3wnego &#171;podmiot&#187; = &#171;wydawca&#187;, ale dla innych certyfikat\u00f3w wydawc\u0105 certyfikatu jest podmiot certyfikatu wy\u017cszego, kt\u00f3ry go podpisa\u0142.<\/p>\n<p>Wa\u017cna uwaga: ka\u017cdy dodatek jest podpisany unikalnym certyfikatem ko\u0144cowym, ale prawie zawsze te certyfikaty ko\u0144cowe s\u0105 podpisywane jednym i tym samym certyfikatem po\u015brednim.<\/p>\n<p><i>Uwagi autora: wyj\u0105tek stanowi\u0105 bardzo stare dodatki. W tym czasie u\u017cywano r\u00f3\u017cnych certyfikat\u00f3w po\u015brednich.<\/i><\/p>\n<p>Ten certyfikat po\u015bredni spowodowa\u0142 problemy: ka\u017cdy certyfikat jest wa\u017cny przez okre\u015blony czas. Przed lub po tym okresie certyfikat jest niewa\u017cny, a przegl\u0105darka nie u\u017cyje dodatk\u00f3w podpisanych tym certyfikatem. Niestety, wa\u017cno\u015b\u0107 certyfikatu po\u015bredniego wygas\u0142a 4 maja o 4:00.<\/p>\n<p>Skutki nie by\u0142y od razu widoczne. Firefox nie sprawdza podpis\u00f3w zainstalowanych dodatk\u00f3w non-stop, lecz w przybli\u017ceniu co 24 godziny, przy czym czas sprawdzania jest indywidualny dla ka\u017cdego u\u017cytkownika. W rezultacie u niekt\u00f3rych os\u00f3b problemy wyst\u0105pi\u0142y od razu, u innych znacznie p\u00f3\u017aniej. Dowiedzieli\u015bmy si\u0119 o problemie w momencie, gdy wygas\u0142a wa\u017cno\u015b\u0107 certyfikatu, i natychmiast zacz\u0119li\u015bmy szuka\u0107 rozwi\u0105zania.<\/p>\n<p>\n<b>Minimalizujemy straty<\/b><\/p>\n<p>Gdy tylko zrozumieli\u015bmy, co si\u0119 wydarzy\u0142o, postanowili\u015bmy zapobiec pogorszeniu sytuacji.<\/p>\n<p>Po pierwsze, przestali\u015bmy akceptowa\u0107 i podpisywa\u0107 nowe dodatki. Nie ma sensu u\u017cywa\u0107 do tego przestarza\u0142ego certyfikatu. Patrz\u0105c wstecz, powiedzia\u0142bym, \u017ce mo\u017cna by\u0142o zostawi\u0107 wszystko tak, jak jest. Teraz akceptacja dodatk\u00f3w zosta\u0142a wznowiona.<\/p>\n<p>Po drugie, natychmiast wys\u0142ali\u015bmy poprawk\u0119, kt\u00f3ra zapobieg\u0142a codziennemu sprawdzaniu podpis\u00f3w. Dzi\u0119ki temu uratowali\u015bmy tych u\u017cytkownik\u00f3w, kt\u00f3rych przegl\u0105darka w ci\u0105gu ostatniej doby jeszcze nie zd\u0105\u017cy\u0142a sprawdzi\u0107 dodatk\u00f3w. Ta poprawka zosta\u0142a teraz wycofana, poniewa\u017c nie ma ju\u017c takiej potrzeby.<\/p>\n<p>\n<b>Praca r\u00f3wnoleg\u0142a<\/b><\/p>\n<p>Teoretycznie, rozwi\u0105zanie problemu wydaje si\u0119 proste: tworzymy nowy wa\u017cny certyfikat po\u015bredni i ponownie podpisujemy ka\u017cdy dodatek. Niestety, to nie zadzia\u0142a:\n<\/p>\n<ul>\n<li>nie mo\u017cemy szybko ponownie podpisa\u0107 15 tysi\u0119cy dodatk\u00f3w jednocze\u015bnie, system nie jest zaprojektowany na tak\u0105 obci\u0105\u017cenie\n<\/li>\n<li>po tym, jak podpiszemy dodatki, zaktualizowane wersje musz\u0105 dotrze\u0107 do u\u017cytkownik\u00f3w. Wi\u0119kszo\u015b\u0107 dodatk\u00f3w jest instalowana z serwer\u00f3w Mozilla, dlatego w ci\u0105gu najbli\u017cszych 24 godzin Firefox znajdzie aktualizacje, ale niekt\u00f3rzy deweloperzy dystrybuuj\u0105 podpisane dodatki za po\u015brednictwem nieoficjalnych kana\u0142\u00f3w, wi\u0119c u\u017cytkownicy musieliby r\u0119cznie zaktualizowa\u0107 takie dodatki<\/li>\n<\/ul>\n<p>Zamiast tego starali\u015bmy si\u0119 opracowa\u0107 poprawk\u0119, kt\u00f3ra dotar\u0142aby do wszystkich u\u017cytkownik\u00f3w, przy minimalnym (lub prawie \u017cadnym) wymaganym udziale z ich strony.<\/p>\n<p>Do\u015b\u0107 szybko doszli\u015bmy do dw\u00f3ch g\u0142\u00f3wnych strategii, kt\u00f3re zastosowali\u015bmy r\u00f3wnolegle:\n<\/p>\n<ul>\n<li>Zaktualizowa\u0107 Firefox, aby zmieni\u0107 okres wa\u017cno\u015bci certyfikatu. Sprawi to, \u017ce istniej\u0105ce dodatki b\u0119d\u0105 dzia\u0142a\u0107 ponownie, ale b\u0119dzie wymaga\u0107 wydania i dostarczenia nowej wersji Firefox.\n<\/li>\n<li>Stworzy\u0107 wa\u017cny certyfikat i w jaki\u015b spos\u00f3b przekona\u0107 Firefox, aby zaakceptowa\u0142 go zamiast wygas\u0142ego.<\/li>\n<\/ul>\n<p>Postanowili\u015bmy najpierw zastosowa\u0107 pierwsz\u0105 opcj\u0119, kt\u00f3ra wydawa\u0142a si\u0119 ca\u0142kiem skuteczna. Pod koniec dnia wydali\u015bmy drug\u0105 poprawk\u0119 (nowy certyfikat), o kt\u00f3rej porozmawiamy dalej.<\/p>\n<p>\n<b>Zamiana certyfikatu<\/b><\/p>\n<p>Jak wspomnia\u0142em wcze\u015bniej, potrzebne by\u0142o:\n<\/p>\n<ul>\n<li>stworzenie nowego wa\u017cnego certyfikatu\n<\/li>\n<li>zdalne zainstalowanie go w Firefox\n<\/li>\n<\/ul>\n<p>Aby zrozumie\u0107, dlaczego to zadzia\u0142a, przyjrzyjmy si\u0119 bli\u017cej procesowi weryfikacji dodatku. Sam dodatek dostarczany jest w postaci zestawu plik\u00f3w, w tym \u0142a\u0144cucha certyfikat\u00f3w u\u017cywanego do jego podpisania. W zwi\u0105zku z tym dodatek mo\u017ce by\u0107 zweryfikowany, je\u015bli przegl\u0105darki znaj\u0105 certyfikat g\u0142\u00f3wny, kt\u00f3ry jest wbudowywany w Firefox podczas kompilacji. Jak ju\u017c wiemy, certyfikat po\u015bredni jest wygas\u0142y, wi\u0119c weryfikacja dodatku jest niemo\u017cliwa.<\/p>\n<p>Gdy Firefox pr\u00f3buje zweryfikowa\u0107 dodatek, nie ogranicza si\u0119 do u\u017cycia certyfikat\u00f3w zawartych w samym dodatku. Zamiast tego, przegl\u0105darka stara si\u0119 zbudowa\u0107 wa\u017cny \u0142a\u0144cuch certyfikat\u00f3w, zaczynaj\u0105c od certyfikatu ko\u0144cowego i kontynuuje, a\u017c dotrze do korzenia. Na pierwszym poziomie zaczynamy od certyfikatu ko\u0144cowego, a nast\u0119pnie znajdujemy certyfikat, kt\u00f3rego podmiotem jest wydawca certyfikatu ko\u0144cowego (to znaczy certyfikat po\u015bredni). Zwykle ten certyfikat po\u015bredni dostarczany jest wraz z dodatkiem, ale w tej roli mo\u017ce r\u00f3wnie\u017c wyst\u0119powa\u0107 ka\u017cdy certyfikat z magazynu przegl\u0105darki. Je\u015bli zdalnie dodamy do magazynu certyfikat\u00f3w nowy wa\u017cny certyfikat, Firefox spr\u00f3buje go u\u017cy\u0107. <a rel=\"nofollow\" href=\"https:\/\/hacks.mozilla.org\/files\/2019\/05\/Add-on-blog-post-visual-2-May-7-2019.png\">Sytuacja przed i po zainstalowaniu nowego certyfikatu<\/a>.<\/p>\n<p>Po zainstalowaniu nowego certyfikatu Firefox b\u0119dzie mia\u0142 dwie opcje przy weryfikacji \u0142a\u0144cucha certyfikat\u00f3w: korzysta\u0107 ze starego, niewa\u017cnego certyfikatu (kt\u00f3ry nie b\u0119dzie dzia\u0142a\u0142) lub nowego, wa\u017cnego (kt\u00f3ry b\u0119dzie dzia\u0142a\u0142). Wa\u017cne jest, aby nowy certyfikat zawiera\u0142 te same nazwisko podmiotu i klucz publiczny co stary certyfikat, dlatego jego podpis na ko\u0144cowym certyfikacie b\u0119dzie wa\u017cny. Firefox jest wystarczaj\u0105co inteligentny, aby spr\u00f3bowa\u0107 obu opcji, a\u017c znajdzie dzia\u0142aj\u0105cy, wi\u0119c dodatki znowu b\u0119d\u0105 uwierzytelnione. Zauwa\u017c, \u017ce to ta sama logika, kt\u00f3rej u\u017cywamy do weryfikacji certyfikat\u00f3w TLS.<\/p>\n<p><i>Uwagi autora: czytelnicy zaznajomieni z WebPKI zauwa\u017c\u0105, \u017ce tak samo dzia\u0142aj\u0105 certyfikaty krzy\u017cowe.<\/i><\/p>\n<p>Najciekawsze w tej poprawce jest to, \u017ce nie wymaga ona ponownego podpisywania istniej\u0105cych dodatk\u00f3w. Gdy tylko przegl\u0105darka otrzyma nowy certyfikat, wszystkie dodatki zn\u00f3w b\u0119d\u0105 dzia\u0142a\u0107. Pozostaje problem dostarczenia nowego certyfikatu u\u017cytkownikom (automatycznie i zdalnie) oraz zmuszenia Firefox do ponownej weryfikacji wy\u0142\u0105czonych dodatk\u00f3w.<\/p>\n<p>\n<b>Normandy i system bada\u0144<\/b><\/p>\n<p>Ironi\u0105 losu, ten problem rozwi\u0105zuje specjalny dodatek zwany &#171;systemowym&#187;. Aby przeprowadza\u0107 badania, opracowali\u015bmy system o nazwie Normandy, kt\u00f3ry dostarcza badania u\u017cytkownikom. Badania te s\u0105 automatycznie przeprowadzane w przegl\u0105darce i maj\u0105 rozszerzony dost\u0119p do wewn\u0119trznych interfejs\u00f3w API Firefox. Badania mog\u0105 dodawa\u0107 nowe certyfikaty do magazynu certyfikat\u00f3w.<\/p>\n<p><i>Uwagi autora: nie dodajemy certyfikatu z \u017cadnymi specjalnymi przywilejami; jest on podpisany certyfikatem root, dlatego Firefox mu ufa. Po prostu dodajemy go do puli certyfikat\u00f3w, kt\u00f3re mog\u0105 by\u0107 wykorzystywane przez przegl\u0105dark\u0119.<\/i><\/p>\n<p>Tak wi\u0119c rozwi\u0105zaniem jest stworzenie badania:\n<\/p>\n<ul>\n<li>instaluj\u0105cego nowo stworzony przez nas certyfikat u u\u017cytkownik\u00f3w\n<\/li>\n<li>zmuszaj\u0105cego przegl\u0105dark\u0119 do ponownej weryfikacji wy\u0142\u0105czonych dodatk\u00f3w, aby znowu zacz\u0119\u0142y dzia\u0142a\u0107\n<\/li>\n<\/ul>\n<p>&#171;Ale poczekaj&#187;, &#8212; powiesz, &#171;dodatki nie dzia\u0142aj\u0105, jak uruchomi\u0107 dodatek systemowy?&#187;. Podpiszemy go nowym certyfikatem!<\/p>\n<p>\n<b>Zbieraj\u0105c wszystko razem\u2026 dlaczego to trwa tak d\u0142ugo?<\/b><\/p>\n<p>Zatem plan: wyda\u0107 nowy certyfikat w celu zast\u0105pienia starego, stworzy\u0107 dodatek systemowy i zainstalowa\u0107 go u u\u017cytkownik\u00f3w za pomoc\u0105 Normandy. Problemy, jak ju\u017c m\u00f3wi\u0142em, zacz\u0119\u0142y si\u0119 4 maja o 4:00, a ju\u017c o 12:44 tego samego dnia, mniej ni\u017c 9 godzin p\u00f3\u017aniej, wys\u0142ali\u015bmy poprawk\u0119 do Normandy. Zaj\u0119\u0142o to jeszcze 6-12 godzin, aby dotar\u0142o do wszystkich u\u017cytkownik\u00f3w. Ju\u017c nie\u017ale, ale u\u017cytkownicy na Twitterze pytaj\u0105, dlaczego nie mogli\u015bmy dzia\u0142a\u0107 szybciej.<\/p>\n<p>Po pierwsze, zaj\u0119\u0142o to czas, aby wyda\u0107 nowy certyfikat po\u015bredni. Jak ju\u017c wspomnia\u0142em, klucz g\u0142\u00f3wnego certyfikatu jest przechowywany w trybie offline w module bezpiecze\u0144stwa sprz\u0119towego. Jest to dobre z punktu widzenia bezpiecze\u0144stwa, poniewa\u017c korze\u0144 jest u\u017cywany bardzo rzadko i powinien by\u0107 dobrze chroniony, ale to troch\u0119 k\u0142opotliwe, gdy trzeba nagle podpisa\u0107 nowy certyfikat. Jeden z naszych in\u017cynier\u00f3w musia\u0142 pojecha\u0107 do skarbca HSM. Nast\u0119pnie by\u0142y nieudane pr\u00f3by wydania w\u0142a\u015bciwego certyfikatu, a ka\u017cda pr\u00f3ba kosztowa\u0142a jedno lub dwa godziny na testowanie.<\/p>\n<p>Po drugie, stworzenie dodatku systemowego r\u00f3wnie\u017c zaj\u0119\u0142o pewien czas. Koncepcyjnie jest to bardzo proste, ale nawet proste programy wymagaj\u0105 uwagi. Chcieli\u015bmy upewni\u0107 si\u0119, \u017ce nie pogorszymy sytuacji. Badanie musi zosta\u0107 przetestowane przed wys\u0142aniem do u\u017cytkownik\u00f3w. Poza tym dodatek musi by\u0107 podpisany, ale nasz system podpisywania dodatk\u00f3w by\u0142 wy\u0142\u0105czony, wi\u0119c musieli\u015bmy szuka\u0107 obej\u015bcia.<\/p>\n<p>W ko\u0144cu, po przygotowaniu bada\u0144 do wysy\u0142ki, potrzebny by\u0142 czas na wdro\u017cenie. Przegl\u0105darka sprawdza dost\u0119pno\u015b\u0107 aktualizacji Normandy co 6 godzin. Nie wszystkie komputery s\u0105 non-stop w\u0142\u0105czone i pod\u0142\u0105czone do internetu, wi\u0119c potrzebny jest czas na to, \u017ceby poprawka rozprzestrzeni\u0142a si\u0119 w\u015br\u00f3d u\u017cytkownik\u00f3w.<\/p>\n<p>\n<b>Ostatnie kroki<\/b><\/p>\n<p>Badanie powinno naprawi\u0107 problem u wi\u0119kszo\u015bci u\u017cytkownik\u00f3w, ale nie jest dost\u0119pne dla wszystkich. Niekt\u00f3rzy u\u017cytkownicy wymagaj\u0105 specjalnego podej\u015bcia:\n<\/p>\n<ul>\n<li>u\u017cytkownicy, kt\u00f3rzy wy\u0142\u0105czyli badania lub telemetri\u0119\n<\/li>\n<li>u\u017cytkownicy wersji Android (Fennec), gdzie badania nie s\u0105 w og\u00f3le wspierane\n<\/li>\n<li>u\u017cytkownicy niestandardowych wersji Firefox ESR w przedsi\u0119biorstwach, gdzie nie mo\u017cna w\u0142\u0105czy\u0107 telemetrii\n<\/li>\n<li>U\u017cytkownicy korzystaj\u0105cy z proxy MitM, poniewa\u017c nasz system instalacji dodatk\u00f3w wykorzystuje przypinanie kluczy (key pinning), kt\u00f3re nie dzia\u0142a z takimi proxy.\n<\/li>\n<li>U\u017cytkownicy przestarza\u0142ych wersji Firefox, kt\u00f3re nie wspieraj\u0105 aktualizacji.\n<\/li>\n<\/ul>\n<p>Nie mo\u017cemy nic zrobi\u0107 w przypadku ostatniej kategorii u\u017cytkownik\u00f3w \u2014 powinni oni zaktualizowa\u0107 si\u0119 do nowej wersji Firefox, poniewa\u017c przestarza\u0142e wersje maj\u0105 powa\u017cne, niezabezpieczone luki. Wiemy, \u017ce niekt\u00f3rzy pozostaj\u0105 przy starych wersjach Firefox, poniewa\u017c chc\u0105 uruchamia\u0107 stare dodatki, ale wiele z nich zosta\u0142o ju\u017c przeniesionych do nowych wersji przegl\u0105darki. Dla innych u\u017cytkownik\u00f3w opracowali\u015bmy \u0142atk\u0119, kt\u00f3ra zainstaluje nowy certyfikat. Zosta\u0142a ona wydana jako poprawka b\u0142\u0119d\u00f3w (<i>uwaga t\u0142umacza: Firefox 66.0.5<\/i>), wi\u0119c ludzie otrzymaj\u0105 j\u0105 \u2014 najprawdopodobniej ju\u017c otrzymali \u2014 przez zwyk\u0142y kana\u0142 aktualizacji. Je\u015bli u\u017cywasz niestandardowej wersji Firefox ESR, skontaktuj si\u0119 ze swoim konserwatorem.<\/p>\n<p>Rozumiemy, \u017ce to wszystko nie jest idealne. W niekt\u00f3rych przypadkach u\u017cytkownicy tracili dane dodatk\u00f3w (na przyk\u0142ad dane dodatku <a rel=\"nofollow\" href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1549204\">Multi-Account Containers<\/a>).<\/p>\n<p>Tego skutku ubocznego nie uda\u0142o si\u0119 unikn\u0105\u0107, ale uwa\u017camy, \u017ce w kr\u00f3tkim okresie wybrali\u015bmy najlepsze rozwi\u0105zanie dla wi\u0119kszo\u015bci u\u017cytkownik\u00f3w. W d\u0142u\u017cszej perspektywie poszukamy innych, bardziej zaawansowanych podej\u015b\u0107 architektonicznych.<\/p>\n<p>\n<b>Lekcje<\/b><\/p>\n<p>Przede wszystkim nasz zesp\u00f3\u0142 wykona\u0142 niesamowit\u0105 prac\u0119, tworz\u0105c i wysy\u0142aj\u0105c poprawk\u0119 w mniej ni\u017c 12 godzin od odkrycia problemu. Jako osoba, kt\u00f3ra uczestniczy\u0142a w spotkaniach, mog\u0119 powiedzie\u0107, \u017ce w tej trudnej sytuacji ludzie pracowali bardzo ci\u0119\u017cko i niewiele czasu zosta\u0142o zmarnowane.<\/p>\n<p>Oczywi\u015bcie to wszystko w og\u00f3le nie powinno si\u0119 zdarzy\u0107. Wyra\u017anie powinno si\u0119 dostosowa\u0107 nasze procesy, aby zmniejszy\u0107 prawdopodobie\u0144stwo podobnych incydent\u00f3w i u\u0142atwi\u0107 napraw\u0119 konsekwencji.<\/p>\n<p>W przysz\u0142ym tygodniu opublikujemy oficjalny post-mortem oraz list\u0119 zmian, kt\u00f3re zamierzamy wprowadzi\u0107. Na razie chcia\u0142bym podzieli\u0107 si\u0119 swoimi my\u015blami. Po pierwsze, musi istnie\u0107 lepszy spos\u00f3b na \u015bledzenie stanu tego, co jest potencjaln\u0105 bomb\u0105 zegarow\u0105. Musimy mie\u0107 pewno\u015b\u0107, \u017ce nie znajdziemy si\u0119 w sytuacji, w kt\u00f3rej jedna z nich nagle wybuchnie. Nadal pracujemy nad szczeg\u00f3\u0142ami, ale przynajmniej musimy prowadzi\u0107 ewidencj\u0119 wszystkich takich rzeczy.<\/p>\n<p>Po drugie, potrzebny jest mechanizm szybkiego dostarczania aktualizacji do u\u017cytkownik\u00f3w, nawet wtedy, gdy \u2013 a szczeg\u00f3lnie wtedy \u2013 wszystko inne nie dzia\u0142a. By\u0142o \u015bwietnie, \u017ce mogli\u015bmy wykorzysta\u0107 system &#171;bada\u0144&#187;, ale to niedoskona\u0142e narz\u0119dzie i ma pewne niepo\u017c\u0105dane efekty uboczne. W szczeg\u00f3lno\u015bci, wiemy, \u017ce wielu u\u017cytkownik\u00f3w ma w\u0142\u0105czon\u0105 automatyczn\u0105 aktualizacj\u0119, ale woleliby nie uczestniczy\u0107 w badaniach (przyznaj\u0119, \u017ce ja te\u017c je wy\u0142\u0105czy\u0142em!). Jednocze\u015bnie potrzebujemy sposobu, aby wysy\u0142a\u0107 aktualizacje u\u017cytkownikom, ale bez wzgl\u0119du na wewn\u0119trzn\u0105 realizacj\u0119 techniczn\u0105, u\u017cytkownicy powinni mie\u0107 mo\u017cliwo\u015b\u0107 subskrybowania aktualizacji (w tym pilnych poprawek), ale rezygnowa\u0107 z wszystkiego innego. Ponadto kana\u0142 aktualizacji powinien by\u0107 bardziej responsywny ni\u017c obecnie. Nawet 6 maja nadal byli u\u017cytkownicy, kt\u00f3rzy nie skorzystali ani z poprawki, ani z nowej wersji. Pracowali\u015bmy ju\u017c nad tym problemem, ale wydarzenia pokaza\u0142y, jak bardzo jest on istotny.<\/p>\n<p>Na koniec przyjrzymy si\u0119 architekturze zabezpiecze\u0144 dodatk\u00f3w, aby upewni\u0107 si\u0119, \u017ce zapewnia nale\u017cyty poziom bezpiecze\u0144stwa przy minimalnym ryzyku uszkodzenia czego\u015b.<\/p>\n<p>W przysz\u0142ym tygodniu przeanalizujemy wyniki bardziej szczeg\u00f3\u0142owej analizy wydarze\u0144, a na razie ch\u0119tnie odpowiem na pytania drog\u0105 mailow\u0105: ekr-blog@mozilla.com<\/p>\n<p>\u0179r\u00f3d\u0142o: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"http:\/\/www.linux.org.ru\/news\/mozilla\/14982826\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430: \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u0442\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e \u043c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u0445 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0438 \u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u041f\u043e\u0434\u043e\u043f\u043b\u0451\u043a\u0430: \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0425\u043e\u0442\u044f \u043c\u043d\u043e\u0433\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-33377","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430: \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u0442\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e \u043c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0432 Firefox | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430: \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u0442\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e \u043c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:52:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:52:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Szczeg\u00f3\u0142y techniczne niedawnego wy\u0142\u0105czenia dodatk\u00f3w w Firefoxie | ProHoster","description":"Przyp. t\u0142umacza: dla wygody czytelnik\u00f3w daty podano wed\u0142ug czasu moskiewskiego Niedawno przegapili\u015bmy moment wyga\u015bni\u0119cia jednego z certyfikat\u00f3w u\u017cywanych do podpisywania dodatk\u00f3w.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0432 Firefox | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430: \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u0442\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e \u043c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/tehnicheskie-podrobnosti-nedavnego-otklyucheniya-dopolnenij-v-firefox","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:52:15+00:00","article:modified_time":"2019-10-31T18:52:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33377","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 14:58:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:46:11","updated":"2026-01-21 14:58:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=33377"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33377\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=33377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=33377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=33377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}