Röviden: A Drupal PHP-biztonsága a PHP2Shell után elsősorban a szervert érinti: a rés a PHP-ben van, nem a Drupalban. Ellenőrizze a PHP-állapotot az állapotjelentésben és az üzemeltetőnél, indítsa újra az összes PHP-folyamatot, majd vizsgálja át a settings.php fájlt, a files könyvtárat és a szerepkörök jogait.
A Drupal és a PHP2Shell: a helyzet
A Drupalt gyakran használják nagyobb weboldalakhoz, portálokhoz és közfeladatot ellátó szervek számára, sokszor sok szerkesztővel és interfésszel. A CVE-2026-109618 és a CVE-2026-109619 PHP-rések a PHP-csapat szerint lehetővé teszik kártékony kód távoli futtatását bejelentkezés nélkül. Az nem számít, hogy maga a Drupal mennyire jól gondozott.
A Drupalnak saját biztonsági csapata van, amely a magra és a modulokra vonatkozó közleményeket tesz közzé. A PHP2Shell nem tartozik ide, mert nem Drupal-rés. Aki csak a Drupal-közleményeket követi, ezért átsiklhatott a hír fölött.
A nagyobb Drupal-projektekben a felelősség gyakran több helyre oszlik: egy ügynökség gondozza a kódot, egy adatközpont üzemelteti a szervereket, a szerkesztőség a házban ül. Tisztázza írásban, ki juttatja be a PHP-frissítést, ki indítja az újraindítást, és ki ellenőrzi, történt-e előtte valami. Terheléselosztó mögötti több webszerveres felállásoknál minden egyes szervernek javítottnak és újraindítottnak kell lennie, különben a kérések egy része régi PHP-n marad.
Drupal PHP-biztonság: verzió és javítási állapot ellenőrzése
A Jelentések > Állapotjelentés alatt a Drupal megmutatja azt a PHP-verziót, amellyel a weboldal fut, a konfigurációra vonatkozó figyelmeztetésekkel együtt. A parancssorban a drush status a CLI-s PHP verzióját adja meg, amellyel a cron-feladatok és a telepítések is futnak. Mindkettőnek javítottnak kell lennie.
A javított upstream verziók: 8.5.12, 8.4.27, 8.3.36 és 8.2.35. A disztribúciók és a tárhelyszolgáltatók a javításokat részben backportként juttatják be, ilyenkor a szám ugyanaz marad; a megerősített csomagállapot az irányadó. Hogy a Drupal-verziója mely PHP-verziókat támogatja, azt a rendszerkövetelmények szerint a drupal.org oldalon ellenőrizheti. A frissítés után az újraindítás is hozzátartozik, amelyet a A PHP-FPM és az összes worker újraindítása oldal ír le.
Könyvtárak és fájlok, amelyek számítanak
| Hely | Tartalom | Ellenőrzési pont |
|---|---|---|
sites/default/settings.php |
adatbázis, hash-só, trusted_host_patterns |
módosítás dátuma, beszúrt include-ok |
sites/default/files/ |
nyilvános feltöltések, generált képek, CSS és JS | nincs PHP-fájl, van .htaccess |
| privát fájlkönyvtár | védett feltöltések, gyakran a dokumentumgyökéren kívül | hozzáférési jogok |
modules/contrib/, modules/custom/ |
a drupal.org modulai és egyedi fejlesztések | módosított vagy ismeretlen modulok |
themes/ |
témák Twig-sablonokkal | idegen JavaScript |
vendor/ |
Composer-függőségek | composer audit |
A Drupal a files könyvtárban létrehoz egy .htaccess fájlt, amely megakadályozza a PHP futtatását. Apache alatt hat, Nginx alatt nem. Ott saját szabály kell:
location ~* ^/sites/.+/files/.+\.php$ {
deny all;
}
Veszélytelen ellenőrzések a beépített eszközökkel és a Drushsal:
find sites/*/files -type f -name "*.php"
drush pm:list --status=enabled --type=module
composer audit
Vesse össze a szerveren lévő kódállapotot a Git-tárolójával. A Composert használó Drupal-projekteknél ez a leggyorsabb mód az idegen vagy módosított fájlok megtalálására, mert minden eltérésnek megmagyarázhatónak kell lennie.
Szerepkörök, jogok és modulok mint kockázat
A bejelentkezés a /user/login, az adminisztrációs terület az /admin alatt található. A Drupalban nem csak az adminisztrátori fiókok döntenek a biztonságról, hanem az egyes jogosultságok. Az olyan jogok, mint a modulok, felhasználók, jogosultságok vagy teljes HTML-t engedő szövegformátumok kezelése, gyakorlatilag adminisztrátori jogok. Az Emberek és a Jogosultságok alatt ellenőrizze, mely szerepköröknek mik a jogaik, és kik tartoznak ezekhez a szerepkörökhöz.
A contrib modulok erősen bővítik a Drupalt, de saját kódot hoznak. Az aktív gondozás nélküli modulok és a régi egyedi fejlesztések gyakran az oka annak, hogy a PHP-frissítést elhalasztják. A függőségekről bővebben a Composer-függőségek ellenőrzése résekre oldalon olvashat.
Mit tud egy Drupal-frissítés, és mit nem
Egy mag- vagy modulfrissítés lezárja az ebben a kódban lévő hibákat, és lehetővé tehet újabb PHP-verziókat. A PHP-t nem javítja, idegen fájlokat nem távolít el a sites/default/files mappából, nem állít vissza jogosultságokat, és nem töröl titokban létrehozott fiókokat. A gyorsítótár is kiszolgálhat manipulált tartalmakat, amíg ki nem ürítik. Gyanú esetén a hash-sót és az adatbázis-hozzáférést meg kell újítani.
A multisite telepítéseknél több weboldal osztozik ugyanazon a kódon, de a sites/ alatt mindegyiknek saját settings.php fájlja és saját files könyvtára van. Ilyenkor minden weboldalt külön ellenőrizzen. Az egyik oldalon talált lelet a közös kód miatt többnyire az összes többit is érinti.
Hogyan segít konkrétan a PHP SOS?
- Ellenőrizzük a Drupal-szerver web- és CLI-s PHP-ját, és megerősíttetjük a javítást és az újraindítást.
- Mentjük a naplókat és az adatokat, és összevetjük a kódállapotot az Ön tárolójával vagy az eredeti csomagokkal.
- Ellenőrizzük a
settings.phpfájlt, afileskönyvtárat, a szerverszabályokat, a szerepköröket és a jogosultságokat. - Kívánságra átvesszük a folyamatos gondozást a biztonsági karbantartási szerződés keretében, hogy a PHP- és Drupal-frissítések ne fussanak újra szét.
Gyakori kérdések
Segít egy Drupal biztonsági frissítés a PHP2Shell ellen?
Nem. A Drupal-frissítések a Drupal-mag és a modulok hibáit zárják le. A PHP2Shell a szerver PHP-jában van, és PHP-frissítést vagy megerősített backportot, valamint az összes PHP-folyamat újraindítását igényli.
Hol mutatja a Drupal a PHP-verziót?
A Jelentések alatti állapotjelentésben. A Drushsal a drush status a parancssor PHP-verzióját mutatja. A két adat eltérhet, és egyikből sem ismerhető fel biztosan a backport.
Véd a files mappában lévő .htaccess Nginx alatt is?
Nem. A Drupal által létrehozott .htaccess fájlt csak az Apache értékeli ki. Nginx alatt saját szabály kell a szerverkonfigurációban, amely letiltja a PHP-fájlokat a files könyvtárban.
Mit jelent a trusted_host_patterns?
A settings.php-ban lévő beállítás határozza meg, mely hosztnevek alatt válaszol a Drupal. Védi a manipulált Host-adatokon keresztüli támadások ellen, és minden éles telepítésbe beletartozik.