악의적인 목적이 있는 사람들이 워드프레스(WordPress) 직접 악용 가능한 결함이 있는 다른 플러그인을 설치하고 활성화하기 위해 Hunk Companion 플러그인의 심각한 취약점을 악용하고 있음
해당 취약점은 알려진 취약점과 사용 가능한 익스플로잇이 있는 오래된 플러그인을 설치함으로써 공격자는 RCE(원격 코드 실행), SQL 삽입, XSS(교차 사이트 스크립팅) 결함으로 이어지는 대규모 결함 풀에 액세스 하거나 백도어 관리자 계정을 생성 가능
취약한 플러그인 설치
Hunk Companion은 사용자 정의 가능한 WordPress 테마 제공업체인 ThemeHunk에서 개발한 테마의 기능을 보완하고 향상하도록 설계된 WordPress 플러그인이므로 독립 실행형 플러그인이 라기보다는 추가 기능에 가까운데 Hunk Companion은 현재 10,000개가 넘는 WordPress 사이트에서 사용되고 있으므로 해당 분야에서는 상대적으로 좋은 도구 해당 취약점은 CVE-2024-11972 입니다.
문제는 문제를 해결한 최신 1.9.0 이전 버전의 Hunk Companion에 영향을 주게 되고
WP Query Console을 설치하기 위해 CVE-2024-11972를 적극적으로 악용하는 것을 발견 해당 플러그인은 약 7년 전에 마지막으로 업데이트된 알려지지 않은 플러그인으로 해커는 제로데이 RCE 결함 CVE-2024-50498을 활용하여 대상 사이트에서 악성 PHP 코드를 실행하는 데 악용
Hunk Companion이 버전 1.8.5에서 유사한 결함을 수정
해당 결함은 CVE-2024-9707 로 추적되고 있지만, 분명히 패치가 적절하지 않았으며 이를 우회하는 방법이 존재
문제의 핵심은 현재 사용자에게 플러그인 설치 권한이 있는지 확인하기 위해 설치된 검사를 우회하도록 인증되지 않은 요청을 허용하는 hunk-companion/import/app/app(.)php 스크립트의 버그에서 문제
204행에서 다음 코드는 WordPress.org URL이 하드 코딩되어 WordPress.org 저장소에 호스팅 된 플러그인으로 설치를 제한함
$temp_file = download_url(hxxps://downloads.wordpress(.)org/plugin/'.$slug.(').zip);
WordPress 플러그인의 .zip 파일을 다운로드하는 데 사용
그러나 이 URL을 사용하면 플러그인이 닫혔거나 저장소에서 제거된 경우에도 플러그인을 다운로드할 수 있으며 동작은 악용을 위한 중요한 벡터를 도입하여 공격자가 취약한 플러그인을 설치할 수 있음
취약점은 app(.) php에 있습니다.
register_rest_route( 'hc/v1', 'themehunk-import', array(
'methods' => 'POST',
'callback' => array( $this, 'tp_install' ),
'permission_callback' => '__return_true',
) );
register_rest_route( 'ai/v1', 'ai-site-import', array(
'methods' => 'POST',
'callback' => array( $this, 'data_import' ),
'login_user_id' => get_current_user_id(),
'permission_callback' => '__return_true',
) );
}
public function tp_install(WP_REST_Request $request){
$request = $request->get_params();
$params = $request['params'];
new HUNK_COMPANION_SITES_BUILDER_SETUP($params);
return json_encode( site_url());
}
public function data_import(WP_REST_Request $request){
$atrs = $request->get_attributes();
$request = $request->get_params();
$params = $request['params'];
new HUNK_COMPANION_SITES_IMPORT($params,$atrs['login_user_id']);
hemehunk‑import 버전 1.8.5에서 플러그인 작성자는 permission_callback 접근을 제한하고 있음
그러나 permission_callback이 올바르게 작동하려면 boolean(요청을 거부하는 것은 거짓, 수락하는 것은 참) 또는 WP_Error 객체를 반환해야 함
해당 경우 실패한 조건은 부울 또는 WP_Error가 아닌 새로운 WP_REST_Response를 반환합니다. 그 결과 permission_callback은 항상 true로 평가되어 인증되지 않은 요청이 의도한 검사를 우회할 수 있게 됩니다.
해당 결함은 HUNK_COMPANION_SITES_BUILDER_SETUP 클래스를 호출하여 임의의 플러그인을 설치하고 활성화하는 tp_install 함수를 실행할 수 있게 함
permission_callback의 반환 값이 문제의 핵심
permission_callback 은 반드시 boolean 또는 WP_Error객체를 반환해야 함
그러나 현재 코드에서 조건이 실패할 때 WP_REST_Response 객체를 반환하는 경우가 발생할 수 있으며 이런 경우 WordPress는 이를 참(true)으로 평가하므로 인증되지 않은 요청이 정상적으로 처리된 것처럼 우회
이러한 동작은 심각한 보안 결함으로 이어질 수 있으며
특히 tp_install 함수의 문제는 HUNK_COMPANION_SITES_BUILDER_SETUP 클래스를 호출하여 악의적인 플러그인을 설치하거나 실행 가능하다는 점에서 매우 위험
문제의 원인
1.permission_callback의 잘못된 반환값
조건이 실패할 때 boolean이나 WP_Error 대신 다른 반환값(WP_REST_Response)을 사용
WordPress는 WP_REST_Response 객체를 참(true)으로 평가하여 인증 실패를 무시
2.tp_install` 함수의 동작:
요청 데이터의 검증 없이 직접 HUNK_COMPANION_SITES_BUILDER_SETUP 클래스를 호출
전달된 파라미터로 플러그인을 설치하거나 활성화 가능
결론 해당 워드프레스 플러그인을 사용하고 있다고 하면 최신 플러그인으로 업데이트를 진행을 하는 것을 매우 권장합니다.
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
Mullvad VPN CVE-2024-55884 심각한 보안 취약점 (0) | 2024.12.18 |
---|---|
노드 VPN 스마트폰 IP 우회 변경 사용법(3개월 무료) (2) | 2024.12.17 |
북한 해킹 단체 김수키(Kimsuky)에서 만든 스피어 피싱으로 제작된 악성코드-열차9월10일원고(화)_4.bat(2024.12.02) (0) | 2024.12.17 |
일본 みずほ銀行(미즈호은행)피싱메일 간단 분석(2024.12.09) (0) | 2024.12.12 |
윈도우 10 KB5048652,윈도우 11 KB5048667 & KB5048685 보안 업데이트 (0) | 2024.12.11 |
대북 관계자를 타켓팅 하는 APT 37(Reaper,리퍼)에서 만든 악성코드-김X성강의자료.lnk(2024.12.06) (0) | 2024.12.09 |
북한 APT 김수키(Kimsuky)에서 만든 악성코드-system_first.ps1(2024.11.27) (0) | 2024.12.06 |
APT 김수키(Kimsuky)에서 만든 악성코드-pay.bat(2024.11,27) (0) | 2024.12.05 |