Brecha de seguridad en módulo Visual Composer + SOLUCIÓN

Visual Composer: Page Builder for Prestashop es uno de los módulos más usado para la creación de contenido dinámico en tiendas Prestashop. De hecho, además de poder adquirirse individualmente, también viene incluido en incontables temas para la plataforma. Más allá de la utilidad comprobada y buenas opiniones que tiene este módulo, no se vende directamente en Prestashop Addons. ¿Por qué un módulo tan famoso no está en la plataforma oficial de módulos para Prestashop? Pues hemos encontrado un BUG DE SEGURIDAD importante, y quizás elementos como este pudiera ser una de las causas.

Primeramente aclaremos, para que no haya confusión con su título, que se trata del módulo cuya carpeta se llama “jscomposer”. Este módulo tiene una librería propia para la gestión de imágenes (subida, renombrado, borrado, creación de carpetas, etc). Dicha librería es similar a la usada por Prestashop para realizar la misma función, con una diferencia fundamental: la librería del jscomposer NO TIENE NINGUNA VALIDACIÓN DE SEGURIDAD. En otras palabras, cualquiera desde cualquier parte de internet, sin estar siquiera autenticado en el front o backoffice de la tienda puede acceder al contenido de las imágenes y manipularlas.

¿Aún no lo crees? ¿Cómo puedes saber si este hueco de seguridad está afectando tu tienda? Es fácil de comprobar. Si al entrar a esta ruta de tu tienda puedes ver el gestor de imágenes, entonces tu tienda puede estar en problemas:

https://urldemitienda.com/modules/jscomposer/views/dialog.php

Y lo peor de todo es que el módulo ni siquiera tiene que estar activo en la tienda. Con que exista el archivo es suficiente.

¿Por qué tanto alboroto por unos cuantos archivos de imágenes? Bueno, más allá de que cualquier hacker puede eliminar tus imágenes subidas al módulo, existe un problema mucho peor. Hay bots que están escaneando en la web en búsqueda de vulnerabilidades conocidas en sitios web. Y en el caso de Prestashop ya hemos conocido de casos donde algún hacker “inteligente” tiene un bots que sube un script PHP a la tienda quitándole antes la extensión .php. Para el gestor de imágenes esto es como subir una nueva carpeta, luego renombra el archivo y le pone la extensión .php correctamente. Y básicamente, si logras subir un archivo PHP externo a una tienda puedes hacer lo que quieras con la tienda, desde borrar todos los archivos y BD hasta secuestrarlos encriptándolos y luego pedir un rescate para restaurarlos.

Pero más allá del susto… ¿Cómo resuelvo este problemón?

Como les comentamos antes, Prestashop usa librerías similares para el manejo y carga de imágenes en su backoffice, con una diferencia fundamental: Prestashop si hizo las validaciones de seguridad correspondientes antes de mostrar el contenido del gestor de imágenes. La solución está en introducir esas mismas validaciones al gestor de imágenes del jscomposer.

¿Cómo lo hago?

  1. Busca el archivo /modules/jscomposer/views/config/config.php y edítalo.

  2. Al inicio del archivo debo encontrar un código fuente similar a este:

  3. Debo insertar el siguiente código entre las líneas 6 y 7:
    if (!isset(Context::getContext()->employee) || !Context::getContext()->employee->isLoggedBack()) {
        die('forbiden');
    }
  4. El código fuente finalmente debería quedar así:

Y eso sería todo. Fin de mis preocupaciones.

¿Qué hace básicamente este código que hemos introducido? Verifica que exista un empleado autenticado antes de mostrar el gestor de imágenes. Un empleado solamente se autentica en el backoffice, por tanto, estamos obligando a que el gestor de imágenes solamente se cargue desde el backoffice y solamente si existe un empleado autenticado en ese momento. Para el resto de los intrusos y hackers que intenten entrar a nuestra tienda por esta vía, sólo encontrarán un mensaje de “forbiden”.

Ojalá que tu tienda no tenga este problema, pero si es así, la solución más rápida ya está en tus manos. Solo resta aplicar y seguir vendiendo con seguridad ;)

Compartir esta publicación

Comentarios