En nuestra entrada anterior del blog, analizamos una vulnerabilidad XSS en el plugin Bookly (plugin de reservas y programación online para WordPress). Hoy, profundizaremos en otra vulnerabilidad XSS que surgió durante nuestra investigación sobre el mismo plugin.
Nuestro equipo descubrió esta vulnerabilidad en marzo de 2023. Tras su descubrimiento, iniciamos de inmediato procedimientos de divulgación responsable para garantizar que se abordara con prontitud. El identificador CVE asignado a esta vulnerabilidad es CVE-2023-1159 y se solucionó con éxito en mayo de 2023.
En esta entrada del blog, analizaremos exhaustivamente la causa raíz de la vulnerabilidad detectada en el plugin Bookly. Además, examinaremos el parche publicado para mitigar este problema eficazmente.
Analizando CVE–2023-1159 – Scripting entre sitios autenticado (Admin+) almacenado mediante título de servicio:
Nuestra investigación identificó una vulnerabilidad en el plugin Bookly relacionada con el campo "Título del servicio". Esta vulnerabilidad expone el plugin a ataques de secuencias de comandos entre sitios (XSS) almacenados debido a medidas de limpieza de entrada insuficientes. Es importante tener en cuenta que los administradores pueden editar o configurar el título directamente a través de la interfaz del plugin.
Tras una investigación más exhaustiva, descubrimos que si se configura un título malicioso en el servicio, este se mostrará y ejecutará en el navegador del cliente sin su conocimiento ni consentimiento al acceder a dicho servicio. Esta ejecución podría permitir la ejecución remota de código, lo que supone un riesgo considerable para la seguridad.
Para proporcionar una comprensión más precisa, el siguiente fragmento de código ilustra cómo se establece y lee el valor del campo “Título del servicio” al crear un nuevo servicio:

Fig.1. Método createService, que se llama cuando se crea un nuevo servicio.
'createService' a su vez invoca el método 'parameters'.

La figura 2 muestra el método de parámetros.
Dentro del método 'parameters', se llama a la función 'getRequest()'. Esta función recupera los valores introducidos de la interfaz. Posteriormente, estos valores se pasan al método 'createService', donde se almacenan. Sin embargo, es fundamental destacar que durante este proceso no se realiza ninguna limpieza de entrada, lo que expone al sistema a posibles riesgos de seguridad.

La figura 3 muestra el método getRequest.
Descubriendo la solución: Investigando el parche
Tras examinar el parche que soluciona la vulnerabilidad, determinamos que la variable $parameters se ha desinfectado correctamente, lo que previene eficazmente posibles brechas de seguridad dentro del programa. Esta notable mejora incluye la implementación de la función 'unfiltered_html' y el método 'stripScripts', cruciales para desinfectar la variable $parameters y mitigar posibles ataques.
Al utilizar la función 'unfiltered_html', el parche garantiza que solo los usuarios autorizados con la capacidad necesaria puedan enviar contenido HTML sin filtrar. Esto evita la introducción de scripts maliciosos y reduce significativamente el riesgo de ataques de scripts entre sitios (XSS). El método 'stripScripts' optimiza aún más el proceso de desinfección al eliminar o neutralizar cualquier código JavaScript incrustado en $parameters.
En general, este enfoque integral de desinfección garantiza que la variable $parameters sea segura para su uso en todo el código base, lo que minimiza el potencial de vulnerabilidades de seguridad y fortalece la seguridad general del programa.

Fig 4. Representación del parche.
Conclusión
En esta entrada de blog, examinamos una vulnerabilidad descubierta en el plugin Bookly, que permitía a atacantes autenticados insertar scripts dañinos, lo que representaba una amenaza para los dispositivos de los usuarios. Afortunadamente, esta vulnerabilidad está corregida en la versión 21.8. Recomendamos a los propietarios de sitios de WordPress que actualicen sus instalaciones a la última versión del plugin lo antes posible, lo cual es esencial para mitigar posibles ataques. Garantizar la aplicación oportuna de actualizaciones y parches es crucial para mantener una presencia online segura. Además, al otorgar la función "unfiltered_html" a un rol de usuario, tenga cuidado y asígnela solo a personas de confianza que realmente la necesiten, considerando las posibles implicaciones de seguridad que conlleva.
Todos SEQRITE Los clientes de Quick Heal están protegidos contra cualquier ataque dirigido a esta vulnerabilidad mediante las siguientes firmas:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
Coautor:
Anjali Rajkumar Raut



