Dabartinė padėtis: PHP2Shell. Du kritiniai PHP pažeidžiamumai (CVSS 9,2) leidžia vykdyti kenkėjišką kodą be prisijungimo. Pataisos nuo 2026-10-21.Ką dabar daryti →

Drupal PHP sauga po PHP2Shell: kaip apsaugoti svetainę

Drupal veikia su PHP, todėl PHP2Shell jį paveikia, jei serveris nepataisytas. Svarbu būsenos ataskaita, settings.php, files aplankas ir rolių teisės.

Būsena 3 min. skaitymoPlatformos

Trumpai: Drupal PHP saugumo atveju po PHP2Shell svarbiausias serveris: spraga slypi PHP, o ne Drupal. Patikrinkite PHP būseną būsenos ataskaitoje ir pas operatorių, iš naujo paleiskite visus PHP procesus, o po to patikrinkite settings.php, katalogą files ir rolių teises.

Drupal ir PHP2Shell: padėtis

Drupal dažnai naudojamas didesnėms svetainėms, portalams ir viešosioms įstaigoms, neretai su daug redaktorių ir sąsajų. PHP spragos CVE-2026-109618 ir CVE-2026-109619, PHP komandos teigimu, leidžia vykdyti kenkėjišką kodą nuotoliniu būdu be prisijungimo. Kaip gerai prižiūrimas pats Drupal, čia nesvarbu.

Drupal turi savo saugumo komandą, skelbiančią pranešimus apie branduolį ir modulius. PHP2Shell prie jų nepriklauso, nes tai ne Drupal spraga. Kas seka tik Drupal pranešimus, todėl galėjo šį pranešimą praleisti.

Didesniuose Drupal projektuose atsakomybė dažnai pasiskirsto keliems: agentūra prižiūri kodą, duomenų centras valdo serverius, redakcija sėdi pačioje įmonėje. Raštu išsiaiškinkite, kas įdiegia PHP atnaujinimą, kas paleidžia iš naujo ir kas tikrina, ar anksčiau kas nors įvyko. Sąrangose su keliais žiniatinklio serveriais už apkrovos balansuotojo (load balancer) kiekvienas serveris turi būti pataisytas ir paleistas iš naujo, kitaip dalis užklausų lieka su senu PHP.

Drupal PHP sauga: versijos ir pataisų būsenos patikra

Skiltyje Ataskaitos > Būsenos ataskaita Drupal rodo PHP versiją, su kuria svetainė veikia, kartu su konfigūracijos įspėjimais. Komandinėje eilutėje drush status pateikia CLI PHP versiją, su kuria veikia ir cron užduotys bei diegimai. Abu turi būti pataisyti.

Ištaisytos oficialios (upstream) versijos yra 8.5.12, 8.4.27, 8.3.36 ir 8.2.35. Distribucijos ir talpintojai taisymus kartais įdiegia kaip atgalinį perkėlimą (backport), tada numeris lieka toks pats; lemia patvirtinta paketų būsena. Kurias PHP versijas palaiko jūsų Drupal versija, pagal sistemos reikalavimus patikrinkite drupal.org. Po atnaujinimo būtinas paleidimas iš naujo, aprašytas puslapyje PHP-FPM ir visų vykdytojų paleidimas iš naujo.

Svarbūs katalogai ir failai

Vieta Turinys Patikros punktas
sites/default/settings.php Duomenų bazė, maišos druska (hash salt), trusted_host_patterns Keitimo data, įterpti include
sites/default/files/ vieši įkėlimai, sugeneruoti paveikslėliai, CSS ir JS jokių PHP failų, .htaccess yra
privatus failų katalogas apsaugoti įkėlimai, dažnai už dokumentų šaknies Prieigos teisės
modules/contrib/, modules/custom/ Moduliai iš drupal.org ir savos kūrimo pakeisti ar nežinomi moduliai
themes/ Temos su Twig šablonais svetimas JavaScript
vendor/ Composer priklausomybės composer audit

Drupal files kataloge sukuria .htaccess, kuris draudžia vykdyti PHP. Su Apache jis veikia, su Nginx ne. Ten reikia savos taisyklės:

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

Nepavojingos patikros standartinėmis priemonėmis ir Drush:

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

Palyginkite kodo būseną serveryje su savo Git saugykla. Drupal projektuose su Composer tai greičiausias būdas rasti svetimus ar pakeistus failus, nes kiekvienas nukrypimas turi būti paaiškinamas.

Rolės, teisės ir moduliai kaip rizika

Prisijungimas yra adresu /user/login, valdymo sritis adresu /admin. Drupal saugumą lemia ne tik administratorių paskyros, bet ir pavienės teisės. Teisės valdyti modulius, naudotojus, leidimus ar teksto formatus su visu HTML iš esmės yra administratoriaus teisės. Skiltyse Žmonės ir Leidimai patikrinkite, kokias roles jos turi ir kam šios rolės priklauso.

Contrib moduliai stipriai išplečia Drupal, bet atneša savo kodą. Moduliai be aktyvios priežiūros ir seni savi sprendimai dažnai yra priežastis, kodėl PHP atnaujinimas atidedamas. Daugiau apie priklausomybes puslapyje Composer priklausomybių patikra dėl spragų.

Ką gali Drupal atnaujinimas ir ko ne

Branduolio ar modulio atnaujinimas uždaro šio kodo klaidas ir gali leisti naudoti naujesnes PHP versijas. Jis netaiso PHP, nepašalina svetimų failų iš sites/default/files, neatstato leidimų ir neištrina slapta sukurtų paskyrų. Net talpykla gali toliau pateikti pakeistą turinį, kol ji neišvaloma. Kilus įtarimui reikėtų atnaujinti maišos druską (hash salt) ir duomenų bazės prieigą.

Multisite diegimuose kelios svetainės dalijasi tuo pačiu kodu, bet sites/ aplanke turi savo settings.php ir savo files katalogą. Tada tikrinkite kiekvieną svetainę atskirai. Radinys vienoje svetainėje dėl bendro kodo dažniausiai liečia ir visas kitas.

Kaip PHP SOS padeda konkrečiai?

  • Tikriname jūsų Drupal serverio žiniatinklio ir CLI PHP ir leidžiame patvirtinti pataisą bei paleidimą iš naujo.
  • Išsaugome žurnalus ir duomenis ir palyginame kodo būseną su jūsų saugykla ar originaliais paketais.
  • Kontroliuojame settings.php, katalogą files, serverio taisykles, roles ir leidimus.
  • Pageidaujant perimame nuolatinę priežiūrą pagal saugumo priežiūros sutartį, kad PHP ir Drupal atnaujinimai vėl nesiskirtų.

Dažni klausimai

Ar Drupal saugumo atnaujinimas padeda nuo PHP2Shell?

Ne. Drupal atnaujinimai uždaro Drupal branduolio ir modulių klaidas. PHP2Shell yra serverio PHP ir reikalauja PHP atnaujinimo arba patvirtinto atgalinio perkėlimo (backport) bei visų PHP procesų paleidimo iš naujo.

Kur Drupal rodo PHP versiją?

Būsenos ataskaitoje skiltyje Ataskaitos. Su Drush komanda drush status rodo komandinės eilutės PHP versiją. Abu duomenys gali skirtis, o atgalinio perkėlimo iš nė vieno jų patikimai neatpažinsite.

Ar .htaccess files aplanke saugo ir su Nginx?

Ne. Drupal sukurtą .htaccess vertina tik Apache. Su Nginx serverio konfigūracijoje reikia savos taisyklės, blokuojančios PHP failus files kataloge.

Ką reiškia trusted_host_patterns?

Šis settings.php nustatymas nurodo, kokiais pagrindinio kompiuterio vardais Drupal atsako. Jis saugo nuo išpuolių per suklastotas Host reikšmes ir turi būti kiekviename gamybiniame diegime.

Šaltiniai

Skubus kontaktas

Kiekviena valanda svarbi. Parašykite mums dabar.

Trumpai aprašykite sistemą, PHP versiją ir pastebėjimus. Mes atsakysime, išsiaiškinsime padėtį ir dirbsime nuotoliu, kol incidentas bus užbaigtas ir dokumentuotas.

Skubi pagalba