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"
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
moodledatapř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.