Si tienes un sitio WordPress con el plugin Ultimate Members instalado, asegúrate de que lo has actualizado a la última versión.
Durante el fin de semana, el creador del plugin publicó la versión 2.6.7, que se supone que parchea un grave agujero de seguridad, descrito por el usuario @softwaregeek en el sitio de soporte de WordPress de la siguiente manera:
Una vulnerabilidad crítica en el plugin (CVE-2023-3460) permite a un atacante no autentificado registrarse como administrador y tomar el control total del sitio web. El problema se produce en el formulario de registro del plugin. En este formulario es posible cambiar ciertos valores de la cuenta a registrar. Esto incluye el valor wp_capabilities, que determina el rol del usuario en el sitio web.
El plugin no permite que los usuarios introduzcan este valor, pero este filtro resulta fácil de eludir, por lo que es posible editar wp_capabilities y convertirse en administrador.
En otras palabras, al crear o gestionar cuentas online, el formulario web del lado del cliente que se presenta a los usuarios no les permite registrarse como administradores.
Pero el software back-end no detecta ni bloquea de forma fiable a los usuarios deshonestos que envían deliberadamente solicitudes maliciosas.
El plugin promete “facilidad absoluta”
El software Ultimate Member está pensado para ayudar a los sitios de WordPress a ofrecer varios niveles de acceso a los usuarios, presentándose como el “mejor plugin de perfiles de usuario y membresías para WordPress”. En su publicidad afirman:
El plugin de perfil de usuario y afiliación nº 1 para WordPress. El plugin facilita que los usuarios se registren y se conviertan en miembros de tu sitio web. El plugin permite añadir bonitos perfiles de usuario a tu sitio y es perfecto para crear comunidades online avanzadas y sitios de afiliación. Ligero y muy sencillo, Ultimate Member te permitirá crear casi cualquier tipo de sitio en el que los usuarios puedan unirse y convertirse en miembros con absoluta facilidad.
Por desgracia, los programadores no parecen muy confiados en su propia capacidad para combinar la “absoluta facilidad” de uso del plugin con una seguridad sólida.
En una respuesta oficial al anterior informe de seguridad de @softwaregeek, la empresa describió así su proceso de corrección de errores [texto citado sic]:
Estamos trabajando en las correcciones relacionadas con esta vulnerabilidad desde la versión 2.6.3 cuando recibimos un informe de uno de nuestros clientes. Las versiones 2.6.4, 2.6.5, 2.6.6 cierran parcialmente esta vulnerabilidad, pero seguimos trabajando junto con el equipo de WPScan para obtener el mejor resultado. También hemos recibido su informe con todos los detalles necesarios.
Todas las versiones anteriores son vulnerables, por lo que recomendamos encarecidamente que actualices tus sitios web a la 2.6.6 y sigas actualizándolos en el futuro para obtener las últimas mejoras de seguridad y funciones.
Actualmente estamos trabajando para solucionar un problema pendiente y publicaremos una nueva actualización lo antes posible.
Errores en muchos sitios
Si te suena la vulnerabilidad Log4Shell, que copó todos los titulares de ciberseguridad en las vacaciones de Navidad de finales de 2021, sabrás que algunos tipos de errores de programación acaban necesitando parches que necesitan parches, y así sucesivamente.
Por ejemplo, si tienes un desbordamiento de búfer en un único punto de tu código en el que has reservado inadvertidamente 28 bytes de memoria pero querías escribir 128, arreglar ese número erróneo bastaría para parchear el fallo de una sola vez.
Ahora, sin embargo, imagina que el fallo no se debiera a un error tipográfico en un único punto del código, sino que estuviera causado por la suposición de que 28 bytes era el tamaño correcto del búfer en todo momento y en todo lugar.
Es posible que tú y tu equipo de codificación hayáis repetido el error en otros lugares de tu software, de modo que debéis prepararos para una larga sesión de caza de errores.
De ese modo, puedes introducir rápida y proactivamente nuevos parches si encuentras otros fallos causados por el mismo error, o uno similar. (Los fallos suelen ser más fáciles de encontrar una vez que sabes qué buscar).
En el caso de Log4J, los atacantes también se pusieron a rastrear el código, con la esperanza de encontrar errores de codificación relacionados en otro lugar del código antes de que lo hicieran los programadores de Log4J.
Afortunadamente, el equipo de programación de Log4J no solo revisó su propio código para corregir los errores relacionados de forma proactiva, sino que también estuvo atento a nuevas pruebas de concepto.
Algunas vulnerabilidades nuevas fueron reveladas públicamente por cazadores de fallos que, al parecer, preferían la fama instantánea en Internet a la forma más sobria de reconocimiento tardío que obtendrían revelando el fallo responsablemente a los programadores de Log4J.
Vimos una situación similar en la reciente vulnerabilidad de inyección de comandos de MOVEit, en la que los asociados de la banda de ransomware Clop encontraron y explotaron un fallo de día cero en el front-end web de MOVEit, lo que permitió a los delincuentes robar datos de la empresa y luego intentar chantajear a las víctimas para que pagaran “dinero por su silencio”.
Progress Software, fabricante de MOVEit, parcheó rápidamente el día cero, publicó un segundo parche tras encontrar fallos relacionados en una sesión propia de caza de fallos, solo para publicar un tercer parche poco después, cuando un autodenominado cazador de amenazas encontró otro agujero que Progress había pasado por alto.
Lamentablemente, ese “investigador” decidió atribuirse el mérito de haber encontrado la vulnerabilidad publicándola para que todo el mundo la viera, en lugar de dar a Progress uno o dos días para solucionarla primero.
Esto obligó a Progress a declarar que se trataba de otro día cero, y obligó a los clientes de Progress a desactivar por completo la parte del software con errores durante unas 24 horas mientras se creaba y probaba un parche.
En l caso del fallo de Ultimate Members, los creadores del plugin no fueron tan considerados como los creadores de MOVEit, que aconsejaron explícitamente a sus clientes que dejaran de utilizar el software mientras se parcheaba ese nuevo y explotable agujero.
Ultimate Members se limitó a aconsejar a sus usuarios que estuvieran atentos a las actualizaciones en curso, de las cuales la recientemente publicada 2.6.7 es la cuarta de una cadena de correcciones de un problema que se detectó por primera vez a mediados de junio de 2023, cuando la 2.6.3 era el número de versión.
¿Qué hacer?
- Si eres usuario de UltimateMember, parchea urgentemente. Dada la forma poco sistemática en que el equipo del plugin parece estar abordando este problema, asegúrate también de estar atento a futuras actualizaciones y aplicarlas tan pronto como puedas.
- Si eres programador del lado del servidor, asume siempre lo peor. Nunca confíes en código del lado del cliente que no puedas controlar, como HTML o JavaScript que se ejecuta en el navegador del usuario, para garantizar que los datos de entrada enviados son seguros. Valida tus entradas, como nos gusta decir en Naked Security. Mide siempre, nunca supongas.
- Si eres programador, busca ampliamente temas relacionados cuando se informe de cualquier error. Los errores de código cometidos en un lugar por un programador pueden haberse repetido en otros lugares, bien por el mismo codificador trabajando en otras partes del proyecto, bien por otros codificadores “aprendiendo” malos hábitos o siguiendo confiadamente suposiciones de diseño incorrectas.