Vulnerabilidad crítica en PrestaShop 1.6.0.10 a 1.7.8.2

El día 22 de julio PrestaShop envió un comunicado masivo en el que alertaba de una vulnerabilidad crítica de tipo inyección SQL.

Esta vulnerabilidad afecta a las versiones 1.6.0.10 hasta la 1.7.8.1.

El atacante aprovecha una vulnerabilidad en el motor de plantillas Smarty, concretamente en el sistema de caché, en el componente relacionado con el almacenamiento MySQL.

La solución pasa por actualizar PrestaShop a una versión segura para evitar que un atacante utilice esta y otras vulnerabilidades existentes en versiones obsoletas.

Pero sabemos que esto no es siempre posible y menos con la urgencia que requiere esta vulnerabilidad, por lo que otra solución temporal sería eliminar el código vulnerable.

Para ello se editaría el fichero config/smarty.config.inc.php, debiendo localizar y eliminar las siguientes líneas:

if (Configuration::get('PS_SMARTY_CACHING_TYPE') == 'mysql') {
    include _PS_CLASS_DIR_.'Smarty/SmartyCacheResourceMysql.php';
    $smarty->caching_type = 'mysql';
}

La realidad es que es extremadamente raro que alguien configure el sistema de caché de Smarty para usar MySQL en vez de ficheros, ya que el primero tiene un rendimiento bastante pobre, por lo que eliminar esta porción de código es bastante seguro.

Si tuviésemos muchas instalaciones de PrestaShop, podríamos hacer una búsqueda y eliminación del código de forma masiva con el siguiente comando ejecutado vía SSH:

find RUTA -type f -name smarty.config.inc.php | xargs sed -i -e '/.*PS_SMARTY_CACHING_TYPE.*/,+3d'