🔍 Contexte

PubliĂ© le 17 mars 2026 par Sansec (sansec.io), cet article prĂ©sente une analyse technique dĂ©taillĂ©e d’une vulnĂ©rabilitĂ© critique baptisĂ©e PolyShell, affectant Magento Open Source et Adobe Commerce dans toutes leurs versions de production actuelles.

🚹 VulnĂ©rabilitĂ©

La faille rĂ©side dans l’API REST de Magento, au niveau du traitement des options de panier (cart item custom options). Trois contrĂŽles critiques sont absents :

  • Aucune validation de l’ID d’option soumis
  • Aucune vĂ©rification du type d’option (file)
  • Aucune restriction sur les extensions de fichier (.php, .phtml, .phar autorisĂ©es)

La seule validation présente (getimagesizefromstring) est trivialement contournable via des fichiers polyglots (images GIF/PNG contenant du code PHP exécutable).

Endpoints vulnérables (sans authentification) :

  • POST /V1/guest-carts/:cartId/items
  • PUT /V1/guest-carts/:cartId/items/:itemId

📩 Versions affectĂ©es

  • Upload non restreint : toutes versions Magento Open Source et Adobe Commerce jusqu’Ă  2.4.9-alpha2
  • XSS stockĂ© : toutes versions antĂ©rieures Ă  2.3.5 ou config serveur non standard
  • RCE via PHP : nginx stock 2.0.0–2.2.x, Apache prĂ©-2.3.5 sans php_flag engine 0
  • PatchĂ© : 2.4.9-alpha3+ uniquement (prĂ©-release), via APSB25-94

đŸ› ïž Exploitation active

L’exploitation active a dĂ©butĂ© le 19 mars 2026, avec un mass scanning automatisĂ© lancĂ© le 23 mars. Au 24 mars, 56,7% de tous les stores ont eu du code PHP malveillant uploadĂ©. Plus de 50 adresses IP ont Ă©tĂ© identifiĂ©es comme sources d’attaque.

Deux types de payloads observés :

  1. Webshell GIF89a avec authentification par cookie : vérifie le cookie d contre un hash MD5 hardcodé (a17028468cb2a870d460676d6d6da3ad63706778e3), exécute du code via eval(base64_decode())
  2. Shell RCE protégé par mot de passe : utilise hash_equals() avec hash MD5 double (4009d3fa8132195a2dab4dfa3affc8d2), passe les commandes à system()

Noms de fichiers observés : index.php, json-shell.php, bypass.phtml, c.php, r.php, rce.php, static.php, test.php, blocked-json.php, bypass-async.php, urlencode-shell.php, xx_malicious_file.php, ato_poc.html, mikhail.html

📅 Chronologie

  • 16 mars 2026 : Sansec ajoute la protection PolyShell Ă  Shield
  • 17 mars 2026 : Patterns de dĂ©tection ajoutĂ©s Ă  eComscan + alerte publique
  • 19 mars 2026 : PremiĂšres attaques observĂ©es
  • 23 mars 2026 : Mass scanning, 23% des stores protĂ©gĂ©s ciblĂ©s
  • 24 mars 2026 : 56,7% des stores avec du code PHP malveillant uploadĂ©

📄 Nature de l’article

Il s’agit d’une analyse technique et alerte de sĂ©curitĂ© publiĂ©e par Sansec, combinant divulgation de vulnĂ©rabilitĂ©, analyse de payloads, donnĂ©es d’exploitation en temps rĂ©el et liste d’IOCs.

🧠 TTPs et IOCs dĂ©tectĂ©s

TTP

  • T1190 — Exploit Public-Facing Application (Initial Access)
  • T1505.003 — Server Software Component: Web Shell (Persistence)
  • T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1036 — Masquerading (Defense Evasion)
  • T1041 — Exfiltration Over C2 Channel (Exfiltration)
  • T1595.002 — Active Scanning: Vulnerability Scanning (Reconnaissance)

IOC

  • IPv4 : 3.12.250.83
  • IPv4 : 3.88.149.41
  • IPv4 : 3.150.234.247
  • IPv4 : 18.220.50.153
  • IPv4 : 23.22.254.35
  • IPv4 : 31.134.0.53
  • IPv4 : 31.134.1.34
  • IPv4 : 31.134.7.117
  • IPv4 : 31.134.11.173
  • IPv4 : 31.134.15.89
  • IPv4 : 31.134.15.251
  • IPv4 : 45.136.24.213
  • IPv4 : 45.136.26.181
  • IPv4 : 45.136.27.218
  • IPv4 : 45.147.233.211
  • IPv4 : 45.147.234.73
  • IPv4 : 45.155.166.228
  • IPv4 : 52.24.6.119
  • IPv4 : 64.49.38.96
  • IPv4 : 78.129.161.63
  • IPv4 : 79.130.2.23
  • IPv4 : 81.169.144.135
  • IPv4 : 91.132.124.183
  • IPv4 : 103.216.223.206
  • IPv4 : 109.107.178.102
  • IPv4 : 115.79.194.68
  • IPv4 : 136.244.92.114
  • IPv4 : 138.199.24.219
  • IPv4 : 138.199.46.65
  • IPv4 : 138.199.46.68
  • IPv4 : 140.235.2.103
  • IPv4 : 140.235.171.72
  • IPv4 : 140.248.75.31
  • IPv4 : 140.248.75.114
  • IPv4 : 142.229.84.117
  • IPv4 : 162.159.113.66
  • IPv4 : 185.3.235.111
  • IPv4 : 185.111.111.154
  • IPv4 : 185.111.111.155
  • IPv4 : 193.151.188.86
  • IPv4 : 193.233.216.217
  • IPv4 : 193.233.221.124
  • IPv4 : 194.180.233.186
  • IPv4 : 198.186.130.10
  • IPv4 : 199.96.165.186
  • IPv4 : 212.87.218.43
  • IPv4 : 216.38.6.137
  • IPv6 : 2001:19f0:6c01:15da:5400:6ff:fe05:e560
  • URLs : /V1/guest-carts/:cartId/items
  • URLs : /V1/guest-carts/:cartId/items/:itemId
  • MD5 : a17028468cb2a870d460676d6d6da3ad63706778e3
  • MD5 : 4009d3fa8132195a2dab4dfa3affc8d2
  • Fichiers : index.php
  • Fichiers : json-shell.php
  • Fichiers : bypass.phtml
  • Fichiers : c.php
  • Fichiers : r.php
  • Fichiers : rce.php
  • Fichiers : static.php
  • Fichiers : test.php
  • Fichiers : blocked-json.php
  • Fichiers : bypass-async.php
  • Fichiers : urlencode-shell.php
  • Fichiers : xx_malicious_file.php
  • Fichiers : ato_poc.html
  • Fichiers : mikhail.html
  • Fichiers : bypass.php
  • Chemins : pub/media/custom_options/quote/
  • Chemins : pub/media/custom_options/

Malware / Outils

  • PolyShell webshell (backdoor)
  • GIF89a PHP webshell (backdoor)

🔗 Source originale : https://sansec.io/research/magento-polyshell