LearnPress es un plugin del sistema de gestión de aprendizaje (LMS), el cual permite que los sitios web basados en WordPress elaboren y vendan fácilmente cursos, lecciones y cuestionarios en línea, brindando una interfaz amigable a los clientes sin necesidad de que el desarrollador del sitio web tenga conocimientos de codificación.
LearnPress era vulnerable a múltiples fallas de gravedad crítica, estas vulnerabilidades podrían permitir que cualquier usuario no autenticado inyecte una consulta SQL en la base de datos y realice la inclusión de archivos locales.
Los problemas se solucionaron el 20 de diciembre de 2022 con el lanzamiento de LearnPress versión 4.2.0. Sin embargo, según las estadísticas de WordPress.org, de 100.000 sitios activos que utilizan este plugin solo alrededor del 25% ha aplicado la actualización, dejando aproximadamente 75000 sitios expuestos a estas vulnerabilidades.
La primera vulnerabilidad rastreada como CVE-2022-47615 (CVSS 9.3), una falla de inclusión de archivos locales (LFI) no autenticada que permite a los atacantes mostrar el contenido de los archivos locales almacenados en el servidor web. Esto podría exponer las credenciales, los tokens de autorización y las claves de API, lo que generaría un mayor riesgo.
El código vulnerable responsable de esta vulnerabilidad se encuentra en inc/rest-api/v1/frontend/class-lp-rest-courses-controller.php en la función list_courses. Esta función se usa para manejar la solicitud de API a lp/v1 / courses/archive-course. Hay 3 variables que el usuario no autenticado puede controlar para lograr LFI, $template_pagination_path, $template_path y $template_path_item. Un atacante podría potencialmente explotar CVE-2022-47615 enviando una solicitud de API especialmente diseñada y usando valores maliciosos para las tres variables.
La segunda vulnerabilidad rastreada como CVE-2022-45808 (CVSS 9.9), es una inyección SQL no autenticada que potencialmente conduce a la divulgación de información confidencial, la modificación de datos y la ejecución de código arbitrario.
Esta vulnerabilidad radica en una función que maneja consultas SQL para el sitio web, que no sanea y valida correctamente la variable «$filter» en los parámetros de consulta, lo que permite que un atacante inserte código malicioso en él.
La tercera vulnerabilidad rastreada como CVE-2022-45820 (CVSS 9.1), es una falla de inyección SQL autenticada en dos códigos abreviados del complemento learn_press_recent_courses y learn_press_featured_courses que no validan ni desinfectan adecuadamente la entrada de la variable «$args».
En un exploit de prueba de concepto se muestra cómo un usuario con privilegios de ‘ Contributor’ podría activar la inyección de SQL utilizando un código abreviado especialmente diseñado en una publicación redactada.
CVE-2022-45808 y CVE-2022-45820 podrían permitir que un actor malicioso interactúe directamente con su base de datos, lo que incluye el robo de información y la creación de nuevas cuentas de administrador.
Recomendaciones
Actualizar el complemento de WordPress LearnPress a la última versión disponible o al menos a la 4.2.0.
Referencias
- https://www.bleepingcomputer.com/news/security/75k-wordpress-sites-impacted-by-critical-online-course-plugin-flaws/
- https://patchstack.com/database/vulnerability/learnpress/wordpress-learnpress-plugin-4-1-7-3-2-local-file-inclusion?_s_id=cve
- https://patchstack.com/database/vulnerability/learnpress/wordpress-learnpress-wordpress-lms-plugin-plugin-4-1-7-3-2-sql-injection?_s_id=cve
- https://patchstack.com/database/vulnerability/learnpress/wordpress-learnpress-plugin-4-1-7-3-2-auth-sql-injection-sqli-vulnerability?_s_id=cve
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-47615
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-45808
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-45820