Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Bezpečnosť PHP v Drupale po PHP2Shell: ako zabezpečiť svoj web

Drupal beží na PHP, a ak server nie je záplatovaný, PHP2Shell sa ho týka. Dôležité sú správa o stave, settings.php, priečinok files a práva rolí.

Stav 4 min čítaniaPlatformy

Stručne: Pri bezpečnosti PHP v Drupale ide po PHP2Shell predovšetkým o server: zraniteľnosť je v PHP, nie v Drupale. Skontrolujte stav PHP v správe o stave a u prevádzkovateľa, reštartujte všetky procesy PHP a potom skontrolujte settings.php, adresár files a práva rolí.

Drupal a PHP2Shell: situácia

Drupal sa často používa pre väčšie weby, portály a verejné orgány, často s mnohými redaktormi a rozhraniami. Zraniteľnosti PHP CVE-2026-109618 a CVE-2026-109619 podľa tímu PHP umožňujú spustenie škodlivého kódu na diaľku bez prihlásenia. Ako dobre je udržiavaný samotný Drupal, na tom nezáleží.

Drupal má vlastný bezpečnostný tím, ktorý zverejňuje upozornenia k jadru a modulom. PHP2Shell medzi ne nepatrí, pretože nejde o zraniteľnosť Drupalu. Kto sleduje iba upozornenia Drupalu, mohol preto správu prehliadnuť.

Pri väčších projektoch na Drupale sa zodpovednosť často rozdeľuje medzi viaceré miesta: agentúra udržiava kód, dátové centrum prevádzkuje servery, redakcia sedí vo vlastnej budove. Písomne si vyjasnite, kto nasadí aktualizáciu PHP, kto spustí reštart a kto skontroluje, či sa predtým niečo nestalo. Pri nastaveniach s viacerými webovými servermi za load balancerom musí byť každý jednotlivý server záplatovaný a reštartovaný, inak časť požiadaviek zostane na starom PHP.

Bezpečnosť PHP v Drupale: skontrolovať verziu a stav záplat

Pod Správy > Správa o stave zobrazuje Drupal verziu PHP, s ktorou web beží, spolu s upozorneniami ku konfigurácii. V príkazovom riadku dáva drush status verziu CLI PHP, s ktorým bežia aj cron úlohy a nasadenia. Obe musia byť záplatované.

Opravené upstream verzie sú 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Distribúcie a poskytovatelia hostingu opravy čiastočne nasadzujú ako backport, číslo potom zostane rovnaké; rozhodujúci je potvrdený stav balíkov. Ktoré verzie PHP vaša verzia Drupalu podporuje, skontrolujte podľa systémových požiadaviek na drupal.org. K aktualizácii patrí reštart, popísaný na stránke Reštartovať PHP-FPM a všetkých workerov.

Adresáre a súbory, na ktorých záleží

Miesto Obsah Bod kontroly
sites/default/settings.php Databáza, hash salt, trusted_host_patterns Dátum zmeny, vložené includes
sites/default/files/ Verejné nahrávky, vygenerované obrázky, CSS a JS Žiadne súbory PHP, .htaccess prítomný
Adresár súkromných súborov Chránené nahrávky, často mimo koreňa dokumentov Prístupové práva
modules/contrib/, modules/custom/ Moduly z drupal.org a vlastné vývoje Zmenené alebo neznáme moduly
themes/ Témy so šablónami Twig Cudzí JavaScript
vendor/ Závislosti Composeru composer audit

Drupal vytvára v adresári files súbor .htaccess, ktorý zabraňuje spúšťaniu PHP. Pod Apache funguje, pod Nginx nie. Tam je potrebné vlastné pravidlo:

location ~* ^/sites/.+/files/.+\.php$ {
    deny all;
}

Neškodné kontroly pomocou štandardných nástrojov a Drushu:

find sites/*/files -type f -name "*.php"
drush pm:list --status=enabled --type=module
composer audit
Tip

Porovnajte stav kódu na serveri so svojím repozitárom Git. Pri projektoch na Drupale s Composerom je to najrýchlejší spôsob, ako nájsť cudzie alebo zmenené súbory, pretože každá odchýlka musí byť vysvetliteľná.

Roly, práva a moduly ako riziko

Prihlásenie je pod /user/login, administračná oblasť pod /admin. V Drupale o bezpečnosti nerozhodujú len účty administrátorov, ale aj jednotlivé oprávnenia. Práva, ako je správa modulov, používateľov, oprávnení alebo textových formátov s plným HTML, sú prakticky práva administrátora. Pod Ľudia a Oprávnenia skontrolujte, ktoré roly ich majú a kto do týchto rolí patrí.

Moduly contrib Drupal výrazne rozširujú, prinášajú však vlastný kód. Moduly bez aktívnej údržby a staré vlastné vývoje sú často dôvodom, prečo sa aktualizácia PHP odkladá. Viac k závislostiam nájdete na stránke Skontrolovať závislosti Composeru na zraniteľnosti.

Čo aktualizácia Drupalu dokáže a čo nie

Aktualizácia jadra alebo modulu uzatvára chyby v tomto kóde a môže umožniť novšie verzie PHP. PHP nezáplatuje, neodstráni cudzie súbory zo sites/default/files, nevráti späť oprávnenia a nezmaže skryto založené účty. Aj cache môže ďalej doručovať zmanipulovaný obsah, kým sa nevyprázdni. Pri podozrení treba obnoviť hash salt a prístup k databáze.

Pri inštaláciách multisite zdieľa viac webov ten istý kód, no pod sites/ má každý vlastný settings.php a vlastný adresár files. Skontrolujte potom každý web zvlášť. Nález na jednom webe sa vďaka spoločnému kódu väčšinou týka aj všetkých ostatných.

Ako konkrétne pomáha PHP SOS?

  • Kontrolujeme webové a CLI PHP vášho servera s Drupalom a necháme si potvrdiť záplatu a reštart.
  • Zálohujeme logy a údaje a porovnávame stav kódu s vaším repozitárom alebo pôvodnými balíkmi.
  • Kontrolujeme settings.php, adresár files, pravidlá servera, roly a oprávnenia.
  • Na požiadanie prevezmeme priebežnú starostlivosť v bezpečnostnej zmluve o údržbe, aby sa aktualizácie PHP a Drupalu opäť nerozišli.

Časté otázky

Pomôže bezpečnostná aktualizácia Drupalu proti PHP2Shell?

Nie. Aktualizácie Drupalu uzatvárajú chyby v jadre Drupalu a v moduloch. PHP2Shell je v PHP servera a vyžaduje aktualizáciu PHP alebo potvrdený backport a reštart všetkých procesov PHP.

Kde Drupal zobrazuje verziu PHP?

V správe o stave pod Správy. S Drushom zobrazí drush status verziu PHP z príkazového riadku. Oba údaje sa môžu líšiť a backport sa z ani jedného z nich nedá spoľahlivo rozpoznať.

Chráni .htaccess v priečinku files aj pod Nginx?

Nie. Súbor .htaccess vytvorený Drupalom vyhodnocuje iba Apache. Pod Nginx potrebujete vlastné pravidlo v konfigurácii servera, ktoré zablokuje súbory PHP v adresári files.

Čo znamená trusted_host_patterns?

Nastavenie v settings.php určuje, pod akými názvami hostiteľa Drupal odpovedá. Chráni pred útokmi cez zmanipulované údaje o hostiteľovi a patrí do každej produkčnej inštalácie.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc