Уязвимост в PHP, която потенциално може да компрометира всеки PHP сайт

Разработчиците на PHP обявиха, че днес в 17:00 (MSK) ще бъде публикувано спешно коригиращо издание (8.5.12, 8.4.27, 8.3.36 и 8.2.35), в което ще бъдат отстранени две критични уязвимости. На всички администратори на сървъри с PHP е препоръчително незабавно да инсталират поправките на системите си веднага след като бъдат пуснати. Официално детайлите ще бъдат разкрити само след появата на поправките, но според информацията, която вече е достъпна, става дума за уязвимости CVE-2026-109618 и CVE-2026-109619, които потенциално позволяват отдалечено изпълнение на произволен код на всеки уебсървър, изпълняващ PHP скриптове в конфигурация по подразбиране. Проблемите се проявяват във всички версии, започвайки от PHP 5.4.

В мрежата вече са се появили прототипи на експлоити (1, 2) за проверка на уязвимостта на системите. В бележките към експлоита се твърди, че уязвимостите са причинени от достъп до вече освободена памет в обработвача на напредъка на зареждането на файлове на сървър (session.upload_progress). Наличието на функционалност за качване на файлове на сайта не е необходимо за извършване на атака, е достатъчно автоматично задействане в PHP интерпретатор обработвача на съдържание „multipart/form-data“. За успешна експлоатация е необходимо определяне на подредбата на структурите в паметта на процеса, която е специфична за всяко сглобяване (проблемът се решава чрез перебиране в експлоита на изместванията, предварително изчислени за пакети от различни дистрибуции).

Като обходен маршрут за защита се срещат препоръки да се зададе в php.ini параметър „session.upload_progress.enabled = off“ (или „php_admin_flag[session.upload_progress.enabled] = off“ в PHP-FPM), но представител на проекта PHP, а също и авторът на първия прототип на експлоита твърдят, че това не е достатъчно за блокиране на двете уязвимости. В бележките към втория прототип на експлоита се споменава, че освен споменатата конфигурация в php.ini, за предотвратяване на атаката без прилагане на пач е необходима пълна блокировка на заявките с тип съдържание „multipart/form-data“, което ще доведе до невъзможност за качване на файлове през уеб формуляри.

В Apache httpd за блокиране на multipart заявки може да се използва следното правило в mod_rewrite:

RewriteCond %{HTTP:Content-Type} multipart [NC]
RewriteRule ^ — [F,L]

За блокиране в nginx:

if ($http_content_type ~* „multipart“) {
return 403;
}

За блокиране в Caddy:

@multipart header_regexp Content-Type (?i)multipart
respond @multipart 403

Допълнение: Публикувани са коригиращи версии PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35, както и подробности за поправените критични уязвимости. Анализ на уязвимостите и официално препоръчаните обходни методи за защита са публикувани в отделна новина.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster