Seguro que ya nos conoces como esos bloggers que hablan sobre WordPress y que siempre dan la lata con el tema de actualizar, pero no os podéis imaginar lo importante que esto puede llegar a ser, y para muestra un botón.

En esta semana hemos conocido que se ha detectado una grave vulnerabilidad en el popular plugin Easy WP SMTP. Ya os hemos hablado en otras ocasiones de este plugin. Easy WP SMTP cuenta con una base de usuarios con más de 300.000 instalaciones activas y nos permite configurar conexiones SMTP para el correo electrónico saliente. Dicha vulnerabilidad está presente en la última versión del plugin, la 1.3.9. Por suerte, el equipo de desarrollo ya han lanzado un parche para solucionar esta vulnerabilidad. En este artículo veremos la vulnerabilidad, cómo los atacantes están abusando de ella y qué deberías hacer si crees que estás en riesgo.

Para empezar debes saber que la vulnerabilidad reportada sigue bajo amenaza activa, es decir, los hackers aún siguen accediendo a los sitios webs que cuentan con este plugin sin actualizar. ¿En qué nos repercute esto como administradores de un sitio web desarrollado con WordPress? Pues según hemos podido saber a través de Wordfence, los atacantes pueden establecer un control masivo de los sitios afectados. Cuando hablamos de control total, hablamos de que el hacker puede disponer de nuestro sitio web para lo que quiera.

La raiz del problema se encuentra en la funcionalidad de Importar/Exportar que añadieron en la versión 1.3.9 del plugin. El culpable es este código del hook admin_init, el cual ejecutan scripts del admin como admin-ajax.php o admin-post.php.

$is_import_settings = filter_input( INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT );
 if ( $is_import_settings ) {
   $err_msg = __( 'Error occurred during settings import', 'easy-wp-smtp' );
   if ( empty( $_FILES[ 'swpsmtp_import_settings_file' ] ) ) {
       echo $err_msg;
       wp_die();
 }
 $in_raw = file_get_contents( $_FILES[ 'swpsmtp_import_settings_file' ][ 'tmp_name' ] );
 try {
     $in = unserialize( $in_raw );
     if ( empty( $in[ 'data' ] ) ) {
           echo $err_msg;
           wp_die();
     }
     if ( empty( $in[ 'checksum' ] ) ) {
          echo $err_msg;
           wp_die();
     }
     if ( md5( $in[ 'data' ] ) !== $in[ 'checksum' ] ) {
           echo $err_msg;
           wp_die();
     }
     $data = unserialize( $in[ 'data' ] );
     foreach ( $data as $key => $value ) {
           update_option( $key, $value );
     }
     set_transient( 'easy_wp_smtp_settings_import_success', true, 60 * 60 );
     $url = admin_url() . 'options-general.php?page=swpsmtp_settings';
     wp_safe_redirect( $url );
     exit;

Cuando este hook se ejecuta, el plugin comprueba si existe $_POST[‘swpsmtp_import_settings’]. Si el valor de este parámetro es igual a 1, se supone que el plugin está realizando una importación y comprueba si existe un fichero subido en $_FILES[ ‘swpsmtp_import_settings_file’ ]. El contenido del fichero subido está sin validar y update_option se ejecuta en cada par clave/valor dado.

A raiz de esto, me han extrañado dos cosas. La más importante es que no llega a realizarse ninguna comprobación del rol del usuario para llevar a cabo este proceso, por lo que el atacante no necesita ningún permiso especial para explotar esta vulnerabilidad. Por otro lado, cualquier opción pasada por el usuario llega a actualizar la BD. Esto puede dar pie a que un hacker modifique los valores de la tabla wp_options de la base de datos de tu WordPress. Justo la actividad que los atacantes están llevando a cabo en estos momentos en los sitios web afectados.

¿Cómo saber si mi sitio está afectado y cómo proceder?

Como he dicho antes, los desarrolladores del plugin ya son conscientes de la vulnerabilidad y han lanzado un parche que la corrige, la versión 1.3.9.1. Este parche basicamente evita el acceso no autorizado al script de importación. Por lo tanto, si sospechas que esta vulnerabilidad ha afectado a tu sitio web, como si no, te recomiendo encarecidamente que actualices el plugin lo antes posible. Aunque tu WordPress actualmente no muestre sintomas de haber sufrido un ataque, es posible que lo sufra de cara a futuro, así que lo mejor es actualizar ya.

Si notas que tu WordPress funciona raro o has visto alguno de los puntos que mencionamos a continuación, ponte en contacto con un profesional que pueda ayudarte en estos temas.

Puntos que pueden indicar que tu sitio web ha sido afectado por la vulnerabilidad del plugin Easy WP SMTP.

  • Tráfico procedente de las siguientes IPs: 185.212.131.45, 185.212.128.22, 185.212.131.46 y 86.109.170.200.
  • Cuentas de administrador desconocidas.
  • Tags de <script> inyectados en la primera línea del archivo index.php

Y hasta aquí nuestro artículo sobre la vulnerabilidad grave en el popular plugin Easy WP SMTP. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales.