
소개
2024년 5월 7일, 선도적인 보안 자문 기관인 WP-Firewall은 Uncode Core 플러그인에서 발견된 중대한 취약점에 대한 자세한 보고서를 발표했습니다. Uncode 사용자라면 WordPress 사이트를 잠재적인 공격으로부터 보호하기 위해 코어 플러그인을 최소 2.8.9 버전으로 업데이트하는 것이 중요합니다. 이 게시물에서는 이러한 취약점의 세부 사항, 의미, 그리고 취약점을 완화하기 위해 취한 단계에 대해 자세히 설명합니다.
Uncode Core 플러그인에 대하여
Undsgn에서 개발한 Uncode Core 플러그인은 WooCommerce 사이트를 위한 인기 있는 프리미엄 테마인 Uncode 테마의 필수 구성 요소로, ThemeForest에서 110,000건 이상의 판매를 기록했습니다. Uncode 테마는 픽셀 단위로 완벽한 디자인으로 유명하여 포트폴리오, 에이전시, 프리랜서, 블로그, 온라인 스토어 등 다양한 웹사이트에 이상적입니다.
보안 취약점
WP-Firewall의 보안 연구원들은 Uncode Core 플러그인에서 두 가지 심각한 취약점을 발견했습니다.
1. 인증된 임의 파일 및 디렉토리 삭제
설명: 이 취약점은 최소한 구독자 역할을 가진 인증된 사용자가 서버에서 임의의 디렉토리를 삭제할 수 있도록 합니다. 문제는 적절한 권한과 nonce 검사가 없는 `delete_download` 함수에 있습니다. 이 함수는 `wp_ajax_uncodefont_delete_download` 작업에 첨부되어 있어 인증된 사용자가 이를 악용할 수 있습니다.
기술적 세부 사항:
함수 delete_download() {
if (isset($_REQUEST['글꼴_종류'])) {
$글꼴 패밀리 = $_REQUEST['글꼴 패밀리'];
$글꼴 디렉토리 = trailingslashit($this->글꼴 디렉토리).$글꼴 패밀리;
$폰트킷_zip = $폰트_디렉토리.'.zip';
if (@file_exists($fontkit_zip)) {
if (!@unlink($fontkit_zip)) {
echo json_encode(배열(
'오류' => sprintf( esc_html__( '@fontface kit zip %1$s를 삭제하지 못했습니다.', 'uncode-core' ), $fontkit_zip )
));
주사위();
}
}
// 디렉토리를 삭제할 수 없습니다. 디렉토리를 만든 unzip_file이 WP_Filesystem을 사용하기 때문입니다. 그래서 WP_Filesystem을 사용하여 디렉토리를 삭제합니다.
$this->setup_wp_filesystem();
글로벌 $wp_filesystem;
if (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, true);
if (!$delete_dir) {
echo json_encode(array('error' => $delete_dir['error']));
주사위();
}
}
echo json_encode(array('success' => "다운로드 삭제됨"));
}
주사위();
}
/font-system/font-system.php, delete_download() 함수 포함
이 함수는 정리 작업 없이 사용자 입력(`$_REQUEST['font_family']`)에서 `$font_dir` 변수를 구성하여 디렉터리 탐색과 임의 삭제를 허용합니다.
2. 인증된 권한 상승
설명: 이 취약점은 구독자 역할 이상의 최소 권한을 가진 모든 인증된 사용자가 WordPress 사이트의 모든 역할로 권한을 승격할 수 있도록 합니다. 이는 적절한 권한 검사가 없는 `save_option` 함수의 안전하지 않은 WP 옵션 업데이트 때문입니다.
기술적 세부 사항:
공개 함수 save_option() {
if ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], 'uncode-core-settings-nonce' ) ) {
if ( isset( $_POST['값'] ) && $_POST['값'] && isset( $_POST['옵션_id'] ) && $_POST['옵션_id'] ) {
$autoload = isset( $_POST['자동로드'] ) && $_POST['자동로드'] === '참' ? 참 : 거짓;
업데이트_옵션( $_POST['옵션_id'], $_POST['값'], $자동로드 );
---------- 여기를 잘라요 ----------
/core-settings/class-core-settings.php, save_option() 함수가 포함됩니다.
이 함수에서 사용되는 nonce는 wp-admin 영역에 접근 권한이 있는 모든 인증 사용자가 검색할 수 있으며, 이를 통해 옵션에 대한 무단 업데이트와 권한 상승이 가능합니다.
패치
이러한 취약점을 해결하기 위해 Uncode Core 플러그인 개발자는 다음 수정 사항을 포함하는 버전 2.8.9를 출시했습니다.
– 인증된 임의 파일 및 디렉토리 삭제: `delete_download` 함수에서 권한 및 nonce 검사를 구현했습니다.
– 인증된 권한 상승: `save_option` 함수에서 권한 및 nonce 검사를 적용하고 옵션 키에 대한 허용 목록 검사를 추가했습니다.
결론
WordPress 사이트의 보안을 보장하려면 최신 패치와 보안 권고 사항을 최신 상태로 유지해야 합니다. Uncode Core 플러그인의 취약성은 모든 민감한 작업에 대한 적절한 권한 및 nonce 검사를 구현하는 것의 중요성을 강조합니다. 항상 사용자 입력을 살균하고 사용자 작업을 통해 업데이트 또는 삭제할 수 있는 범위를 제한하세요.
더 자세한 내용은 WP-Firewall 웹사이트에서 전체 보안 권고 사항을 읽어보세요. 여기.
보안을 유지하세요
WP-Firewall은 플러그인 감사, 취약성 모니터링 및 대응, 관리형 WordPress 보안 서비스를 포함하여 WordPress 보안을 위한 다양한 솔루션을 제공합니다. 플러그인 개발자 또는 보안 연구자라면 WP-Firewall에 가입하는 것을 고려하세요.