Saltar al contenido

Etiqueta: plugins

Cómo corregí una vulnerabilidad en mi plugin JS Archive List tras un reporte de WordFence

JS Archive List es un plugin que creé hace más de una década para mostrar archivos de entradas de WordPress en un formato más limpio y dinámico usando JavaScript (inicialmente era con JQuery). Pues hace unas semanas recibí un correo de un grupo de hackers y del equipo de Wordfence (correos separados) informándome de una vulnerabilidad en JS Archive List para realizar inyecciones SQL.

Para quienes no lo conocen: JS Archive List toma los años y meses archivados en la base de datos y permite generar un widget o listado que se navega sin recargar la página. Es sencillo, útil y, como muchas herramientas viejas, tenía una parte interna que había quedado congelada en el tiempo, de hecho ese código viene del fork original en el que está basado.

Cómo se descubrió la vulnerabilidad en JS Archive List

Hace unas semanas recibí un mensaje desde la plataforma de investigadores de WordFence. Ellos tienen un programa privado donde reportan vulnerabilidades a desarrolladores antes de hacerlas públicas, y me dieron un plazo de tres semanas para liberar un fix.

El problema estaba en algo básico, la forma de generar la consulta SQL. El plugin recibía un año a través de la API o URL para filtrar los archivos, pero ese valor venía directamente de la base de datos sin sanitización y se insertaba en la query. Resultado: era posible modificar la consulta enviando un año inválido, lo que abría la puerta a inyecciones SQL.

Nada glamuroso ni nada complicado. Pero sí peligroso.

Actualizando una década de código para usar $wpdb

El fix de la vulnerabilidad en JS Archive List estaba claro: había que actualizar una porción del plugin que llevaba más de diez años igual, adaptarla a las funciones seguras de $wpdb y garantizar que todas las consultas pasaran por sus métodos de preparación. Esto no solo eliminó la inyección SQL, sino que dejó la base para que futuras mejoras del plugin también sigan buenas prácticas. Y claro: ahora JS Archive List es más seguro que nunca. Debo admitir que solo en la última semana del plazo pude sentarme a corregirlo (cosas de la vida), pero una vez entré en modo mantenimiento salió bastante fluido.

Luego tuve que entrar al sistema de WordFence y anunciar que el problema estaba corregido en la última versión. Tanto el grupo de hackers como el equipo de WordFence revisaron y confirmaron que todo está bien para cerrar la alerta en el sistema mencionado.

Reflexión final

Este fue un recordatorio amable de que mantener software libre significa estar dispuesto a revisarlo, actualizarlo y cuidarlo. Si usas JS Archive List, te recomiendo actualizar a la última versión. Y si alguna vez te toca lidiar con reportes de seguridad, tómalos como una oportunidad para pulir tu código y ayudar a hacer Internet un lugar mas seguro para todos.

¿Te ha pasado algo similar? ¿Descubriste vulnerabilidades en tu propio software?
Me encantaría leer tus experiencias en los comentarios.

Deja un comentario

Plugins recomendados para Firefox

Una de la cosas mas atractivas de Firefox son los complementos que ofrece para extender las funcionalidades del navegador, se qué Google Chrome también ahora ofrece extensiones pero (para el momento de escribir este artí­culo) no están tan maduras como las de Firefox por ello no he migrado a ese navegador porque no ofrece lo que necesito.

Aquí­ va una lista de los complementos que uso en Firefox diariamente:

  • disableMenu permite ocultar automáticamente la barra de menú para ahorrar espacio y dar mejor apariencia.
  • Adblock Plus: oculta toda la publicidad de las páginas que visites.
  • Delicious Bookmarks: complemento oficial para usar el servicio https://del.icio.us/ y tener en la nube tus enlaces favoritos.
  • Down them all: es un acelerador de descargas integrado a Firefox.
  • Firebug: excelente complemento para analizar los elementos de una página web, debugger de Javascript, editor de CSS, etc. Totalmente recomendado a los desarrolladores web.
  • Fission: mueve la barra de progreso a la caja de direcciones (donde se introduce el URL) para dar mejor apariencia y reducir el espacio.
  • Greasemonkey: permite ejecutar script que alteran las páginas antes de visitarlas, para agregarle funcionalidades extra o mejor la calidad de la misma.
  • HTML Validator: validador del estándar W3C para XHTML y HTML 4.0. Totalmente recomendado a los desarrolladores web.
  • Web Developer: Totalmente recomendado a los desarrolladores web, posee todas las herramientas necesarias para desarrollar y probar una página web.
  • Weave Sync: el servicio de Mozilla para sincronizar las pestañas, contraseñas, formularios, url, historial sin importar en que computadora estes. Ya este servicio está integrado en Firefox 4.

Y el tema de Firefox que utilizo es Strata, le da una apariencia mas Firefox 4.0, además en Windows agrega transparencias compatibles con Aero al utilizar la extensión StrataBuddy

Firefox bajo GNU/Linux con KDE 4
Firefox bajo GNU/Linux con KDE 4

Firefox usando Windows Vista
Firefox usando Windows Vista

Bueno prueben las extensiones mas llamativas y recomienden alguna que pudiese gustarme.

Edición al 03/08/2019: debido a que Firefox movió sus extensiones a WebExtensión, la mayoría de estos complementos no están disponibles.

1 comentario