Zamkli jsme dveře. I před opravou.

Weby klientů na WordPressu jsme převedli na vlastní, stabilnější hosting. Ve stejných dnech přišla kritická zranitelnost a dva weby byly napadeny. Tady je celý příběh, i ta nepříjemná část.

Weby
dvanáct, na jednom hostingu
Rok
2026
Aktualizace
bezpečnostní každý týden, ostatní každý měsíc

Řada našich klientů má web na WordPressu. Některé jsme kdysi postavili my, jiné jsme převzali. Běžely u různých hostingů, na různých verzích a s desítkami pluginů, z nichž část nikdo roky neaktualizoval.

Pak jsme je převedli k sobě, na jeden společný hosting na stabilnější platformě, který spravujeme sami.

Nový hosting

Že se weby nemění bez kontroly, mělo přinést stabilitu. Hned den po přesunu přišla zranitelnost, na které se ukázalo, co to stojí.

Co se pokazilo

Ve stejných dnech, kdy weby přecházely na nový hosting, se objevila kritická zranitelnost v samotném jádru WordPressu. Útočník přes ni mohl bez hesla založit administrátora. Tvůrci WordPressu vydali opravu a poslali ji webům automaticky.

K našim webům nedorazila. Automatické aktualizace jsme vypnuli, protože jsme nechtěli, aby se web měnil bez kontroly. Opravu jsme tedy museli nasadit sami, a to jsme neudělali včas. Dva weby byly napadeny, objevily se na nich tisíce spamových článků a přišli jsme na to až po skoro třech týdnech.

  1. 1. denWeby se stěhují na nový hosting1 den
  2. 2. denZveřejněná kritická zranitelnost WordPressu2 dny
  3. 4. denPrvní útokskoro tři týdny bez povšimnutí
  4. 23. denNapadení odhaleno1 den
  5. 24. denOprava na všech webech

Oba weby jsme uklidili a ze záloh vrátili do původního stavu. Opravu jsme nasadili na všechny weby a ověřili, že útok už neprojde.

WordPress přitom celou dobu hlásil, že je k dispozici bezpečnostní oprava. Jen to nikdo nečetl.

Co jsme změnili

Zabezpečení, jak ho mají weby dnes, vzniklo až po odhalení napadení. Právě kvůli němu.

Aktualizace jako pravidelná práce. Bezpečnostní opravy jádra připravujeme každý týden, pluginy jednou měsíčně se dvoutýdenním odstupem od vydání. Vždy jako změnu, kterou někdo zkontroluje.

Weby se samy hlásí. Každý web sleduje, jestli mu nezastaralo jádro nebo pluginy. Nový účet nebo pokus o vyšší oprávnění hlásí okamžitě. Zbytek chodí jednou týdně v jednom souhrnu, ne v deseti e-mailech denně, které nikdo nečte.

Přihlášení pod zámkem. Po opakovaném zadání špatného hesla se přihlášení na půl hodiny zavře. Kdo smí publikovat, musí přihlášení potvrdit i kódem z e-mailu. Nového administrátora přes web založit nejde.

Jeden web neohrozí ostatní. Každý web má do databáze vlastní přístup, takže případný útok na jeden se nedostane do databází ostatních klientů.

Méně cizího kódu. Velké pluginy na SEO, zabezpečení a správu médií jsme nahradili malým vlastním kódem, který dělá jen to, co weby opravdu používaly. Čím méně cizího kódu, tím méně míst, kudy se dá dovnitř.

Kontrola zvenku. Máme nástroj, který se na weby dívá očima návštěvníka i vyhledávače a hledá, jestli na nich není spam, skryté odkazy nebo stránka, která se Googlu ukazuje jinak než lidem.

Co si z toho bereme

Web, na který se nikdo nedívá, není v bezpečí, ani když je zamčený. Zamčené dveře nestačí, když přes ně neprojde ani oprava. Proto u nás správa webu neznamená jen hosting, ale hlavně to, že se na weby někdo pravidelně dívá.

Píšeme to otevřeně. Chybu jsme udělali my, ne klienti.

Máte něco, co stojí za to vyřešit?

Napište nám, co vás trápí. Sejdeme se v Praze, Brně, Olomouci nebo online a zbytek vymyslíme spolu.