Vulnerabilidad en timthumb.php afecta millones de blogs con WordPress

Recientemente Mark Maunder, CEO de Feedjit descubrió una vulnerabilidad en la librería timthumb.php, que podría permitir a un usuario malintencionado, ejecutar código PHP de manera arbitraria.


Gracias a timthumb.php es posible cambiarle de tamaño a las imágenes de forma automática. Esta utilidad presente en millones de plantillas de WordPress, utiliza un directorio que es accesible vía web, para alojar  las imágenes resultantes del proceso de obtener una imagen y redimensionarla.

Por defecto, timthumb.php (también nombrado como thumb.php en ciertas plantillas) permite cargar y redimensionar imágenes remotamente desde los siguientes dominios:

$allowedSites = array (
	'flickr.com',
	'picasa.com',
	'blogger.com',
	'wordpress.com',
	'img.youtube.com',
	'upload.wikimedia.org',
	'photobucket.com',
);

Generalmente el directorio en cuestión es nombrado como "cache". El problema radica en que timthumb.php no comprueba correctamente los dominios desde donde es posible recibir una imagen. En consecuencia y dado que el directorio "cache" puede ser accesible desde  el navegador web, pues un atacante podría cargar y ejecutar código PHP arbitrario y hacer de las suyas con solo especificar algunos de los dominios del array anterior en la URL; por ejemplo:

http://blogger.com.dominio.com/badscript.php

De esta manera, timthumb.php lo alojará el fichero badscript.php dentro del directorio de caché en el sitio de destino, por ejemplo:

http://tudominio.com/wp-content/themes/tuplantilla/cache/badscript.php

Así las cosas, desde el navegador cualquier código que haya en el fichero badscript.php será ejecutado por el servidor web del usuario víctima. Tal cual, lo explica Maunder quien descubrió la vulnerabilidad cuando realizaba una auditoria de un ataque ejecutado en su propio blog.

Plantillas de WoothemesElegantthemesThemeforesttemplatic, entre miles de otros proveedores, son vulnerables.

Índice

Instrucciones para reparar la vulnerabilidad y mitigar los riesgos.

Si utilizas plantillas de Woothemes y tienes una cuenta en este sitio, desde ya puedes descargar la versión actualizada de tu theme, tomar el thumb.php vulnerable y reemplazarlo por el nuevo. En otro caso, la recomendación es descargar la versión actualizada de timthumb.php (la 1.33) y a partir de este actualizar el timthumb.php de tu plantilla.

Adicionalmente, en la línea 27 del script actualizado, eliminar todos los dominios permitidos del array ($allowedSites = array();)

Del mismo modo, recomendamos asegurarse de que la siguiente linea se haya establecido como FALSE:

define ('ALLOW_EXTERNAL', FALSE);           // allow external website (override security precaution - not advised!)

Esta vulnerabilidad es considerada como critica y al hacer una búsqueda en Google, obtenemos 40 millones de resultados relacionados con el script.

WordThumb, la versión segura de timthumb.php

Hace unas horas, Maunder, ha publicado una tercera actualización donde da a conocer detalles de un nuevo proyecto llamado Wordthumb, que promete ser la versión segura de lo que conocemos como timthumb.php y es el resultado de una reescritura completa de este script, sin afectar la compatibilidad del mismo. El único código que sigue siendo original de timthumb, son las rutinas de procesamiento de imágenes.  Todo lo demás ha sido reconstruido desde cero.

Las instrucciones básicas sobre como usar este código se encuentra disponible en Google Code. Dentro de la mejoras se destacan aspectos como la utilización de un directorio que no es accesible vía web para el almacenamiento de las imágenes que son redimensionadas y además como medida de seguridad extra, todos los archivos almacenados en caché, tiene una extensión txt, entre otras mejoras.

Para más detalles sobre Wordthumb te invitamos a leer el anuncio de Maunder: A secure rewrite of timthumb.php as Wordthumb

Artículo escrito por Hans Steffens (Hans Code) para La Comunidad DragonJAR

Subir