Pokud jste po obdržení některého z mých bezpečnostních upozornění aktualizovali plugin nebo svůj redakční systém, je to dobře. To byl ten důležitý krok a u mnoha webů je to jediný potřebný krok.

Aktualizace uzavře díru od této chvíle. Nedokáže vám ale říci, zda ji někdo nenašel dříve, než jste ji uzavřeli. Tato stránka je praktická kontrola zhruba na 30 minut, kterou si na tuto otázku odpovíte sami, a je psaná pro majitele webů bez bezpečnostního vzdělání a bez rozpočtu na bezpečnost. Jde o obecné pokyny, nikoli o zjištění týkající se vašeho webu: zvenčí vidím pouze to, jakou verzi software web hlásí, a nic víc.

Krok 1: Zjistěte, co všechno mohla chyba způsobit

Ne každá zranitelnost si zaslouží stejnou reakci. Najděte své upozornění na stránce s upozorněními pro weby a zjistěte, do které třídy spadá (každá stránka s upozorněním to uvádí blízko horního okraje):

  • Převzetí účtu nebo spuštění cizího kódu (útočník mohl získat administrátorský přístup nebo spustit vlastní kód): projděte si celý kontrolní seznam níže.
  • Čtení dat (útočník mohl číst informace z vaší databáze, ale nemohl měnit váš web): zaměřte se na kroky 2 a 5. Otázkou je, jaká data byla uložena, nikoli zda byl váš web pozměněn.
  • Užší problémy (chyby, které vyžadují určité nastavení, nebo které dosáhnou pouze na administrátorskou obrazovku): stránka s upozorněním pro vaši součást uvádí, co (pokud vůbec něco) stojí za kontrolu. Často stačí samotná aktualizace.

Krok 2: Určete období, kdy byl web vystaven riziku

Toto období vymezují dvě data:

  1. Kdy se díra na vašem webu otevřela. Obvykle den, kdy jste nainstalovali dotčenou verzi. Pokud jej neznáte, rozumnou náhradou je datum v bezpečnostním záznamu CVE, na který upozornění odkazuje (odkaz je na každé stránce s upozorněním): od zveřejnění o chybě věděli i útočníci.
  2. Kdy jste aktualizovali. Den, kdy jste ji uzavřeli.

Vše následující se týká tohoto období. Pokud je krátké, řekněme že jste aktualizovali den nebo dva po zveřejnění, riziko je skutečné, ale malé. Pokud je toto období dlouhé měsíce, berte kontrolní seznam vážně.

Krok 3: Zkontrolujte, kdo má na váš web přístup

Útočník, který se dovnitř dostal, si téměř vždy nechá cestu zpátky. Zkontrolujte postupně:

  • Administrátorské účty. Ve WordPressu: Uživatelé, poté filtrujte podle role Administrátor. V Joomle: Uživatelé, poté Správce uživatelů. Hledejte jakýkoli účet, který jste sami nevytvořili. Upozornění: některé chyby (například ta v pluginu Simple Membership) umožňují útočníkovi převzít existující účet místo vytvoření nového, takže tato kontrola sama o sobě nic nedokazuje. Právě proto je změna přístupových údajů v kroku 4 důležitá i tehdy, když seznam uživatelů vypadá v pořádku.
  • Nedávno přidané pluginy, šablony nebo rozšíření, které jste neinstalovali.
  • Naplánované úlohy (ve WordPressu je zobrazí plugin WP Crontrol; mnoho zadních vrátek se z naplánované úlohy samo znovu nainstaluje).
  • Aplikační hesla (WordPress: Uživatelé, Profil, Aplikační hesla), tichý způsob, jak si udržet přístup přes API i po změně hesla.

Krok 4: Změňte přístupové údaje

Pokud vaše upozornění spadalo do třídy převzetí účtu nebo spuštění cizího kódu a web byl riziku vystaven déle než pár dní, změňte přístupové údaje i tehdy, když krok 3 nic nenašel:

  • Hesla ke všem administrátorským účtům.
  • Tajné klíče a soli v souboru wp-config.php (WordPress). Tím se odhlásí všichni včetně útočníka s ukradenou relací; nové hodnoty vám dá oficiální generátor. V Joomle je obdobou hodnota $secret v souboru configuration.php.
  • Hesla k hostingovému panelu a k FTP/SFTP, pokud je sdílíte s někým dalším nebo jsou stará.

Zabere to deset minut a zavře to dveře ukradeným relacím i prolomeným otiskům hesel bez ohledu na to, zda k vloupání došlo.

Krok 5: Prohledejte web a zkontrolujte soubory

  • Spusťte kontrolu na škodlivý kód od svého poskytovatele hostingu, pokud ji ovládací panel nabízí (většina sdílených hostingů ano), nebo důvěryhodný bezplatný nástroj. Pro WordPress porovná bezplatná kontrola od Wordfence vaše soubory s oficiálními kopiemi.
  • Podívejte se na nedávno změněné soubory z doby okolo začátku rizikového období a po něm, zvláště na soubory PHP v adresářích pro nahrané soubory. Tam by soubory PHP v podstatě nikdy být neměly.
  • Pokud váš hosting uchovává záznamy o přístupech, projděte v nich toto období a hledejte požadavky na zranitelnou součást z adres, které nepoznáváte. To, že tam nic nenajdete, mnoho neznamená, protože se záznamy postupně přepisují, ale nález je průkazný.

Pokud kontrola něco odhalí

Zatím nic nemažte. Nejprve si pořiďte úplnou zálohu, souborů i databáze, aby se dalo to, co se stalo, ještě prozkoumat. Poté postupujte podle nákladnosti:

  1. Váš poskytovatel hostingu. Většina z nich nabízí službu odstranění škodlivého kódu nebo vám alespoň potvrdí, co vidí jejich vlastní kontroly. U většiny malých webů je to správný první krok.
  2. Odborník. Pokud web pracuje s údaji nebo platbami zákazníků, nebo pokud kontrola našla zadní vrátka, vyplatí se někomu zaplatit za zjištění, k čemu se útočník dostal; na této odpovědi v mnoha zemích závisí povinnosti podle právních předpisů o ochraně osobních údajů.
  3. Krajní řešení, které funguje vždy: obnovte web ze zálohy pořízené před začátkem rizikového období, nebo přeinstalujte redakční systém a pluginy z oficiálních zdrojů a ponechte si pouze svůj obsah. Poté vše aktualizujte a změňte všechny přístupové údaje uvedené výše.

Pokud si nejste jistí, na co se díváte, můžete také jednoduše odpovědět na e-mail s upozorněním. Čtu každou odpověď a nasměrovat někoho správným směrem je jedním z důvodů, proč tato upozornění vůbec posílám. Neprodávám službu odstraňování škodlivého kódu a tato stránka není nabídkou; viz zásady zveřejňování.

Pokud jste aktualizovali ještě před příchodem mého e-mailu

Platí totéž: upozornění znamená, že váš web nedávno hlásil dotčenou verzi, takže rizikové období existovalo, i když je nyní uzavřené. Kroky 2 až 4 stále odpovídají na to podstatné.