CVE-2026-48939
iCagenda iCagenda
2026-07-10
iCagenda contains an unrestricted upload of file with dangerous type vulnerability that allows the upload of arbitrary files in the file attachment feature, ultimately resulting in PHP code upload and execution.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2026-48939 связана с отсутствием надлежащей фильтрации расширений и типов файлов в модуле загрузки вложений iCagenda. Злоумышленник может обойти проверки на стороне клиента и загрузить на сервер файл с расширением .php, содержащий произвольный программный код. Поскольку загруженные файлы сохраняются в директории, доступной для чтения веб-сервером, атакующий может выполнить этот код, обратившись к файлу напрямую через HTTP-запрос, что приводит к полному компрометации системы (RCE).
Как исправить
Обновите компонент iCagenda до версии, в которой официально исправлена данная уязвимость (см. официальный сайт разработчика или репозиторий расширений Joomla). В настройках компонента iCagenda строго ограничьте список разрешенных к загрузке расширений (оставьте только необходимые, например: pdf, zip, jpg). Измените права доступа к директории загрузки вложений, запретив выполнение любых скриптов.
find /var/www/html/media/com_icagenda/attachments -type f -exec chmod 644 {} \;
Настройте серверное переименование загружаемых файлов, чтобы исключить сохранение оригинальных имен и расширений, которые могут быть интерпретированы сервером как исполняемые.
Временные меры
Создайте файл .htaccess в директории загрузки вложений iCagenda для запрета интерпретации PHP-файлов.
<FilesMatch "\.(php|php3|php4|php5|phtml|phps)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Если функция вложений не является критически важной, полностью отключите возможность загрузки файлов в настройках прав доступа (ACL) компонента iCagenda. Настройте правило на Web Application Firewall (WAF) для блокировки POST-запросов к компоненту iCagenda, содержащих файлы с расширением .php или MIME-типом application/x-httpd-php.
secrule FILES_NAMES "\.ph(p[3457]?|t|tml)$" "id:1001,phase:2,deny,status:403,log,msg:'PHP upload attempt blocked'"
Пока никто не поделился опытом.
Станьте первым!