
Análisis técnico y aviso para CVE-2026-48908: Subida arbitraria de archivos sin autenticación que conduce a RCE en JoomShaper SP Page Builder.
Un desglose técnico integral de una vulnerabilidad de ejecución remota de código no autenticada.
CVE-2026-48908 es una vulnerabilidad de seguridad crítica identificada en la extensión JoomShaper SP Page Builder para Joomla. La vulnerabilidad reside en un endpoint no protegido que acepta cargas proporcionadas por el usuario sin validar la autorización del usuario ni restringir eficazmente las extensiones de archivo.
La explotación exitosa permite a atacantes remotos no autenticados escribir archivos ejecutables en directorios web públicos, culminando en el compromiso total del servidor (Ejecución Remota de Código).
[!NOTE] Este descubrimiento de vulnerabilidad es el resultado de 6 a 7 meses de investigación de seguridad dedicada, auditoría de código fuente y mapeo del comportamiento de protocolos en extensiones de CMS.
timeline
title Ciclo de Divulgación
2026 Q1 : Auditoría de Código Fuente e Identificación
: Análisis de Casos Límite y Trazado de Flujo
2026 Q2 : Validación de Prueba de Concepto
: Divulgación Responsable al Proveedor
2026 Q3 : Verificación del Parche
: Aviso Público y Registro de CVE
El siguiente diagrama ilustra el flujo operativo de la falla desde la solicitud hasta la ejecución:
sequenceDiagram
autonumber
actor Attacker as Atacante Remoto
participant Endpoint as Controlador de Carga
participant Storage as Almacenamiento Público
participant Server as Proceso del Servidor Web
Attacker->>Endpoint: Solicitud POST con carga maliciosa (Sin Auth)
Note over Endpoint: Falta de Verificación de Autorización<br/>& Validación MIME Deficiente
Endpoint->>Storage: Escribe el archivo en una ruta pública (/images/...)
Endpoint-->>Attacker: Devuelve respuesta de éxito y ruta del archivo
Attacker->>Storage: Solicitud GET al archivo cargado
Storage->>Server: Ejecuta código del lado del servidor
Server-->>Attacker: Devuelve la salida de ejecución de comandos
El endpoint del controlador que maneja las cargas de archivos de múltiples partes carece de comprobaciones explícitas de privilegios (JFactory::getUser()->authorise()) y no requiere tokens de sesión Anti-CSRF válidos. En consecuencia, las solicitudes HTTP no autenticadas llegan a la lógica principal de escritura de archivos.
La lógica de carga se basa en cabeceras proporcionadas por el cliente o en comprobaciones de extensiones permisivas, en lugar de una lista blanca estricta del lado del servidor. Esto permite que extensiones de scripts ejecutables se guarden en directorios configurados para ejecución web.
[!IMPORTANT] Los administradores que utilicen versiones afectadas deben actualizar a la versión parcheada de inmediato y aplicar políticas de ejecución a nivel de servidor.
# Bloquear la ejecución de scripts en directorios de medios con escritura
location ~* ^/images/.*\.php$ {
deny all;
return 403;
}
.htaccess# Deshabilitar la ejecución de PHP dentro de las rutas de carga
<Directory "/var/www/html/images">
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps)$">
Order Deny,Allow
Deny from all
</FilesMatch>
</Directory>
Descargo de responsabilidad: Este repositorio se publica estrictamente con fines educativos, defensivos y de auditoría de seguridad.
| Parámetro | Detalles |
|---|
| Tipo de Vulnerabilidad | Carga Arbitraria de Archivos No Autenticada (CWE-434) |
| Puntuación CVSS v3.1 | 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Nivel de Impacto | Crítico (Ejecución Remota de Código / Toma de Control Total del Sistema) |
| Vector de Acceso | Red / Remoto (Sin Autenticación Requerida) |