Aktuální situace: PHP2Shell. Dvě kritické zranitelnosti PHP (CVSS 9.2) umožňují spustit škodlivý kód bez přihlášení. Záplaty od 21. 10. 2026.Co nyní udělat →

Bezpečnost Moodle po PHP2Shell: jak správně zabezpečit vzdělávací platformy

Moodle spravuje údaje účastníků, známky a odevzdané práce, často nezletilých. Po PHP2Shell se počítá záplata PHP, restart webu i cronu, chráněné moodledata a prověřené pluginy.

Stav 4 min čteníPlatformy

Stručně: Bezpečnost Moodle závisí po PHP2Shell na PHP serveru, ne na Moodle. Protože vzdělávací platformy zpracovávají data žáků, studentů a zaměstnanců, je rychlé jednání důležité. Záplatujte PHP pro web i cron, restartujte všechny procesy a zkontrolujte config.php, moodledata, pluginy a účty správců.

Co PHP2Shell znamená pro provozovatele Moodle

Moodle je rozšířeno na školách, vysokých školách, v dalším vzdělávání i pro interní školení ve firmách. Platforma spravuje jména, e-mailové adresy, příslušnost ke kurzům, známky, odevzdané práce a příspěvky ve fórech, na školách často nezletilých. Zranitelnosti PHP CVE-2026-109618 a CVE-2026-109619 umožňují podle týmu PHP spuštění škodlivého kódu na dálku bez přihlášení.

Servery Moodle jsou téměř vždy dostupné z internetu, protože se studující učí z domova. BSI (německý spolkový úřad pro informační bezpečnost) doporučuje při varovném stupni 3 okamžitou aktualizaci a, pokud to nejde, dočasné odpojení webových serverů od sítě. Pro školy a vzdělávací instituce je to organizačně obtížné, ale plánovatelné. Poznámky specifické pro obor najdete v článku IT bezpečnost pro školy a vzdělávací instituce.

Bezpečnost Moodle: kontrola verze PHP pro web i cron

V nabídce Správa webu > Server > Prostředí kontroluje Moodle verzi PHP a další požadavky. V Server > Informace o PHP vidí administrátoři navíc úplné údaje o PHP. Obojí popisuje webové PHP.

Moodle dále potřebuje úlohu cron, která pravidelně spouští admin/cli/cron.php přes PHP pro příkazovou řádku. Tato verze se může lišit a musí být také záplatována. Opravené verze upstreamu jsou 8.5.12, 8.4.27, 8.3.36 a 8.2.35; backporty často nesou starší čísla. Které verze PHP vaše verze Moodle podporuje, ověříte podle systémových požadavků v dokumentaci na moodle.org. Jak poté čistě restartovat všechny procesy, popisuje článek Restart PHP-FPM a všech workerů.

Adresáře a konfigurace v Moodle

Místo Obsah Bod kontroly
config.php Přístup k databázi, wwwroot, cesta k moodledata Vložený kód, heslo při podezření změnit
moodledata/ Úložiště souborů, odevzdané práce, relace, cache Mimo kořen dokumentů, žádné soubory PHP
mod/, blocks/, local/, theme/ Aktivity, bloky, lokální rozšíření, vzhledy Neznámé nebo změněné pluginy
admin/cli/ Skripty příkazové řádky Použitelné jen přes CLI

Moodle nabízí nastavení, které brání změně cest k programům přes webové rozhraní. Patří do config.php a ztěžuje volání programů na serveru přes ukradený účet správce:

$CFG->preventexecpath = true;

Neškodné kontroly na příkazové řádce, jako uživatel webového serveru:

# Vypsat vlastní kontroly stavu a bezpečnosti Moodle
php admin/cli/checks.php
php admin/cli/checks.php --type=security
# Najít soubory PHP v datovém adresáři (upravit cestu)
find /pfad/zu/moodledata -type f -name "*.php"
Důležité

Při podezření na únik dat na škole nebo vysoké škole je rychle zapojeno několik míst: vedení školy, zřizovatel, pověřenci pro ochranu osobních údajů a případně dozorový úřad. Zálohujte logy od 20. 10. 2026 a každé opatření zdokumentujte s časem.

Pluginy, účty správců a nahrávky

Praktická rada pro plánování: aktualizace PHP a restarty by neměly připadnout na zkouškové období ani na probíhající online testy. Moodle má režim údržby, který uživatele předem informuje. Před PHP2Shell ale nechrání, protože i stránku údržby doručuje PHP.

Moodle žije z pluginů: aktivit, zkušebních nástrojů, napojení na videokonference a školní správu. Každý plugin je dodatečný kód PHP a musí odpovídat verzi Moodle. V části Správa webu Moodle zobrazuje dostupné aktualizace jádra a pluginů. Pluginy, které už nikdo nepoužívá, odstraňte úplně.

Zkontrolujte seznam administrátorů webu a globální role s rozsáhlými právy. Učitelé a tvůrci kurzů obvykle globální práva nepotřebují. Aktivujte dvoufázové přihlášení alespoň pro administrátory. Povolené typy souborů pro nahrávání by měly být vymezeny co nejpřísněji; rady nabízí článek Bezpečné nahrávání souborů v PHP.

Co aktualizace Moodle zvládne a co ne

Aktualizace Moodle uzavře chyby v Moodle a často umožní novější verze PHP. Nezáplatuje PHP, nerestartuje ani webové procesy, ani procesy cron a neodstraní cizí soubory z moodledata, další administrátory ani změněné pluginy. Ani to, zda v době před záplatou unikla data, aktualizace nezodpoví.

Moodle protokoluje přihlášení a akce také ve vlastních logech, které administrátoři najdou v části Správa webu > Sestavy. Hledejte tam cíleně nápadná přihlášení administrátorů, nové účty s globálními rolemi a instalace pluginů od 17. 10. 2026. Tyto záznamy exportujte dříve, než automatické čištění starší data smaže. Sestavy doplňují logy webového serveru, ale nenahrazují je.

Jak konkrétně pomáhá PHP SOS?

  • Ujasníme odpovědnost za PHP a necháme si potvrdit stav záplat a restart webu i cronu.
  • Zálohujeme logy, databázi a moodledata před každou změnou.
  • Kontrolujeme konfiguraci, pluginy, administrátory, role a nahrávky.
  • Na přání platformu trvale spravujeme v rámci bezpečnostní servisní smlouvy, přizpůsobené školnímu roku a zkouškovým obdobím.

Časté dotazy

Týká se PHP2Shell Moodle?

Moodle samo žádnou novou zranitelnost nemá, ale běží na PHP. Pokud PHP serveru není záplatované, může útočník podle týmu PHP spustit kód bez přihlášení. Aktualizace Moodle na tom nic nemění.

Kde v Moodle vidím verzi PHP?

V nabídce Správa webu > Server > Prostředí kontroluje Moodle verzi PHP vůči svým požadavkům. Zda je nasazen backport, Moodle neukazuje; to potvrdí provozovatel serveru.

Proč musí moodledata ležet mimo webový adresář?

Jsou tam nahrané soubory, odevzdané práce, relace a cache. Pokud je adresář dostupný přes web, lze obsah případně vyvolat přímo. Moodle proto vyžaduje umístění mimo kořen dokumentů.

Kdo odpovídá za aktualizaci PHP u škol?

Je to různé: zřizovatel školy, zemský provozní úřad, komunální datové centrum nebo dodavatel. Odpovědnost ujasněte písemně a nechte si potvrdit stav záplat a restart.

Zdroje

Okamžitý kontakt

Každá hodina se počítá. Napište nám hned.

Stručně popište systém, verzi PHP a pozorování. Ozveme se, vyjasníme situaci a budeme pracovat na dálku, dokud nebude incident uzavřen a zdokumentován.

Okamžitá pomoc