
Parche de Magento 2 para CVE-2022-24086, CVE-2022-24087. Corrige la vulnerabilidad RCE y los errores relacionados realizando un escape profundo de variables de plantilla. Si no puedes actualizar Magento o no puedes aplicar los parches oficiales, prueba este.
Parche de Magento 2 para CVE-2022-24086, CVE-2022-24087. Corrige la vulnerabilidad RCE y los errores relacionados mediante un escape profundo de variables de plantilla. Si no puede actualizar Magento o no puede aplicar los parches oficiales, pruebe este.
El CVE-2022-24086 (con CVE-2022-24087) fue descubierto a principios de 2022.
Las tiendas afectadas presentan esta vulnerabilidad de ejecución remota de código (RCE) sin solución alternativa. Se publicaron 2 parches aislados oficiales en febrero de 2022.
Sin embargo, incluso a finales de 2024, seguimos recibiendo consultas sobre este problema y se identificó que sus tiendas hackeadas fueron explotadas mediante esta vulnerabilidad. Los ataques observados se realizaron introduciendo una cadena que contiene template directive. Normalmente haciendo uso del proceso de pago, acciones que pueden provocar el envío de un correo electrónico con campos controlables por el usuario, etc.
Hemos creado este parche debido a este ataque generalizado y a que algunas tiendas todavía tienen dificultades para actualizar a versiones no afectadas o aplicar los 2 parches oficiales.
Al hacer este parche como extensión, tenemos en cuenta la compatibilidad. Se ha probado principalmente en la serie Magento 2.4.
Aunque la documentación oficial dice que "ya no se pueden llamar métodos desde variables, ni desde la directiva var ni cuando se usan como parámetros", como hemos confirmado, incluso en la última versión (2.4.7-p3), todavía se permite llamar al método "Getter" en el Objeto de Datos y llamar al método getUrl en el Objeto de Plantilla de Correo Electrónico (\Magento\Email\Model\AbstractTemplate).
Este parche (extensión) también conserva las características anteriores. Por lo tanto, {{var data_object.something}} y {{var data_object.getSomething()}} son ambas válidas y equivalentes.
Ejemplo de getUrl:
{{var this.getUrl($store,'route_id/controller/action',[_query:[param1:$obj.param1,param2:$obj.param2],_nosid:1])}}
En resumen, después de instalar esta extensión:
\Magento\Framework\DataObject o una instancia hija del mismo.\Magento\Framework\DataObject y sus instancias hijasgetUrl solo funciona en thisSe eliminó LegacyResolver para detener la RCE.
Se introdujo la "directiva diferida con firma" para plantillas hijas. No estamos seguros de si tiene alguna mejora de seguridad.
Todavía tiene un error sin corregir (#39353).
Utilice el "escape profundo de variables de plantilla" antes del proceso de filtrado de plantillas. LegacyResolver solo recibirá datos de usuario escapados y, por lo tanto, se puede mantener.
Magento 2.3 o 2.4
composer require wubinworks/module-template-filter-patch
Si te gusta esta extensión o te ha ayudado, por favor ★marca con una estrella☆ este repositorio.
También te puede gustar:
Magento 2 patch for CVE-2024-34102(aka Cosmic Sting)
Magento 2 Enhanced XML Security
Magento 2 Encryption Key Manager CLI
Magento 2 JWT Authentication Patch
Magento 2 Disable Customer Change Email Extension
Magento 2 Disable Customer Extension