
Технический анализ и рекомендации для CVE-2026-48908: Неаутентифицированная произвольная загрузка файлов с приведением к RCE в JoomShaper SP Page Builder.
Подробный технический разбор уязвимости неаутентифицированного удалённого выполнения кода.
CVE-2026-48908 — это критическая уязвимость безопасности, обнаруженная в расширении JoomShaper SP Page Builder для Joomla. Уязвимость находится в незащищённой конечной точке, которая принимает загружаемые пользователем файлы без проверки авторизации пользователя и эффективного ограничения расширений файлов.
Успешная эксплуатация позволяет удалённым неаутентифицированным злоумышленникам записывать исполняемые файлы в публичные веб-каталоги, что приводит к полной компрометации сервера (удалённое выполнение кода).
[!NOTE] Это обнаружение уязвимости является результатом 6–7 месяцев целенаправленного исследования безопасности, аудита исходного кода и картирования поведения протоколов в расширениях CMS.
timeline
title Disclosure Lifecycle
2026 Q1 : Source Code Auditing & Identification
: Edge-case Analysis & Flow Tracing
2026 Q2 : Proof-of-Concept Validation
: Responsible Vendor Disclosure
2026 Q3 : Patch Verification
: Public Advisory & CVE Registration
Приведённая ниже диаграмма иллюстрирует поток эксплуатации уязвимости от инициации запроса до выполнения кода:
sequenceDiagram
autonumber
actor Attacker as Remote Attacker
participant Endpoint as Upload Controller
participant Storage as Public Storage
participant Server as Web Server Process
Attacker->>Endpoint: POST request with malicious payload (No Auth)
Note over Endpoint: Missing Authorization Check<br/>& Loose MIME Validation
Endpoint->>Storage: Writes file to public path (/images/...)
Endpoint-->>Attacker: Returns success response & file path
Attacker->>Storage: GET request to uploaded file
Storage->>Server: Executes server-side code
Server-->>Attacker: Command execution output returned
Контроллер конечной точки, обрабатывающий многокомпонентную (multipart) загрузку файлов, не содержит явных проверок привилегий (JFactory::getUser()->authorise()) и не требует действительных анти-CSRF токенов сессии. В результате неаутентифицированные HTTP-запросы достигают основной логики записи файлов.
Логика загрузки полагается на предоставляемые клиентом заголовки или нестрогие проверки расширений, а не на строгую серверную проверку по белому списку. Это позволяет сохранять исполняемые расширения скриптов в каталогах, настроенных для веб-исполнения.
[!IMPORTANT] Администраторам, использующим затронутые версии, следует немедленно обновиться до исправленного релиза и применить серверные политики выполнения кода.
# Block script execution in writable media directories
location ~* ^/images/.*\.php$ {
deny all;
return 403;
}
.htaccess# Disable PHP execution inside upload paths
<Directory "/var/www/html/images">
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps)$">
Order Deny,Allow
Deny from all
</FilesMatch>
</Directory>
Отказ от ответственности: Этот репозиторий опубликован исключительно для образовательных, защитных целей и аудита безопасности.
| Параметр | Детали |
|---|
| Тип уязвимости | Неаутентифицированная произвольная загрузка файлов (CWE-434) |
| Оценка CVSS v3.1 | 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Уровень воздействия | Критический (удалённое выполнение кода / полный захват системы) |
| Вектор доступа | Сетевой / удалённый (аутентификация не требуется) |