Firefox-та қондырмаларды жақында өшірудің техникалық мәліметтері

Ескерту аудармашы: оқырмандарға ыңғайлы болу үшін күндер Мәскеу уақытымен берілген

Жақында біз қондырмаларға қол қою үшін пайдаланылатын сертификаттардың бірінің мерзімін өткізіп алдық. Бұл пайдаланушылар үшін қондырмалардың өшірілуіне әкелді. Мәселе негізінен шешілгендіктен, мен болған оқиға мен атқарылған жұмыстың егжей-тегжейлерімен бөліскім келеді.

Анықтама: толықтырулар мен қолдар

Көптеген адамдар шолғышты қораптан тыс пайдаланғанымен, Firefox «қондырмалар» деп аталатын кеңейтімдерді қолдайды. Олардың көмегімен пайдаланушылар браузерге әртүрлі мүмкіндіктерді қосады. 15 мыңнан астам қосымшалар бар: бастап жарнаманы блоктау қарай жүздеген қойындыларды басқарыңыз.

Орнатылған қондырмалар болуы керек цифрлық қолтаңба, ол пайдаланушыларды зиянды қондырмалардан қорғайды және Mozilla қызметкерлері қондырмаларды ең аз тексеруді талап етеді. Біз бұл талапты 2015 жылы бастан өткергендіктен енгіздік күрделі мәселелер зиянды қосымшалармен.

Ол қалай жұмыс істейді: Firefox-тың әрбір көшірмесінде «түбірлік сертификат» бар. Бұл «түбірдің» кілті сақталады Аппараттық қауіпсіздік модулі (HSM)желіге кірусіз. Бірнеше жыл сайын осы кілтпен жаңа «аралық сертификатқа» қол қойылады, ол қондырмаларға қол қою кезінде пайдаланылады. Әзірлеуші ​​қондырманы жіберген кезде, біз уақытша «соңғы сертификатты» жасаймыз және оған аралық сертификат арқылы қол қоямыз. Содан кейін қосымшаның өзі соңғы сертификатпен қол қойылады. Схемалық түрде мынаған ұқсайды.

Әрбір сертификаттың «субъектісі» (сертификат кімге берілген) және «эмитент» (сертификат берген) бар екенін ескеріңіз. Түбірлік куәлік жағдайында «тақырып» = «эмитент», бірақ басқа сертификаттар үшін сертификаттың эмитенті оған қол қойылған негізгі куәліктің нысанасы болып табылады.

Маңызды сәт: әрбір қондырма бірегей соңғы сертификатпен қол қойылған, бірақ әрқашан дерлік бұл соңғы сертификаттар бірдей аралық сертификатпен қол қойылады.

Автордың ескертуі: Ерекшелік - өте ескі толықтырулар. Ол кезде әртүрлі аралық сертификаттар қолданылды.

Бұл аралық сертификат қиындықтар туғызды: әрбір сертификат белгілі бір мерзімге жарамды. Осы кезеңге дейін немесе кейін сертификат жарамсыз және браузер осы сертификатпен қол қойылған қондырмаларды пайдаланбайды. Өкінішке орай, аралық аттестаттың мерзімі 4 мамыр күні таңғы сағат 4-те бітті.

Оның салдары бірден пайда болған жоқ. Firefox орнатылған қондырмалардың қолтаңбаларын үнемі тексермейді, бірақ шамамен 24 сағат сайын бір рет тексереді және тексеру уақыты әр пайдаланушы үшін жеке. Нәтижесінде кейбір адамдар проблемаларды бірден сезінсе, басқалары кейінірек проблемаларды бастан кешірді. Біз мәселе туралы алдымен сертификаттың мерзімі біткен кезде білдік және бірден шешім іздей бастадық.

Зақымдануды азайту

Не болғанын түсінген соң, жағдайдың нашарлауына жол бермеуге тырыстық.

Біріншіден, олар жаңа толықтыруларды қабылдауды және қол қоюды тоқтатты. Бұл үшін мерзімі өткен сертификатты пайдаланудың қажеті жоқ. Өткенге көз жүгіртсем, бәрін сол қалпында қалдырған болар едік. Біз қазір қоспаларды қабылдауды қайта бастадық.

Екіншіден, олар қолдарды күнделікті тексеруге кедергі келтіретін түзетуді дереу жіберді. Осылайша, біз браузері соңғы XNUMX сағат ішінде қондырмаларды тексеріп үлгермеген пайдаланушыларды сақтап қалдық. Бұл түзету енді алынып тасталды және енді қажет емес.

Параллель жұмыс

Теориялық тұрғыдан мәселенің шешімі қарапайым болып көрінеді: жаңа жарамды аралық сертификат жасаңыз және әрбір қосымшаға қайта қол қойыңыз. Өкінішке орай, бұл жұмыс істемейді:

  • біз бірден 15 мың қондырмаға тез қол қоя алмаймыз, жүйе мұндай жүктемеге арналмаған
  • Біз толықтыруларға қол қойғаннан кейін жаңартылған нұсқалар пайдаланушыларға жеткізілуі керек. Қосымшалардың көпшілігі Mozilla серверлерінен орнатылған, сондықтан Firefox келесі XNUMX сағат ішінде жаңартуларды табады, бірақ кейбір әзірлеушілер қол қойылған қондырмаларды үшінші тарап арналары арқылы таратады, сондықтан пайдаланушылар мұндай қондырмаларды қолмен жаңартуы керек.

Оның орнына, біз барлық пайдаланушыларға көп немесе ешқандай әрекетті қажет етпейтін түзетуді әзірлеуге тырыстық.

Біз параллельді қолданатын екі негізгі стратегияға тез келдік:

  • Сертификаттың жарамдылық мерзімін өзгерту үшін Firefox браузерін жаңартыңыз. Бұл бұрыннан бар қондырмаларды қайтадан сиқырлы жұмыс істейді, бірақ Firefox-тың жаңа құрылымын шығаруды және жіберуді қажет етеді
  • Жарамды сертификатты жасаңыз және қандай да бір түрде Firefox-ты мерзімі өтіп кеткен бар сертификаттың орнына оны қабылдауға сендіріңіз

Біз бірінші нұсқаны қолдануды шештік, ол өте тиімді болып көрінді. Күннің соңында олар екінші түзетуді (жаңа сертификат) шығарды, ол туралы кейінірек айтатын боламыз.

Куәлікті ауыстыру

Жоғарыда айтқанымдай, бұл қажет болды:

  • жаңа жарамды сертификат жасаңыз
  • оны Firefox-қа қашықтан орнатыңыз

Неліктен бұл жұмыс істейтінін түсіну үшін қосымшаны тексеру процесін егжей-тегжейлі қарастырайық. Қосымшаның өзі қол қою үшін пайдаланылатын сертификаттар тізбегін қоса алғанда, файлдар жиынтығы ретінде келеді. Нәтижесінде, браузер құрастыру кезінде Firefox жүйесіне орнатылған түбірлік сертификатты білетін болса, қондырманы тексеруге болады. Дегенмен, біз білетіндей, аралық сертификаттың мерзімі өтіп кеткен, сондықтан қосымшаны тексеру мүмкін емес.

Firefox қондырманы тексеруге әрекет жасағанда, ол қондырманың өзінде қамтылған сертификаттарды пайдаланумен шектелмейді. Оның орнына, браузер соңғы сертификаттан басталып, түбірге жеткенше жалғасатын жарамды сертификаттар тізбегін жасауға тырысады. Бірінші деңгейде біз соңғы сертификаттан бастаймыз, содан кейін субъектісі соңғы сертификаттың эмитенті болып табылатын сертификатты табамыз (яғни, аралық сертификат). Әдетте бұл аралық сертификат қондырмамен бірге жеткізіледі, бірақ браузер жадындағы кез келген сертификат осы аралық сертификат ретінде де қызмет ете алады. Егер біз сертификаттар қоймасына жаңа жарамды сертификатты қашықтан қоса алсақ, Firefox оны пайдалануға тырысады. Жаңа сертификатты орнатқанға дейінгі және кейінгі жағдай.

Жаңа сертификатты орнатқаннан кейін Firefox-та сертификаттар тізбегін тексеру кезінде екі опция болады: ескі жарамсыз сертификатты (ол жұмыс істемейді) немесе жаңа жарамды сертификатты (жұмыс істейтін) пайдаланыңыз. Жаңа сертификатта ескі куәлікпен бірдей тақырып атауы мен ашық кілт болуы маңызды, сондықтан оның соңғы сертификаттағы қолы жарамды болады. Firefox жұмыс істейтінін тапқанша екі опцияны да қолданып көруге жеткілікті ақылды, сондықтан қондырмалар қайтадан тексеріледі. Бұл TLS сертификаттарын тексеру үшін қолданатын логика екенін ескеріңіз.

Авторлық ескерту: WebPKI-мен таныс оқырмандар кросс-сертификаттардың дәл осылай жұмыс істейтінін атап өтеді.

Бұл түзетудің тамаша жағы - ол бар қондырмаларға қайта қол қоюды қажет етпейді. Браузер жаңа сертификатты алғаннан кейін барлық қондырмалар қайтадан жұмыс істейді. Қалған мәселе - жаңа сертификатты пайдаланушыларға (автоматты және қашықтан) жеткізу, сондай-ақ өшірілген қондырмаларды қайта тексеру үшін Firefox-ты алу.

Нормандия және зерттеу жүйесі

Бір қызығы, бұл мәселе «жүйе» деп аталатын арнайы қосымша арқылы шешіледі. Зерттеу жүргізу үшін біз пайдаланушыларға зерттеулерді жеткізетін Нормандия деп аталатын жүйені жасадық. Бұл зерттеулер браузерде автоматты түрде орындалады және Firefox ішкі API интерфейстеріне кеңейтілген қолжетімділікке ие. Зерттеу сертификаттар қоймасына жаңа сертификаттарды қоса алады.

Автордың ескертуі: Біз ешқандай ерекше артықшылықтары бар сертификатты қоспаймыз; ол түбірлік сертификатпен қол қойылған, сондықтан Firefox оған сенеді. Біз оны жай ғана шолғыш пайдалана алатын сертификаттар пулына қосамыз.

Мәселен, шешім зерттеуді құру болып табылады:

  • пайдаланушылар үшін жасаған жаңа сертификатты орнату
  • браузерді өшірілген қондырмаларды қайта тексеруге мәжбүрлейді, осылайша олар қайтадан жұмыс істейді

«Бірақ күте тұрыңыз», - дейсіз, «қондырмалар жұмыс істемейді, жүйелік қосымшаны қалай іске қосуға болады?» Жаңа сертификатпен қол қояйық!

Барлығын біріктіріп... неге сонша ұзаққа созылады?

Сонымен, жоспар: ескісін ауыстыру үшін жаңа сертификат беріңіз, жүйелік қондырманы жасаңыз және оны Нормандия арқылы пайдаланушыларға орнатыңыз. Мәселелер, мен айтқанымдай, 4 мамырда сағат 4:00-де басталды және сол күні 12:44-те, 9 сағаттан аз уақыт өткен соң, біз Нормандияға түзету жібердік. Оның барлық пайдаланушыларға жетуі үшін тағы 6-12 сағат қажет болды. Жаман емес, бірақ Twitter-дегі адамдар неге біз тезірек әрекет ете алмадық деп сұрайды.

Біріншіден, жаңа аралық сертификат беруге уақыт қажет болды. Жоғарыда айтқанымдай, түбірлік сертификаттың кілті аппараттық қауіпсіздік модулінде желіден тыс сақталады. Бұл қауіпсіздік тұрғысынан жақсы, өйткені түбір өте сирек пайдаланылады және сенімді түрде қорғалуы керек, бірақ жаңа сертификатқа шұғыл қол қою қажет болғанда бұл аздап ыңғайсыз. Біздің инженерлеріміздің бірі HSM сақтау орнына баруға мәжбүр болды. Содан кейін дұрыс сертификатты беруге сәтсіз әрекеттер жасалды және әрбір әрекет тестілеуге бір немесе екі сағат жұмсалды.

Екіншіден, жүйелік қосымшаны әзірлеу біраз уақытты алды. Тұжырымдама бойынша бұл өте қарапайым, бірақ қарапайым бағдарламалардың өзі күтімді қажет етеді. Біз жағдайды нашарлатпағанымызға көз жеткізгіміз келді. Зерттеу пайдаланушыларға жіберілмес бұрын сынақтан өтуі керек. Сонымен қатар, қондырмаға қол қою керек, бірақ біздің қосымшаға қол қою жүйеміз өшірілген, сондықтан уақытша шешім табуға тура келді.

Ақырында, зерттеуді тапсыруға дайын болғаннан кейін, орналастыруға уақыт қажет болды. Браузер Нормандия жаңартуларын әр 6 сағат сайын тексереді. Барлық компьютерлер үнемі қосулы және Интернетке қосылмаған, сондықтан түзету пайдаланушыларға таралуы үшін уақыт қажет.

Соңғы қадамдар

Зерттеу көптеген пайдаланушылар үшін мәселені шешуі керек, бірақ барлығына қол жетімді емес. Кейбір пайдаланушылар ерекше тәсілді қажет етеді:

  • зерттеу немесе телеметрияны өшірген пайдаланушылар
  • зерттеуге мүлдем қолдау көрсетілмейтін Android нұсқасының (Fennec) пайдаланушылары
  • телеметрияны қосу мүмкін емес кәсіпорындардағы Firefox ESR реттелетін құрастыруларын пайдаланушылар
  • MitM прокси-серверлерінің артында отырған пайдаланушылар, өйткені біздің қосымша орнату жүйеміз кілттерді бекітуді пайдаланады, ол мұндай прокси-серверлермен жұмыс істемейді
  • зерттеуге қолдау көрсетпейтін Firefox-тың ескі нұсқаларын пайдаланушылар

Біз пайдаланушылардың соңғы санаты туралы ештеңе істей алмаймыз - олар әлі де Firefox-тың жаңа нұсқасына жаңартылуы керек, өйткені ескіргендердің елеулі осалдықтары бар. Кейбір адамдар ескі қондырмаларды іске қосқысы келетіндіктен Firefox-тың ескі нұсқаларында қалатынын білеміз, бірақ ескі қондырмалардың көпшілігі браузердің жаңарақ нұсқаларына көшіріліп қойған. Басқа пайдаланушылар үшін біз жаңа сертификатты орнататын патч әзірледік. Ол қатені түзету шығарылымы ретінде шығарылды (аудармашының ескертпесі: Firefox 66.0.5), сондықтан адамдар оны әдеттегі жаңарту арнасы арқылы алады - мүмкін әлдеқашан алған. Firefox ESR реттелетін құрастыруын пайдалансаңыз, қызмет көрсетушіге хабарласыңыз.

Бұл идеал емес екенін түсінеміз. Кейбір жағдайларда пайдаланушылар қосымша деректерін жоғалтады (мысалы, қосымша деректер Көп шотты контейнерлер).

Бұл жанама әсерді болдырмау мүмкін емес, бірақ біз қысқа мерзімде көптеген пайдаланушылар үшін ең жақсы шешімді таңдадық деп есептейміз. Ұзақ мерзімді перспективада біз басқа да жетілдірілген сәулет тәсілдерін іздейміз.

Сабақ

Біріншіден, біздің команда мәселе анықталғаннан кейін 12 сағаттан аз уақыт ішінде түзетуді жасап, жөнелтетін керемет жұмыс жасады. Жиналыстарға қатысқан адам ретінде айта аламын, бұл қиын жағдайда адамдар өте көп жұмыс істеді және өте аз уақыт босқа кетті.

Мұның ешқайсысы мүлдем болмауы керек екені анық. Мұндай оқиғалардың ықтималдығын азайту және түзетуді жеңілдету үшін процестерімізді реттегеніміз анық.

Келесі аптада біз ресми өлгеннен кейін және енгізгіміз келетін өзгерістер тізімін жариялаймыз. Әзірге өз ойыммен бөлісемін. Біріншіден, әлеуетті сағаттық бомбаның күйін бақылаудың жақсы жолы болуы керек. Біз олардың біреуі кенеттен жұмыс істейтін жағдайға тап болмайтынымызға сенімді болуымыз керек. Біз әлі де егжей-тегжейлі жұмыс істеп жатырмыз, бірақ кем дегенде, мұндай нәрселердің барлығын ескеру қажет.

Екіншіден, бізге жаңартуларды пайдаланушыларға жылдам жеткізу механизмі қажет, тіпті бәрі сәтсіз болған кезде де. Біз «зерттеу» жүйесін пайдалана алғанымыз өте жақсы болды, бірақ ол жетілмеген құрал және кейбір қажетсіз жанама әсерлері бар. Атап айтқанда, біз көптеген пайдаланушылардың автоматты жаңартулары қосылғанын білеміз, бірақ зерттеуге қатыспауды жөн көреді (мойындаймын, мен оларды да өшірдім!). Сонымен қатар, бізге жаңартуларды пайдаланушыларға жіберудің жолы қажет, бірақ ішкі техникалық іске асыру қандай болса да, пайдаланушылар жаңартуларға (соның ішінде жылдам түзетулер) жазыла алады, бірақ қалғандарының барлығынан бас тарта алады. Бұған қоса, жаңарту арнасы қазіргіден көбірек жауап беруі керек. Тіпті 6 мамырда да түзетуді де, жаңа нұсқаны да пайдаланбаған пайдаланушылар болды. Бұл мәселе қазірдің өзінде өңделген, бірақ болған оқиға оның қаншалықты маңызды екенін көрсетті.

Соңында біз қондырманың қауіпсіздік архитектурасын егжей-тегжейлі қарастырамыз, ол кез келген нәрсені бұзудың ең аз қаупі бар қауіпсіздіктің дұрыс деңгейін қамтамасыз етеді.

Келесі аптада біз не болғанын егжей-тегжейлі талдау нәтижелерін қарастырамыз, бірақ әзірше мен электрондық пошта арқылы сұрақтарға жауап беруге қуаныштымын: [электрондық пошта қорғалған]

Ақпарат көзі: linux.org.ru

пікір қалдыру