Cómo proteger su tienda Magento 2 frente a la vulnerabilidad APSB25-88

Cómo proteger su tienda Magento 2 frente a la vulnerabilidad APSB25-88

Propietarios de tiendas Magento 2: es momento de actuar con rapidez. Adobe ha publicado recientemente una importante actualización de seguridad que corrige un fallo crítico que podría permitir la ejecución de código no autorizado. Si su tienda aún no tiene el parche aplicado, debe actuar de inmediato. Después de aplicarlo, dé un paso más igual de importante: desactive los endpoints de subida de archivos que no utilice y que supongan un riesgo, como la subida de archivos en las direcciones de cliente y la subida de archivos en las opciones personalizadas.

Buenas noticias: ya está disponible el parche oficial de Adobe

Buenas noticias: Adobe consiguió resolver el problema a tiempo y publicó un parche de emergencia que corrige por completo la vulnerabilidad.

Ahora le toca a usted: aplique el parche y proteja su tienda. No lo retrase, actúe ya.

Siga aquí las instrucciones oficiales de Adobe: instrucciones del parche de Adobe.

Cómo aplicar el parche

Descargue el parche VULN-32437-2-4-X y ejecute los siguientes comandos desde el directorio raíz de Magento 2:

curl -LO https://repo.magento.com/patch/VULN-32437-2-4-X-patch.zip
unzip VULN-32437-2-4-X-patch.zip
patch -p1 < VULN-32437_2.4.X.patch && \
php -d memory_limit=-1 bin/magento cache:clean

Tras ejecutar estos comandos, debería ver un cambio en vendor/magento/framework/Webapi/ServiceInputProcessor.php similar a este:

diff --git a/vendor/magento/framework/Webapi/ServiceInputProcessor.php b/vendor/magento/framework/Webapi/ServiceInputProcessor.php
index ba58dc2bc7acf..06919af36d2eb 100644
--- a/vendor/magento/framework/Webapi/ServiceInputProcessor.php
+++ b/vendor/magento/framework/Webapi/ServiceInputProcessor.php
@@ -246,6 +246,13 @@ private function getConstructorData(string $className, array $data): array
             if (isset($data[$parameter->getName()])) {
                 $parameterType = $this->typeProcessor->getParamType($parameter);

+                // Allow only simple types or Api Data Objects
+                if (!($this->typeProcessor->isTypeSimple($parameterType)
+                    || preg_match('~\\\\?\w+\\\\\w+\\\\Api\\\\Data\\\\~', $parameterType) === 1
+                )) {
+                    continue;
+                }
+
                 try {
                     $res[$parameter->getName()] = $this->convertValue($data[$parameter->getName()], $parameterType);
                 } catch (\ReflectionException $e) {

Integración del parche en versiones posteriores

Desde el 14 de octubre, Adobe incluye oficialmente la corrección en la versión APSB25-94. Puede comprobarlo en el boletín de seguridad de Adobe.

Las tiendas que utilizan las siguientes versiones ya están protegidas:

  • Magento 2.4.6-p13
  • Magento 2.4.7-p8
  • Magento 2.4.8-p3

Si utiliza una de estas versiones, ya está cubierto, pero revise el estado de sus actualizaciones para asegurarse de que está protegido frente a APSB25-94 y las vulnerabilidades relacionadas.

Ahora, proteja aún más su tienda

Después de aplicar el parche, dé el siguiente paso proactivo: bloquee los dos endpoints de subida de archivos más explotados de Magento 2. Se trata de dos puntos de entrada distintos, y cada uno requiere su propia solución: uno cubre la subida de archivos en las opciones personalizadas (cuando un producto permite al cliente subir un archivo, p. ej., un logotipo para grabar) y el otro cubre el atributo de subida de archivos en las direcciones de cliente. Ambos son importantes y protegen endpoints diferentes: recomendamos instalar los dos.

Proteja las subidas en opciones personalizadas: módulo PolyShell Protection

Módulo: aregowe/magento2-module-polyshell-protection
Finalidad: Defensa en profundidad frente a la vulnerabilidad PolyShell de subida de archivos sin restricciones (APSB25-94), que afecta a Magento Open Source y Adobe Commerce hasta la 2.4.9-alpha2 y que se explota sobre todo a través de la subida de archivos en las opciones personalizadas en las páginas de producto. Aplica ocho capas de protección distintas (bloqueo de rutas de petición, prevención de subidas a nivel de controlador, detección de archivos políglotas y refuerzo de imágenes a nivel de framework) mediante nueve plugins que cubren los endpoints de subida de la API REST, la entrega de archivos multimedia y el procesamiento de imágenes.

Instalación con Composer (recomendada si su hosting lo permite):

composer require aregowe/magento2-module-polyshell-protection
bin/magento module:enable Aregowe_PolyShellProtection
bin/magento setup:upgrade
bin/magento cache:flush

Instalación manual en app/code (sin necesidad de acceso a Composer): descargue el repositorio como ZIP desde GitHub y, a continuación:

mkdir -p app/code/Aregowe/PolyShellProtection
# extract the downloaded ZIP contents into that folder, so that
# app/code/Aregowe/PolyShellProtection/registration.php exists
bin/magento module:enable Aregowe_PolyShellProtection
bin/magento setup:upgrade
bin/magento cache:flush

Una vez activado, vaya a Stores > Configuration > PolyShell Protection para revisar las extensiones de archivo permitidas y bloqueadas; no es necesario modificar código para ajustarlo.

Proteja las subidas en direcciones de cliente: desactive el endpoint de subida

Módulo: basecom/magento2-disable-customer-address-file-upload
Finalidad: Desactiva específicamente el endpoint de subida de archivos en las direcciones de cliente , una ruta de subida distinta de la de las opciones personalizadas y que la mayoría de tiendas nunca utiliza, por lo que desactivarla elimina el riesgo por completo en lugar de limitarse a filtrarlo.

Instalación con Composer:

composer require basecom/magento2-disable-customer-address-file-upload
bin/magento module:enable Basecom_DisableCustomerAddressFileUpload
bin/magento setup:upgrade
bin/magento cache:clean

Instalación manual en app/code (sin necesidad de acceso a Composer): descargue el repositorio como ZIP desde GitHub y, a continuación:

mkdir -p app/code/Basecom/DisableCustomerAddressFileUpload
# extract the downloaded ZIP contents into that folder, so that
# app/code/Basecom/DisableCustomerAddressFileUpload/registration.php exists
bin/magento module:enable Basecom_DisableCustomerAddressFileUpload
bin/magento setup:upgrade
bin/magento cache:clean

Una vez activado, se bloqueará cualquier intento de subir archivos a través del formulario de dirección de cliente o de la API, cerrando así una posible superficie de ataque que muchas tiendas pasan por alto. No se necesita ninguna configuración adicional.

Reflexiones finales

La seguridad es un proceso continuo. Aplicar el último parche de Adobe mantiene seguro el núcleo de Magento 2. Los dos módulos anteriores hacen cosas distintas: uno impide las subidas maliciosas a través de las opciones personalizadas y el otro cierra el endpoint independiente de subida en las direcciones de cliente. Ninguno sustituye al otro: instale ambos, junto con el parche del núcleo, para lograr una protección por capas y total tranquilidad.