
Prueba de Concepto Verificada para CVE-2022-24086
CVE-2022-24086, que Adobe vio siendo "explotado en la naturaleza en ataques muy limitados", recibió una puntuación de gravedad de 9.8 sobre 10, y los adversarios que lo explotan pueden lograr la ejecución remota de código en los sistemas afectados sin necesidad de autenticarse. El problema que ahora se rastrea como CVE-2022-24087 tiene la misma puntuación de gravedad y puede llevar al mismo resultado cuando se utiliza en ataques. Ambos son vulnerabilidades de validación de entrada incorrecta (Improper Input Validation) y la compañía lanzó parches para Adobe Commerce y Magento Open Source para abordar los dos problemas de seguridad.
Nos centraremos solo en 2022-24086, porque si el CMS está parcheado, normalmente ya tiene ambos parches, por lo que no tiene sentido profundizar en 2022-24087.
Magento Open Source / Adobe Commerce - 2.3.3-p1 - 2.3.7-p2
Magento Open Source / Adobe Commerce - 2.4.0 - 2.4.3-p1
Este PoC fue probado en las versiones 2.3.4, 2.4.0, 2.4.2-p2, 2.4.3 y 2.4.3-p1 con el módulo de plantillas de correo electrónico predeterminado y los datos de muestra predeterminados.
Vamos a profundizar en los parches oficiales, MDVA-43443, MDVA-43395. Todos los parches de Composer para todas las versiones comparten partes comunes; las más importantes son:
+ private function sanitizeValue($value)
+ {
+ return is_bool($value) ? $value : str_replace(['{', '}'], '', (string) $value);
+ }
+ $pattern = '/{{.*?}}/';
+ do {
+ $result = preg_replace($pattern, '', (string)$result);
+ } while (preg_match($pattern, $result));
Como vemos, intentan deshacerse de {{ y }}. Esas llaves dobles se utilizan en las plantillas de correo electrónico integradas.
¡Ahora es el momento de profundizar en las plantillas de correo electrónico!
El manual oficial sobre plantillas de correo electrónico fue editado el 15 de marzo. ¿Qué cambió y por qué? web.archive.org nos mostrará una versión antigua de esa página y podemos ver que eliminaron las menciones sobre variables del sistema. La información sobre los métodos getTemplateFilter y addAfterFilterCallback fue borrada del manual.
public function getTemplateFilter()
{
if (empty($this->templateFilter)) {
$this->templateFilter = $this->getFilterFactory()->create();
$this->templateFilter->setUseAbsoluteLinks($this->getUseAbsoluteLinks())
->setStoreId($this->getDesignConfig()->getStore())
->setUrlModel($this->urlModel);
}
return $this->templateFilter;
}
public function addAfterFilterCallback(callable $afterFilterCallback)
{
// Only add callback if it doesn't already exist
if (in_array($afterFilterCallback, $this->afterFilterCallbacks)) {
return $this;
}
$this->afterFilterCallbacks[] = $afterFilterCallback;
return $this;
}

La mayoría de los usuarios importantes de Magento ya han aplicado parches y esa herramienta ya no es tan peligrosa como hace un par de meses. Pero debido al daño potencial que esta herramienta puede infligir, este PoC no debería estar en acceso limitado.
Precio actual: 0.5 BTC. Incluye instrucciones completas sobre penetración, payloads de muestra y soporte.
Nuestro contacto XMPP para consultas y pedidos es [email protected].
Este PoC se encuentra explícitamente en un estado que no causa ningún daño. Es un punto de partida sólido para construir algo más grande.
Los autores de este proyecto no son responsables de ningún posible daño causado por los materiales.
CC0