Saltar al contenido

El blog de Skatox Entradas

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

Documental sobre la historia de Vite

La gente de CultRepo ha sacado un documental sobre la historia de Vite, el software de construcción de Javascript más popular en los últimos años. Me sorprende la realización de este documental porque, a pesar de que Vite es muy usado actualmente, generalmente los documentales que hacen son de tecnologías más viejas y muy estables en el mercado.

La historia de Vite

Vite es un proyecto desarrollado por el mismo creador de Vue.js: Evan You. Así que podrás ver la razón de por qué y cómo nació el proyecto por parte de su mismo creador. Adicionalmente, podrás ver a otros miembros iniciales del proyecto e influencers hablando sobre cómo fue la adopción de esta tecnología.

No quiero comentar mucho porque la historia es realmente breve; además, pienso que deberías verla. Es inspiradora, concreta y muy reciente.

A continuación puedes ver el documenta sobre la historia de Vite:

Vite: The Documentary

Recuerda que, si quieres ver más documentales de este tipo, no dudes en ver mi sección de documentales informáticos en mi blog.

¿Ya estás usando o migrando a Vite en tus proyectos de Javascript? Comenta la razón de ello y comparte este post para llegar a más personas.

Happy Coding o, en este caso, Happy Tooling!

Deja un comentario

KIM6: Cómo un pequeño proyecto de software libre terminó reuniendo a desarrolladores del mundo

Hace unas semanas comenté por aquí uno de mis proyectos de software libre: KIM6, un menú desplegable para Plasma 6 que permite gestionar la resolución y calidad de tus fotos directamente desde el gestor de archivos. Algo sencillo, útil y que nació como un fork personal… pero la historia dio un giro inesperado.

Resulta que, casi al mismo tiempo que yo hice mi fork, otra persona también creó uno. Me escribió para fusionarlos, porque no tenía sentido trabajar en paralelo cuando podíamos unir esfuerzos. Y obviamente acepté. Pero ahí no terminó la cosa.

Hace tres días apareció otro desarrollador con 20 pull requests listos: mejoras en comandos, en seguridad y en varios rincones del código que ni había considerado aún. Fue como abrir la puerta de la casa y ver que alguien ya pintó la sala, arregló la cocina y dejó el café servido.

KIM6 en Plasma 6
KIM6 en Plasma 6

KIM6 ahora tiene su propia organización en Github

Una de las primeras decisiones del coautor fue mover el proyecto a su propia organización:
https://github.com/KIM-6/kim6. Y me encantó. Cuando un proyecto deja de pertenecer a una sola persona y pasa a una organización, envía un mensaje claro: este código es de la comunidad y para la comunidad. Eso inspira a más gente a colaborar, revisar, proponer y mejorar.

Por mi parte, actualicé el PKGBUILD de KIM6 para Archlinux para que apunte al nuevo repo, hice un nuevo sistema de construcción que evita instalar qtpaths6 (que en Archlinux no se incluye en la lista de binarios por defecto). Archivé el antiguo repositorio, actualicé la página del proyecto para reflejar las nuevas URL, aprobé los PRs, agregué traducción al italiano, etc.

Fue un buen fin de semana dedicado al software libre.

El poder del software libre

Lo que más me sorprendió de todo este proceso fue algo muy simple pero poderoso: tres personas de diferentes países, culturas y zonas horarias, que no nos conocemos entre nosotros, trabajando en equipo para mejorar un proyecto que nos resolvía un problema común. Nada de reuniones, burocracia o workflow corporativo; simplemente código, ideas y colaboración.

Y lo mejor de todo es que las contribuciones de otros me hizo aprender muchas cosas. Que difícilmente hubiera aprendido en una conferencia, un libro o incluso usando IA. Hay algo mágico en leer código de otras personas, entender por qué hicieron las cosas de cierta manera y pensar cómo integrarlo al proyecto.

Por eso digo que la mejor forma de aprender sigue siendo la misma de siempre:
escribir código, leer código y mejorar código.

Happy Coding!

KIM6 creció más de lo que imaginé gracias a manos que nunca he estrechado en persona. Y eso es lo que hace grande al software libre: gente creando cosas juntos, sin pedir nada a cambio excepto que funcione bien para todos.

Si quieres probar KIM6 o aportar, pásate por el repo. Y si estás dudando en liberar tu propio proyecto… hazlo. Nunca sabes quién se te va a unir.

Happy coding! 💻✨

Deja un comentario

«Every ‘Byte’ You Take» cover musical de SuSE

En esta edición de música geek tenemos un cover de la famosa canción de The Police – Every Breath You Take (que, por cierto, pude escuchar en vivo por el mismo Sting), pero llamada Every Byte You Take para darle un toque informático.

De qué va Every Byte You Take

Este cover de la canción es genial porque la versión original trata sobre un acosador que sigue cada paso de su amor. En la canción de SuSE, cambian la letra para mostrar que monitorean cada byte que envías y recibes y que la compañía estará ahí para ayudarte.

En fin, son varios los detalles así que debes ver el vídeo a continuación y disfruta de esta gran canción:

Every Byte You Take - A SUSE Music Parody

Me encanta cuando las empresas tech se atreven a hacer este tipo de guiños, porque siguen hablando de observabilidad, seguridad y soporte… pero sin sonar corporativas. Y en este caso el chiste funciona porque todos conocemos la canción original y entendemos la referencia.

Más marcas deberían hacer contenido así: técnico, pero con humor y música.

Deja un comentario