Descubierto agujero de seguridad en PrestaShop relacionado con PHPUnit

Los creadores de PrestaShop siempre han presumido de tener un software de tiendas online muy seguro. Pero, por mucho cuidado que tengas, siempre se puede colar algo.

Precisamente ayer enviaron un aviso a sus usuarios avisando de un posible agujero de seguridad. Este problema no está relacionado directamente con PrestaShop sino que viene de una vieja y conocida vulnerabilidad de PHPUnit.

Y claro, siempre que se encuentra un agujero de seguridad hay algún majete que crea una herramienta para aprovecharse. En este caso han creado una herramienta llamada XsamXadoo Bot. Ojo, que no solo puede atacar a tiendas PrestaShop sino a cualquier web que haga uso de PHPUnit (y lo tenga subido en producción).

¿Qué me puede pasar si atacan mi tienda?

Pues parece ser que de todo; desde robo de datos de clientes, que te añadan enlaces a sitios de «dudosa reputación», que borren artículos o añadan nuevos, etc.

¿Y qué es eso de PHPUnit?

PHPUnit es una herramienta usada en proyectos de PHP que permite hacer test automatizados. Los test automatizados le permiten a un desarrollador crear una aplicación y probar que funciona correctamente de forma automatizada con el consiguiente ahorro de esfuerzo.

PHPUnit ayuda a crear un software de calidad pero, ironías de la vida, es responsable de este agujero de seguridad. Pero tampoco hay que angustiarse, esta vulnerabilidad es bastante vieja (del año 2017) y ya está corregida.

¿Y por qué tengo PHPUnit en mi tienda si no hago desarrollos?

Pues porque a la gente que nos dedicamos al desarrollo a veces se nos cuelan estos fallitos. PHPUnit no debería estar en una versión «de producción» pero, oye, nadie es perfecto.

¿Qué versiones de PHPUnit están afectadas?

Este problema parece que afecta a las versiones de PHPUnit anteriores a la 4.8.28 y las de la serie 5.x anteriores a la 5.6.3.

Según la gente de PrestaShop solo las versiones 7.5.19 y 8.5.1 de PHPUnit corrigen el problema.

¿Cómo puedo saber si mi tienda es vulnerable?

Echa un vistazo en los ficheros de tu tienda y busca, dentro de la carpeta «vendor/» si tienes una carpeta llamada phpunit.

También los módulos que tengas instalados podrían estar afectados. Deberías mirar en los módulos instalador a ver si dentro de su carpeta «vendor/» hay alguna llamada «phpunit».

Módulos afectados

Hay una serie de módulos que se sabe seguro que están afectados (por incluir PHPUnit):

  • 1-Click Upgrade (autoupgrade): versiones 4.0 beta y anteriores.
  • Cart Abandonment Pro (pscartabandonmentpro): versiones 2.0.1~2.0.2.
  • Faceted Search (ps_facetedsearch): versiones 2.2.1~3.0.0.
  • Merchant Expertise (gamification): versiones 2.1.0 y posteriores.
  • PrestaShop Checkout (ps_checkout): versiones 1.0.8~1.0.9.

Ya existen versiones sin PHPUnit y se recomienda actualizar.

¿Cómo encontrar y borrar las carpetas PHPUnit de forma rápida?

Encontrar todas las posibles carpetas que incluyan PHPUnit y borrarlas puede ser bastante tedioso. Si tienes acceso a consola (con Linux) puedes ejecutar este comando para borrar todas de golpe (hazlo desde la carpeta raíz de tu tienda):

find . -type d -name "phpunit" -exec rm -rf {} \;

¿Cómo puedo saber si mi tienda está infectada?

Que tu tienda sea vulnerable no quiere decir que esté afectada. Para asegurarte si han usado ya el dichoso XsamXadoo Bot contra tu tienda tienes, al menos, dos opciones:

Busca alguno de estos ficheros

Parece ser que los atacantes «cuelan» una serie de ficheros que usarán en los servidores atacados. Busca alguno de éstos:

Fichero
XsamXadoo_Bot.php
XsamXadoo_deface.php
0x666.php
f.php

Busca archivos de la tienda modificados

El atacante también podría aprovechar para modificar alguno de los archivos de la tienda. Busca archivos que hayan sido modificados recientemente. Para buscarlos puedes entrar en el gestor de tu tienda y mirar en:

Parámetros avanzados > Información (en la sección «Listado de archivos modificados»)

¡Socorroooo! ¡Me han infectado! ¿Qué hago?

Bueno, lo primero calma. Luego busca a alguien que te pueda ayudar a comprobar el alcance del problema. Yo mismo te puedo echar una manita (pero, ojo, que no trabajo gratis).

¿Cómo puedo evitar esta vulnerabilidad? ¿Puedo/debo eliminar este PHPUnit de marras?

Para evitar que tu tienda esté expuesta elimina todas las carpetas PHPUnit de tu servidor. No necesitas estas carpetas para que funcione PrestaShop y se pueden borrar sin mieno de estropear la tienda.

Me siento solo, dime algo...