SK쉴더스 로고
ADT캡스캡스홈
SK쉴더스

Elementor Pro 미인증 파일 업로드 취약점 (CVE-2026-32475)

EQST Now | 2026.08.24

NOW Briefing

Brief 1 Elementor Pro 4.2.1 이하의 Forms 파일 업로드 처리에서 확장자 검증을 우회할 수 있는 취약점(CVE-2026-32475)이 확인됐습니다. 8월 19일 배포된 4.2.2에서 수정됐습니다.
Brief 2 로그인하지 않은 공격자가 공개 폼을 통해 PHP 파일을 업로드하면 원격 코드 실행으로 이어질 수 있습니다. 노출 조건은 Patchstack과 Elementor의 설명이 달라 넓은 범위로 점검할 필요가 있습니다.
Brief 3 Elementor Pro를 4.2.2 이상으로 업데이트해야 합니다. 패치는 이미 올라간 파일을 지우지 않으므로, 폼 업로드 디렉터리에 실행 가능한 파일이 남아 있는지도 함께 확인해야 합니다.

Elementor Pro 미인증 파일 업로드 취약점 (CVE-2026-32475)

■ 개요

Elementor는 WordPress 페이지를 시각적으로 제작하는 플러그인이고, Elementor Pro는 폼 위젯 등의 기능을 추가한 유료판입니다. BuiltWith 집계에는 국내 Elementor Pro 사용 사이트가 약 8,800개 포함돼 있습니다.

이번 취약점은 Forms 위젯에 파일 업로드 필드를 넣어 공개한 사이트에 영향을 줍니다. Patchstack은 파일 업로드 필드가 공개돼 있으면 기본 설정에서도 노출될 수 있다고 설명했지만, Elementor는 다중 파일 업로드 옵션이 켜진 경우로 범위를 좁혀 안내했습니다. 두 설명이 다르므로 우선 파일 업로드 필드가 들어간 모든 공개 폼을 점검 대상으로 잡는 것이 안전합니다.

취약점은 파일 확장자를 검사하는 단계와 파일을 저장하는 단계가 빈 업로드 항목을 서로 다르게 처리하면서 발생합니다. 이 차이를 이용하면 확장자 검사를 건너뛴 PHP 파일이 웹에서 접근 가능한 경로에 저장될 수 있습니다. 공격에 계정이나 관리자 권한은 필요하지 않으며, 저장된 파일이 실행되면 사이트와 서버가 침해될 수 있습니다.

연구자 Tin Pham(TF1T)이 2026년 7월 16일 Patchstack에 신고했고, Elementor는 8월 19일 4.2.2를 배포했습니다. 8월 20일 BleepingComputer 보도 시점까지 실제 악용 사례는 확인되지 않았습니다.

■ 요약

항목 내용
CVE ID CVE-2026-32475 (Elementor Pro Forms 파일 업로드 필드의 확장자 검증 우회)
CVSS 점수 CVSS v3.1 9.0
취약점 유형 CWE-434, 미인증 임의 파일 업로드를 통한 원격 코드 실행
영향/위험 • 공개 폼을 통한 PHP 파일 업로드 가능
• 업로드 파일이 웹에서 접근 가능한 경로에 저장돼 원격 코드 실행으로 이어질 수 있음
• 패치 후에도 기존에 업로드된 파일은 남음
노출 조건 파일 업로드 필드가 포함된 공개 폼(Patchstack 기준). Elementor는 다중 파일 업로드 옵션이 켜진 경우로 안내
취약 버전 Elementor Pro 4.2.1 이하
패치 버전 Elementor Pro 4.2.2 (2026-08-19 배포)

■ 검증과 저장 단계의 처리 차이

파일 업로드는 modules/forms/fields/upload.php에서 처리합니다. validation()은 파일 확장자를 검사하고, process_field()은 파일을 업로드 디렉터리로 옮깁니다. 빈 업로드 항목을 만났을 때 앞쪽 함수는 return으로 검증을 끝내지만, 뒤쪽 함수는 continue로 그 항목만 건너뛰고 다음 파일을 처리합니다.

아래는 Patchstack 분석에 실린 코드입니다. returncontinue 옆의 설명 주석도 원문에 포함돼 있습니다.

// modules/forms/fields/upload.php - validation()
foreach ( $files[$id] as $index => $file ) {
    // not uploaded
    if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
        return;   // <-- leaves the whole method; every later entry goes unchecked
    }

    // ...
    if ( ! $this->is_file_type_valid( $field, $file ) ) {
        $ajax_handler->add_error( $id, esc_html__( 'This file type is not allowed.', 'elementor-pro' ) );
    }
}

// modules/forms/fields/upload.php - process_field()
foreach ( $files[$id] as $index => $file ) {
    if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
        continue; // <-- skips only this entry; the loop carries on
    }

    // ... the file is moved into the public uploads directory
}

같은 필드의 첫 항목을 비워 두면 validation()은 이후 파일을 검사하지 않습니다. 반면 process_field()은 빈 항목 다음에 있는 파일까지 처리하므로, 확장자 차단 목록을 거치지 않은 PHP 파일이 저장될 수 있습니다. 저장 경로는 wp-content/uploads/elementor/forms/이며 파일명은 uniqid() 값과 원래 확장자를 조합해 만듭니다.

Patchstack은 4.2.2에서 빈 항목 처리 방식을 맞추고, 파일을 옮기기 직전에도 확장자를 다시 검사하도록 수정됐다고 설명합니다. Elementor Pro는 유료 배포판이라 공개 패치 diff는 확인되지 않았습니다. CVSS v3.1 9.0은 CNA인 Patchstack의 산정값이며 NVD 자체 평가는 없습니다.

■ 탐지 및 점검

wp-content/uploads/elementor/forms/에서 .php, .php5, .phtml, .shtml 등 실행 가능한 파일을 찾습니다.

• 웹 서버와 PHP-FPM 로그에서 해당 경로의 PHP 파일이 요청됐는지 확인합니다. 파일 생성과 정상 응답 기록이 함께 남았다면 실행 가능성을 우선 조사합니다.

• 파일 업로드 필드가 포함된 공개 폼을 목록화하고, 다중 파일 업로드 및 필수 입력 설정을 함께 확인합니다.

• 관리자 화면이나 wp plugin list 명령으로 Elementor Pro의 실제 설치 버전을 확인합니다.

• 최근 생성된 파일의 시각을 폼 제출 기록과 대조해 정상 제출과 연결되지 않는 파일을 찾습니다.

✅ CHECK

파일명만으로 정상 업로드와 공격을 구분할 수 없습니다. 실행 가능한 확장자, 생성 시각, 해당 파일의 접근 기록을 함께 확인해야 합니다.

■ 대응 방안

• Elementor Pro를 4.2.2 이상으로 업데이트합니다.

• 업데이트 후에도 업로드 디렉터리를 조사합니다. 악성 파일이 발견되면 제거에 그치지 말고 다른 경로의 웹셸, 추가 관리자 계정, 예약 작업도 함께 확인합니다.

• 즉시 업데이트하기 어렵다면 파일 업로드 필드가 포함된 폼을 비공개로 전환하거나 해당 필드를 제거합니다.

• 웹 서버에서 wp-content/uploads/ 하위의 PHP 실행을 차단합니다.

• 파일 실행 흔적이 확인되면 관리자 비밀번호와 WordPress 보안 키·솔트를 교체하고 침해 범위를 조사합니다.

[참고 자료]

Patchstack - Elementor Pro 미인증 파일 업로드 RCE 기술 분석

NVD - CVE-2026-32475

BleepingComputer - Elementor Pro 취약점 보도

BuiltWith - 국내 Elementor Pro 사용 사이트

  • #EQST_iNOW
  • #취약점

관련 서비스

더 많은 보안 인사이트

SK쉴더스 유튜브 채널에서 확인하세요.

SK쉴더스 유튜브 채널에서 확인하세요.
보안 트렌드와 대응방법

매월 뉴스레터로 확인하세요.

매월 뉴스레터로 확인하세요.