opened image

PHP2Shell: kā pārbaudīt savu serveri un novērst bīstamu PHP ievainojamību

 

PHP ir atklātas divas kritiskas ievainojamības. Tās nodēvētas par PHP2Shell. Tās ļauj uzbrucējiem izpildīt savu kodu jūsu serverī. Parole tam nav nepieciešama.

 

Ievainojamības tika novērstas 2026. gada 21. oktobrī. Uzbrukumi jau notiek. Ja jūsu serverī darbojas vietne, kas izmanto PHP, atjauniniet PHP jau šodien. Zemāk ir vienkārša instrukcija, kuras izpilde aizņems 10–15 minūtes.

 

Kas notika?

 

PHP darbojas kā viesmīlis restorānā. Apmeklētājs (pārlūkprogramma) veic pasūtījumu. Viesmīlis (PHP) to aiznes uz virtuvi (serveri) un atnes rezultātu — vietnes lapu.

 

Tagad iedomājieties divas situācijas.

 

Pirmā ievainojamība (CVE-2026-109618). Viesmīlis nes pārāk smagu paplāti un pa ceļam to nomet. Pēc tam viņš savāc lauskas un kļūdas dēļ uzskata tās par veseliem traukiem. Līdzīgi darbojas PHP: kad tam beidzas atmiņa, tas atstāj datus nepabeigtā stāvoklī. Uzbrucējs var apzināti izraisīt šādu situāciju un ievietot savu kodu.

 

Otrā ievainojamība (CVE-2026-109619). Apmeklētājs ir aizgājis, bet uz galda palikušas viņa mantas. Viesmīlis tās nav novācis. Nākamais apmeklētājs apsēžas pie šī galda un var tās izmantot. Līdzīgi darbojas PHP: pēc viena pieprasījuma atmiņā paliek “sveši” dati. Nākamais pieprasījums var tos nolasīt vai izmantot uzbrukumam.

 

Abu ievainojamību bīstamības vērtējums ir 9,2 no 10. Tas ir ļoti augsts līmenis.

 

Kuru tas skar?

 

Visus, kuru serverī darbojas vietne vai pakalpojums, kas izmanto PHP. Piemēram:

 

  • WordPress, WooCommerce, Joomla, Drupal, OpenCart;

  • 1C-Bitrix, Magento, Laravel;

  • phpMyAdmin, Nextcloud, forumi un pašizstrādātas vietnes;

  • vadības paneļi, piemēram, ISPmanager, cPanel, aaPanel un HestiaCP.

 

Ievainojamas ir visas PHP versijas no 5.4 līdz 8.5.11. Nav svarīgi, kā PHP ir pieslēgts tīmekļa serverim — izmantojot PHP-FPM, Apache (mod_php), LiteSpeed vai citādi. Vislielākais risks ir vietnēm, kurās tiek izmantots Apache ar mod_php.

 

Ja nezināt, vai izmantojat PHP, visticamāk, izmantojat gan. Aptuveni 70% interneta vietņu darbojas ar PHP.

 

Cik tas ir bīstami?

 

Ļoti. Lūk, kas jau ir zināms:

 

  • pirmie uzbrukumu mēģinājumi tika pamanīti 17. oktobrī — četras dienas pirms labojumu iznākšanas;

  • pēc 21. oktobra uzbrukumu mēģinājumu skaits vienas diennakts laikā pieauga no desmitiem tūkstošu līdz miljoniem;

  • uzbrukumos iesaistījās Mirai robottīkls. Tas ir inficētu ierīču tīkls, kas automātiski meklē ievainojamus serverus visā internetā.

 

Labā ziņa: pētnieki norāda, ka lielākā daļa publiski pieejamo ekspluatācijas rīku pagaidām nedarbojas ar standarta iestatījumiem. Taču tas nav iemesls gaidīt.

 

Iedomājieties, ka uzzināt — jūsu daudzdzīvokļu mājas ārdurvju slēdzene ir salauzta. Zagļi vēl nav ienākuši. Vai jūs gaidīsiet, līdz viņi ienāks? Šeit ir līdzīgi. Boti jau pārbauda katru serveri internetā. Jautājums ir tikai par to, kad pienāks jūsu servera kārta.

 

Noskaidrojiet PHP versiju

 

Pieslēdzieties serverim, izmantojot SSH, un izpildiet komandu:

php -v

Atbildē būs redzama rinda, piemēram, PHP 8.3.30 (cli). Salīdziniet savu versiju ar tabulu.

Jūsu PHP versijaDrošā versija
8.58.5.12 un jaunāka
8.48.4.27 un jaunāka
8.38.3.36 un jaunāka
8.28.2.35 un jaunāka
8.1 un vecākaOficiāla labojuma nav — skatiet tālāk esošo sadaļu

Svarīgi: serverī var būt vairākas PHP versijas. Komanda php -v parāda tikai vienu no tām. Vietne var darboties ar citu versiju. Visas palaistās versijas varat apskatīt šādi:

systemctl list-units --type=service | grep php

Ja pēc atjaunināšanas versijas numurs nav mainījies, tas ne vienmēr ir slikti. Ubuntu, Debian,

AlmaLinux un citas sistēmas bieži iekļauj labojumu vecākā versijā. Versijas numurs paliek nemainīgs, taču ievainojamība jau ir novērsta. To var pārbaudīt pakotnes izmaiņu žurnālā.

Ubuntu un Debian:

zgrep -E 'CVE-2026-10961[89]' /usr/share/doc/php*-common/changelog.Debian.gz

AlmaLinux, Rocky Linux un CentOS Stream:

rpm -q --changelog php-common | grep -E 'CVE-2026-10961[89]'

Ja komanda parāda rindas ar CVE numuriem, labojums ir instalēts. Ja rezultāts ir tukšs, pārejiet pie 2. darbības.

 

Atjauniniet PHP

 

Pirms atjaunināšanas izveidojiet vietnes un datubāzes rezerves kopiju. Ja kaut kas noies greizi, varēsiet ātri atjaunot iepriekšējo stāvokli.

Ubuntu un Debian

sudo apt update
sudo apt upgrade

Pēc tam restartējiet PHP. 8.3 vietā norādiet savu versiju:

sudo systemctl restart php8.3-fpm

Ja vietne darbojas, izmantojot Apache, restartējiet arī to:

sudo systemctl restart apache2

AlmaLinux, Rocky Linux un CentOS Stream

sudo dnf upgrade --refresh 'php*'
sudo systemctl restart php-fpm
sudo systemctl restart httpd

 

Vadības paneļi

 

  • cPanel. PHP versijas (ea-php pakotnes) tiek atjauninātas kopā ar sistēmu. Veiciet atjaunināšanu, izmantojot WHM, vai izpildiet komandu sudo yum update.

  • ISPmanager, aaPanel, HestiaCP un citi paneļi. Atjauniniet PHP paneļa sadaļā, kurā pārvalda PHP versijas, vai izmantojot sistēmas pakotnes, kā aprakstīts iepriekš.

  • Docker. Izveidojiet jaunu attēlu ar jaunāko PHP versiju un restartējiet konteineru.

 

Neaizmirstiet restartēt pakalpojumus

 

Šī ir visbiežāk pieļautā kļūda. Jaunā PHP versija ir instalēta, bet vecā joprojām darbojas atmiņā. Tas ir tāpat kā nopirkt jaunu slēdzeni, bet atstāt to kastē. Durvis joprojām aizsargā vecā slēdzene. Tāpēc pēc atjaunināšanas noteikti restartējiet PHP-FPM un tīmekļa serveri.

Pēc restartēšanas atveriet vietni un pārbaudiet, vai tā darbojas.

 

Pievienojiet pagaidu aizsardzību

 

Šo darbību ieteicams veikt visiem, arī pēc atjaunināšanas. Tā palīdz novērst vēl vienu ievainojamību, kurai pagaidām nav labojuma (par to lasiet tālāk).

Vispirms atrodiet PHP konfigurācijas failu. Vietnēm parasti tiek izmantots fails mapē fpm:

ls /etc/php/*/fpm/php.ini

AlmaLinux un Rocky Linux sistēmās fails parasti atrodas šeit: /etc/php.ini.

Atveriet failu un pievienojiet beigās rindu:

session.upload_progress.enabled = 0

Ja izmantojat PHP 8.5, pievienojiet vēl vienu rindu:

fatal_error_backtraces = 0

 

Saglabājiet failu un restartējiet PHP, kā aprakstīts 2. darbībā.

 

Kā tas ietekmēs vietni? Gandrīz nemaz. Pārstās darboties tikai progresa josla lielu failu augšupielādes laikā, ja tā ir izveidota, izmantojot PHP funkcionalitāti. Lielākajā daļā vietņu šādas joslas nav.

Tas neaizstāj atjaunināšanu. Pagaidu aizsardzība ir kā ķēde uz durvīm. Tā apgrūtina zagļa iekļūšanu, bet neaizstāj kārtīgu slēdzeni. Vispirms atjauniniet PHP un pēc tam pievienojiet šo iestatījumu.

 

Ja izmantojat PHP 8.1 vai vecāku versiju

 

PHP versijas 8.1, 8.0, 7.x un 5.x izstrādātāji vairs neatbalsta. Oficiāli labojumi šīm versijām nebūs pieejami. Internetā joprojām ir ļoti daudz šādu serveru — aptuveni 70% no visām PHP instalācijām.

Tas ir tāpat kā automašīna, kurai ražotājs vairs neražo rezerves daļas. Ar to vēl var braukt, taču katrs bojājums kļūst par problēmu.

 

Ko varat darīt:

 

  1. Pārbaudiet savas sistēmas pakotnes. Dažas versijas tomēr ir saņēmušas labojumu. Piemēram, Ondřej Surý pakotnes Ubuntu un Debian sistēmām (ppa:ondrej/php) un AlmaLinux pakotnes. Atjauniniet sistēmu, kā aprakstīts 2. darbībā, un pārbaudiet izmaiņu žurnālu no 1. darbības.

  2. Pārejiet uz jaunāku PHP versiju. Tas ir labākais ilgtermiņa risinājums. Tomēr veca vietne jaunajā PHP versijā var nedarboties. Pirms pārejas tā ir jāpārbauda.

  3. Iegādājieties paplašināto atbalstu. Piemēram, TuxCare par maksu nodrošina labojumus vecākām PHP versijām.

 

Jebkurā gadījumā noteikti veiciet 3. darbību un pievienojiet pagaidu aizsardzību.

Ja jūsu serverī darbojas CentOS 7, PHP labojumi šai sistēmai vispār nebūs pieejami. Arī šī sistēma ir novecojusi. Ieteicams pārvietot vietni uz AlmaLinux vai Rocky Linux.

 

Vēl divas ziņas, par kurām raksta reti

 

Trešajai ievainojamībai vēl nav labojuma. 23. oktobrī PHP izstrādātāji paziņoja par vēl vienu kļūdu — CVE-2026-115560. Tā izpaužas tikai tad, ja vietnei ir reti sastopams konfigurācijas iestatījums. Steidzams atjauninājums nav plānots — labojums tiks iekļauts nākamajā plānotajā versijā. Aizsardzība ir tāda pati kā 3. darbībā. Ja jau esat pievienojis rindu session.upload_progress.enabled = 0, esat aizsargāts.

 

Jaunajās versijās atklātas citas kļūdas. Versijās 8.4.27 un 8.5.12 tika konstatētas divas ar atmiņu saistītas problēmas. Viena no tām radās tieši šajā atjauninājumā. Tas nav iemesls atgriezties pie vecākas versijas — tā ir daudz bīstamāka. Vienkārši sekojiet jaunumiem. Nākamais PHP atjauninājums, visticamāk, iznāks tuvāko nedēļu laikā, un tas arī būs jāinstalē.

 

Tātad ar vienu atjaunināšanu nepietiek. Servera drošībai ir jāseko līdzi pastāvīgi.

 

Pārbaudes saraksts

 

  • Noskaidroju PHP versiju, izmantojot komandu php -v

  • Pārbaudīju, vai serverī nav citu PHP versiju

  • Izveidoju vietnes un datubāzes rezerves kopiju

  • Atjaunināju PHP uz drošu versiju

  • Restartēju PHP-FPM un tīmekļa serveri

  • Pievienoju session.upload_progress.enabled = 0 failā php.ini

  • Pārbaudīju, vai vietne atveras un darbojas

  • Iestatīju atgādinājumu pārbaudīt nākamo PHP atjauninājumu

 

Nevēlaties visu darīt paši?

 

PHP atjaunināšana nav sarežģīta, ja esat to darījuši iepriekš. Taču mēdz būt arī citādi. Jūs atjaunināt PHP, bet vietnē parādās balts ekrāns. Vai arī vadības panelī ir trīs PHP versijas, un nav skaidrs, kuru mainīt. Vai arī vietne ir veca, un jūs baidāties to sabojāt.

 

Šādiem gadījumiem Zomro piedāvā divus risinājumus.

 

SOD: mēs visu izdarīsim jūsu vietā

 

Jūs rakstāt mums, un mūsu sistēmas administrators pats:

 

  • pārbaudīs, kuras PHP versijas ir instalētas serverī un kuru no tām izmanto vietne;

  • atjauninās PHP un restartēs pakalpojumus;

  • pievienos pagaidu aizsardzību;

  • pārbaudīs, vai vietne pēc atjaunināšanas darbojas.

 

Cena: €12,50 par katrām 15 darba minūtēm. Parasti PHP atjaunināšana neaizņem daudz laika.

 

Pasūtīt PHP atjaunināšanu

Premium: ātra palīdzība, kad tā nepieciešama

 

Parasta tehniskā pieprasījuma apstrāde var aizņemt līdz 10 stundām. Ja vietne pēc atjaunināšanas pārstāj darboties, šāda gaidīšana var izmaksāt pārāk dārgi. Ar Premium jūs saņemsiet speciālista atbildi 5–30 minūšu laikā.

 

Premium ir paredzēts tiem, kuri nevēlas zaudēt naudu vietnes dīkstāves dēļ. Jaunas ievainojamības, kļūdas pēc atjauninājumiem un citas tehniskas problēmas prasa ātru reakciju. Ar Premium varat paļauties uz speciālistu operatīvu palīdzību, lai ātrāk atjaunotu vietnes darbību un netērētu laiku risinājuma meklēšanai pašiem.

Pieslēgt Premium