Automatické bezpečnostní aktualizace pluginů

Během posledních dní se rozpoutala zajímavá diskuze, která souvisela se závažnou bezpečnostní chybou, která byla odhalena v pluginu WordPress SEO. Oblíbený plugin je totiž aktuálně nasazen na více než milionu webů a vývojáři WordPressu se proto rozhodli, že provedou jeho automatickou aktualizaci, aniž by žádali uživatele o svolení.

O co vlastně konkrétně šlo? 10. března 2015 byla objevena poměrně závažná bezpečnostní chyba, o které byl nejdříve informován pouze autor pluginu WordPress SEO, aby mohl chybu ještě před jejím zveřejněním opravit. Konkrétně šlo o Cross-site Request Forgery (CSRF), což mohlo vést k Blind SQL injection. Stručně řečeno, pokud někdo podstrčil přihlášenému uživateli (s oprávněním Administrátor, Šéfredaktor či Redaktor) URL adresu obsahující závadné parametry a on ni klikl, tak mohl nechtěně způsobit změnu databáze, kterou útočník zamýšlel. Nebezpečnost pak spočívala zejména v možnosti zneužití, kdy by stačilo rozeslat nějaký hromadný emailový spam a vzhledem k rozšíření pluginu nebyly šance na úspěšný útok vůbec zanedbatelné.

Je třeba však zdůraznit, že autor pluginu (známý vývojář Yoast) okamžitě vydal opravnou verzi a na svém webu problém detailně vysvětlil. Vzhledem k závažnosti problému se však také zapojili vývojáři WordPressu, kteří byli postaveni před rozhodnutí, zda hrozbu ignorovat a ohrozit tak mnohé uživatele (kteří jen tak aktualizovat nebudou) nebo využít WordPress.org API a aktualizaci pluginu prostě na každém webu automaticky spustit. Nakonec zvítězil bezpečnostní argument a došlo k automaticky spuštěné aktualizaci pluginu, což následně vyvolalo bouřlivou diskuzi, kde se to zejména vývojářům vůbec nelíbilo.

Během diskuze také vyšlo najevo, že se to vlastně nestalo poprvé (pokud si dobře vzpomínám, tak šlo např. i o Jetpack). Nakonec to potvrdil i jeden z hlavních vývojářů WordPressu.

Okamžitě se zvedla vlna odporu, protože automaticky spouštěné aktualizace pluginů (a šablon) by měly být ve výchozím nastavení vypnuté. Vývojáři na to však zareagovali pouze úpravou manuálu, kam doplnili poměrně důležitou větu, že “ve výjimečných případech může k automaticky spouštěné aktualizaci dojít, a to na základě vyhodnocení rizika bezpečnostním týmem”.

Uživatelé mohou do budoucna podobné aktualizace výslovně odmítnout, ale musí pro to vyvinout nějakou aktivitu. Mohou tedy např. vložit krátkou funkci do souboru functions.php (zamezí aktualizacím pluginů):

add_filter( 'auto_update_plugin', '__return_false' );

Nebo automaticky spouštěné aktualizace zakázat kompletně pomocí konstanty v souboru wp-config.php:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Automaticky provedená aktualizace pluginu může bohužel způsobit (a podle reakcí na fóru také způsobila) různé problémy. Uživatelé nebyli o provedené aktualizaci nijak informováni (např. notifikačním emailem). Ano, vývojáři patrně nechtěli obtěžovat převážnou většinu uživatelů, které tato problematika vůbec nezajímá. Ale co když tam měl někdo nějakou vlastní úpravu? Ano, soubory pluginů se nemají upravovat, ale co když to třeba zrovna jinak nešlo (nebo nebyl čas vymýšlet vhodnější řešení)? Po přihlášení do administrace už jen zjistíte, že máte na webu novou verzi pluginu a úpravy zmizely v nenávratnu. Doplnili jste si třeba překlad pluginu? Aktualizace ho také přemazala. Něco přestalo na webu po aktualizaci fungovat (třeba i kvůli kompatibilitě s jiným pluginem či šablonou)? Nedozvíte se o tom jinak než náhodnou návštěvou webu.

Jako běžnému uživateli by mi to asi moc nevadilo (a možná bych se o tom ani nedozvěděl), ale obecně se mi podobné způsoby příliš nelíbí (i když jsem nebyl nijak postižen). Nejde ani tak o tuto konkrétní aktualizaci, ale spíše samotnou myšlenku. Postupně začíná být totiž stále více zřejmé napojení vývojářů na komerční server WordPress.com a provozovatelé vlastních instalací jsou stále častěji považováni za uživatele, o které je třeba se nějak postarat (a pomocí WordPress.org API to jde). Bude muset menšina uživatelů apriori něco zakazovat, aby to mohli všichni ostatní bez problémů využívat?

Začalo to postupně aktualizacemi malých verzí WordPressu, se kterými nelze než souhlasit (i když už se také vyskytly problémy) a následně se přidaly automaticky aktualizované jazykové verze. V tomto případě jsem bohužel trochu zaujatý, protože dodnes vzpomínám, jak mi vývojáři bez sebemenšího upozornění úspěšně přemazali (na vývojářské verzi WordPressu na localhostu) rozpracovanou češtinu. A nyní jsou na řadě evidentně pluginy, i když zatím pouze výjimečně z bezpečnostních důvodů. Objevily se ale i myšlenky, že by to vlastně mohlo dobře fungovat pro všechny pluginy a dokonce i šablony a velké verze WordPressu. Na jednu stranu to samozřejmě chápu a také by se mi moc líbilo, aby si všichni uživatelé konečně opravdu uvědomili, že se soubory pluginů ani šablon prostě neupravují (ale používají se odvozené šablony a vlastní pluginy). Ale na druhou stranu jsem už také viděl mnoho chyb v různých pluginech a trochu se hrozím představy, že se každá nová verze okamžitě dostane na všechny weby, které konkrétní plugin používají (zatím novou verzi otestovalo nejdříve pár prvních uživatelů a ihned nahlásili případné chyby).

WordPress si postupně získal miliony spokojených uživatelů, a to na základě myšlenky, že jednoduchý web může mít bez problémů každý. Bohužel už je však nikdo důrazně neupozornil na fakt, že se o web budou muset také trochu starat a mnoho věcí se naučit, pokud ho budou chtít upravovat k obrazu svému. Bohužel nám však začal sluníčkovou idylku trochu narušovat začarovaný kruh. Čím více nezkušených uživatelů začíná používat WordPress, tím horší úpravy provádějí v šablonách (někdy se opravdu zdráháte uvěřit) a pluginech, stačí se občas podívat do místního fóra. A právě kvůli nekorektním úpravám a obecně nízké bariéře pro realizaci úprav pro běžné uživatele pak dochází k zastarávání zdrojového kódu WordPressu. Nikdo totiž nechce uživatelům rozbít jejich weby, i když tam třeba prováděli nekorektní úpravy a používali špatné funkce na špatných místech, a to i za cenu mnoha složitých komplikací při snaze uchovávat zpětnou kompatibilitu.

Dostáváme se ale k závěru a když si to celé shrneme, tak se toho vlastně ani tak moc nestalo. Došlo k jedné nečekané aktualizaci pluginu a do budoucna zůstává několik otevřených otázek. Jedna věc je ale každopádně vyřešená, automaticky spouštěné bezpečnostní aktualizace pluginů budou patrně probíhat i do budoucna a pokud s tím máte problém, tak se podle toho zařiďte.

Aktualizace: Vývojáři dnes zveřejnili podrobné vysvětlení, kde se uvádí, že bylo s automatickými bezpečnostními aktualizacemi pluginů počítáno již ve chvíli, kdy byla tato možnost zprovozněna ve WordPressu 3.7. Podobné aktualizace tedy budou patrně stále častější a v případě závažných bezpečnostních problémů o ně mohou autoři pluginů jednoduše požádat přímo vývojáře.

Ideální český hosting pro český WordPress CZECHIA

6 thoughts on “Automatické bezpečnostní aktualizace pluginů”

  1. A proto používám starší verzi WP, která tuto funkci ještě nemá.

    Nikdo mi nemůže provádět nechtěné aktualizace a já mám klid, protože má verze je stabilní a neobsahuje zbytečné funkce, které úspěšně v průběhu let přidávají.

    Navíc přepisování mých souborů na serveru bez svolení mi přijde dost arogantní. Kompletně svou šablonu i WP mám na hodně částech přepsaný a moc by se mi nelíbilo, kdyby mi to někdo přepsal.

    A totéž mám i u pluginů.

  2. Taky jsem uvažoval o tom, že budu používat starší verzi WP, ale postupem času jsem dospěl k tomu, že to taky nebude dvakrát bezpečné. Nakonec jsem se smířil s tím, že je aktualizace prováděna automaticky. Když mi přijde 40 meilů že stránka byla aktualizována tak to jenom proběhnu jestli všechno běží a jde se dál.

  3. Carl114: Aktualizace je možné kompletně zrušit, ale zůstávat u staré verze není moc prozřetelné (bezpečnostní problémy).

    -pavel-: Objevil se někdy nějaký problém s malou automatickou aktualizací WordPressu? Osobně mám zkušenosti, že si dávají vývojáři dost pozor, aby uživatele do budoucna moc neodradili :-)

  4. Jak vůbec nastavím automatickou aktualizací pluginů, příp. jak ji vypnu. Vždy mi přijde jen mail od Wordfence (bezpečnostní plugin), že mám zastaralou nějakou verzi instalovaného pluginu a měl bych ji aktualizovat.

    U aktualizace verze WP mi to dříve vždy nabídlo aktualizaci, já mohl předem zálohovat databázi a potom zaktualizovat. Ale v posledních pár dnech se mi WP automaticky zaktualizoval na novou verzi (naposledy 4.1.4) a jen mi o tom přišel mail. Ale např. na možnost aktualizace na verzi 4.2.1 mne jen upozornil plugin Wordfence, kdy mi píše, že mám zastaralou verzi WP a měl bych aktualizovat (kritická chyba).

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *