Solución vulnerabilidad WordPress publicada el 26 abril 15

Categorías: WordPress
Solución vulnerabilidad WordPress publicada el 26 abril 15

El 26 de abril de 2015 se ha descubierto una vulnerabilidad en la gestión de comentarios de WordPress mediante el cual se pueden cambiar claves de administración, inyectar código en temas y plugins con un solo comentario en una web bajo WordPress.

Esta vulnerabilidad la ha publicado Klikki y afecta a todas las versiones actuales de WordPress (4.2, 4.1.3 y 3.9.3).

Básicamente se trata de inyectar javascript dentro de comentarios de WordPress. El código javascript se ejecuta cuando un comentario se visualiza. Si un administrador logueado visualiza un comentario con esta inyección de código, permite que se ejecute cualquier codigo en el servidor a través del editor de plugins y temas. El atacante también podría cambiar la contraseña del administrador, crear nuevas cuentas de administración o hacer cualquier cosa que un administrador de WorPress pueda hacer.

[ ACTUALIZACIÓN 02 – 27/ABR/2014 ] Todos los WordPress que tengan instalado el plugin antispam AKISMET no son vulnerables. Esto es importante apuntarlo por el inmenso número de WordPress que lo tienen funcionando. Más información aquí. [ /ACTUALIZACIÓN ]

La solución de los que han descubierto la vulnerabilidad

Klikki propone una solución drástica:

¿Cómo deshabilitar los comentarios de WordPress?

Una forma rápida de desactivar los comenarios de WordPress es instalando el plugin DISABLE COMMENTS, que podéis econtrar aquí.

Solución a la vulnerabilidad «WordPress 4.2 Stored XSS»

Para nosotros la mejor solución a esta vulnerabilidad es filtrar el código HTML de los comentarios, añadiendo el siguiente código al final del archivo functions.php del tema activo:

// This will occur when the comment is posted
function plc_comment_post( $incoming_comment ) {
	// convert everything in a comment to display literally
	$incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
	// the one exception is single quotes, which cannot be #039; because WordPress marks it as spam
	$incoming_comment['comment_content'] = str_replace( "'", ''', $incoming_comment['comment_content'] );
	return( $incoming_comment );
}

// This will occur before a comment is displayed
function plc_comment_display( $comment_to_display ) {
	// Put the single quotes back in
	$comment_to_display = str_replace( ''', "'", $comment_to_display );
	return $comment_to_display;
}

Este código lo llevamos utilizando desde hace tiempo para filtrar posibles inyecciones de código en los comentarios y es perfecto para evitar esta vulnerabilidad.

OJO: Este código lo que hace es convertir el texto de los comentarios a texto plano, eliminando cualquier etiqueta HTML, incluyendo enlaces y negritas.

Para los que no queráis hacer cambios en el archivo functions.php este código también está disponible en formato de plugin aquí.

Originalmente fue publicado por WP Beginner: www.wpbeginner.com/wp-tutorials/how-to-disable-html-in-wordpress-comments/

Esta es una buena forma de evitar esta vulnerabilidad de inyección de código.

No obstante enseguida que haya una versión nueva de WordPress hay que actualizar.

[ ACTUALIZACIÓN 01 – 27/ABR/2014 ] Ya hay actualizaciones para las distintas versiones de WordPress que previenen esta vulnerabilidad: Versiones 4.2.1, 4.1.4 y 3.9.4. Es muy recomendable instalarlas enseguida. Más información aquí. [ /ACTUALIZACIÓN ]

Créditos imágenes: Shutterstock – solarseven

Salir de la versión móvil