Текуща ситуация: PHP2Shell. Две критични уязвимости в PHP (CVSS 9,2) позволяват злонамерен код без вход. Корекции от 21.10.2026 г.Какво да направите сега →

Как да проверите правилно PHP версията и състоянието на пача

Показаната PHP версия сама по себе си не казва дали PHP2Shell е затворена. Решаващи са състоянието на пакета, backport-овете и дали новите процеси наистина работят.

Актуалност 5 мин. четенеPHP2Shell

Накратко: За да проверите PHP версията, php -v не стига. Трябва да знаете коя PHP версия действително ползва уеб сървърът, дали пакетът съдържа поправката, включително като backport със стар номер, и дали след актуализацията всички процеси са рестартирани. PHP2Shell е поправена в 8.5.12, 8.4.27, 8.3.36 и 8.2.35.

Защо номерът на версията сам по себе си не стига

За PHP2Shell има ясен списък с поправени версии. На практика обаче три ситуации водят до погрешни оценки:

  • Няколко инсталации: Командният ред показва PHP 8.3, а уебсайтът работи през пул с PHP 8.1.
  • Backport-ове: Дистрибуциите и хостинг доставчиците понякога внасят поправки в съществуващи пакети. Тогава например Plesk продължава да показва 8.2.34, въпреки че е пачнато.
  • Стари процеси: Новите файлове лежат на диска, но работещите worker процеси са от преди това.

За управителите и нетехническите хора помага просто правило: не питайте само „Каква PHP версия имаме?“, а „PHP2Shell затворена ли е на всички сървъри и по какво го виждаме?“. Надеждният отговор съдържа три доказателства: версия или backport, състояние на пакета и момент на рестартирането.

Затова техническата проверка има три стъпки: версия, състояние на пакета, работещи процеси. Командите по-долу са само за четене. Имената на пакетите и услугите се различават според дистрибуцията, източника на PHP и интерфейса на хостинга; примерите изхождат от PHP 8.3.

Проверка на PHP версията в командния ред

php -v                                  # версия от командния ред
ls /etc/php/ 2>/dev/null                # Debian/Ubuntu: инсталирани клонове
php-fpm8.3 -v                           # версия на двоичния файл на FPM (името зависи от дистрибуцията)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"

При RHEL, AlmaLinux или Rocky двоичният файл на FPM обикновено се казва php-fpm; при Software Collections или външни източници допълнителни версии лежат в собствени пътища. Plesk и cPanel носят собствени PHP инсталации, които съществуват до системния PHP. Как да действате там, описваме на страниците за Plesk и cPanel.

Коя PHP версия ползва един уебсайт в уеб контекст, най-надеждно се вижда в конфигурацията на пула или на VirtualHost или в интерфейса на хостинга. Страница с phpinfo също го показва; създавайте я само за кратко, със защита на достъпа и случайно име, и я изтрийте веднага след това.

При споделен хостинг обикновено нямате достъп до командния ред. Тогава интерфейсът на хостинга показва зададената PHP версия за всеки уебсайт. Дали е внесен backport и е направено рестартиране, там рядко пише. Тук надеждният път е писменото потвърждение от хостинг доставчика.

Проверка на състоянието на пакета и на backport-овете

Състоянието на пакета показва какво действително е доставила Вашата дистрибуция:

# Debian/Ubuntu
apt policy php8.3-fpm
apt changelog php8.3-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"

# RHEL, AlmaLinux, Rocky, Fedora
dnf info php-fpm
rpm -q --changelog php-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"

Ако един от номерата CVE е в changelog-а, backport-ът се съдържа в инсталирания пакет. Ако записът липсва, това още не е доказателство за уязвимост: някои поддържащи пакетите формулират changelog-овете по друг начин. Тогава сравнете версията на пакета със съобщенията за сигурност на Вашата дистрибуция или попитайте доставчика. Образец за това запитване ще намерите на страницата Как да попитате хостинг доставчика за състоянието на пача.

Важно: проверете всеки инсталиран PHP пакет, не само първия. На сървъри с няколко клона често единият е пачнат, а друг не.

Работи ли новата версия наистина?

Една актуализация е в сила едва когато всички PHP процеси са рестартирани. Сравнете времето на стартиране на работещите процеси с момента на актуализацията:

ps -o pid,lstart,cmd -C php-fpm8.3      # време на стартиране на FPM процесите
systemctl status php8.3-fpm             # от кога работи услугата
needrestart -r l                        # Debian/Ubuntu, ако е инсталиран: показва остарели процеси

Ако времето на стартиране е преди актуализацията, още работят стари процеси. При Apache с mod_php същото важи за процесите на Apache. Как да рестартирате чисто, описва страницата Рестартиране на PHP-FPM и на всички worker процеси.

Съвет

Запишете резултата писмено: сървър, PHP версия, версия на пакета, CVE в changelog-а да или не, момент на рестартирането. Тази бележка Ви трябва за управителите, застрахователя и по-късната проверка за следи.

Оценка на резултата

Находка Оценка
Официална версия 8.5.12, 8.4.27, 8.3.36 или 8.2.35, процесите рестартирани PHP2Shell затворена
По-стар номер, номерата CVE в changelog-а на пакета, процесите рестартирани Внесен backport, затворена
По-стар номер, няма запис в changelog-а, няма потвърждение неясно, изяснете при доставчика
PHP 8.1 или по-стар без потвърден backport отворена, нужни са временни мерки и миграция
Процесите са по-стари от актуализацията Липсва рестартиране, уязвимостта продължава да е активна

Ако един сървър остане в състояние „неясно“, третирайте го като отворен: задайте временни мерки и следете изясняването, докато има доказателство. Пълният преглед на версиите е на страницата Кои PHP версии са засегнати?.

Как помага PHP SOS конкретно?

С услугата за пач на PHP поемаме проверката и доказателството:

  • Намиране на всички инсталации, също и на второстепенните версии от хостинг панели, Software Collections или контейнери.
  • Оценка на състоянието на пакета: официално издание, backport или отворена, с доказателство от changelog-а или от доставчика.
  • Контрол на рестартирането, докато не работи нито един процес със стар код.
  • Изготвяне на протокол от проверката, който можете да ползвате вътрешно и пред трети лица.

Често задавани въпроси

Защо php -v показва друга версия от тази на уебсайта ми?

На много сървъри са инсталирани няколко PHP версии. Командният ред използва една от тях, уеб сървърът или един FPM пул друга. Затова проверете версията, която действително работи в уеб контекст, например чрез двоичния файл на FPM или интерфейса на хостинга.

Как разпознавам backport?

При пакети от дистрибуции поправката често е в changelog-а на пакета, често с номера CVE. При Debian и Ubuntu помага apt changelog, при RHEL-подобни системи rpm -q --changelog. Ако записът липсва, изяснете състоянието при доставчика.

Мога ли да проверя PHP версията в клиентското меню на хостинга?

Да, повечето интерфейси показват зададената версия за всеки уебсайт. Дали е внесен backport и е направено рестартиране, там обикновено не се вижда. За това надеждният път е писмено потвърждение от хостинг доставчика.

Източници

Незабавен контакт

Всеки час има значение. Пишете ни сега.

Опишете накратко системата, версията на PHP и какво сте забелязали. Ние се свързваме с Вас, уточняваме ситуацията и работим отдалечено, докато инцидентът бъде приключен и документиран.

Незабавна помощ