Vulnerabilidad en los plugins de cache WordPress

En Noticias, Webmasters por

Recientemente se ha descubierto una grave vulnerabilidad en los plugins de cache WordPress entre ellos los famosos WP Super Cache (vulnerables la version 1.2 e inferiores) y W3 Total Cache (vulnerables la versión 0.9.2.8 e inferiores).

Si estás leyendo este artículo y tienes una versión vulnerable de los plugins de cache WordPress actualízalo inmediatamente!

Vulnerabilidad en plugins de cache WordPress

¿Cómo funciona la vulnerabilidad en los plugins de cache WordPress?

Para empezar hay que comentar que se trata de una vulnerabilidad del tipo “Remote Code Execution Vulnerability” o dicho de otra forma que permite ejecución de código en nuestro servidor, lo cual abre las puertas a los hackers para que accedan a nuestro servidor y roben información o hagan algún destrozo.

El fallo viene generado porque los plugins de cache permiten establecer partes del código cómo dinámicos para no ser cacheados, en todos ellos se usa la función mfunc que permite incluir código PHP y que no sea cacheado pero sí ejecutado, entonces se introduce el código PHP en un comentario y este es ejecutado, por ejemplo:

<!–mfunc echo PHP_VERSION; –><!–/mfunc–>

En WP Super Cache además existían otras dos funciones para marcar el contenido cómo dinámico y poder ejecutar código que eran dynamic-cached-content y mclude, cuyo uso es:

<!--dynamic-cached-content--><?php
include_once( ABSPATH . '/scripts/adverts.php' );
print_sidebar_ad();
do_more_stuff();
?><!--
include_once( ABSPATH . '/scripts/adverts.php' );
print_sidebar_ad();
do_more_stuff();
--><!--/dynamic-cached-content-->

Este código hace un include del archivo adverts.php y ejecuta las funciones print_sidebar_ad() y do_more_stuff().

<!--mclude file.php-->
<?php include_once( ABSPATH . 'file.php' ); ?>
<!--/mclude-->

Este código hace un include del archivo file.php.

¿Cómo protegerse de la vulnerabilidad en los plugins de cache WordPress?

Lo primero es actualizar el plugin de cache a su última versión de forma inmediata. Las versiones actualizadas traen las funciones vulnerables que permiten inyección código totalmente desactivadas, por lo que este paso debería ser suficiente.

Para comprobar si nuestro blog es vulnerable podemos introducir en un comentario:

<!–mfunc echo PHP_VERSION; –><!–/mfunc–>

Si tras publicar el comentario vemos que se muestra la versión de PHP, nuestro blog es vulnerable.

Resumiendo mantén actualizados los plugins y no tendrás problemas.