Alertas de seguridad

Vulnerabilidad XSRF en PhpMyAdmin

¿En qué consiste la vulnerabilidad XSRF en PhpMyAdmin?

PhpMyAdmin es una herramienta de software gratuita escrita en PHP, destinada a manejar administración de MySQL a través de la web. PhpMyAdmin admite una amplia gama de operaciones en MySQL y MariaDB.

El investigador Manuel García Cárdenas descubrió el CVE-2019-12922, relacionado con una vulnerabilidad de falsificación de solicitudes entre sitios (XSRF – Cross Site Request Forgery), en PhpMyAdmin. Esto indica que un atacante puede realizar un ataque XSRF contra un usuario de PhpMyAdmin que elimina cualquier servidor en la página.

XSRF pertenece a la categoría de inyección, donde se obliga a que un usuario final realice acciones no deseadas en el sitio donde actualmente se encuentra autenticado, es decir este tipo de ataque está diseñado para realizar ataques al cambio de estado, por ejemplo, realizar una transferencia de fondos bancarios, modificar información confidencial como el correo electrónico, incluso si el usuario final posee privilegios de administrador, puede comprometerse el aplicativo web.

Este ataque está destinado a engañar al usuario final, de tal modo que envíe una petición maliciosa sin ser autorizada, tomando las credenciales y privilegios de la víctima para realizar acciones no deseadas usando el nombre de usuario de la víctima.  El atacante puede crear fácilmente un hipervínculo falso que contiene la solicitud que quiere ejecutar en nombre del usuario, de esta manera es posible un ataque XSRF, debido al uso incorrecto del método HTTP. A continuación, se muestra la prueba de concepto:



Acciones recomendadas para mitigar la vulnerabilidad XSRF en PhpMyAdmin

Actualmente el desarrollador de la plataforma phpMyAdmin no ha publicado ningún parche que mitigue esta vulnerabilidad, sin embargo, se sugiere implementar en cada petición la validación de la variable token, como ya ha hecho en otras versiones de PhpMyAdmin.

La tecnología web token, es una cadena de caracteres aleatorio que se comparte entre el usuario y la página web legítima a través de una cookie, donde se garantiza que la petición solo está siendo ejecutada por el usuario y no en lugar de un atacante. Esto quiere decir, que se asigna un identificador único a la sesión. También es recomendable el uso del modo en privado en el navegador, para que no se cargue el caché del navegador y la información privada del usuario. 

Es importante no almacenar credenciales en el navegador o usar diferentes navegadores web según la criticidad de las operaciones o información sensible del usuario, además del uso de complementos que imposibilitan la ejecución de scripts o que preguntan cuándo se va a ejecutar un script. Como se puede apreciar la prevención de este tipo de ataques puede ser abordado a nivel de desarrollo y con las medidas que tome el usuario.