
CVE-2026-2002 분석 및 개념 증명
WordPress용 Forminator Forms – Contact Form, Payment Form & Custom Form Builder 플러그인은 1.50.2를 포함한 모든 버전에서 form_name 매개변수를 통한 Stored Cross-Site Scripting(저장형 XSS) 취약점에 노출되어 있습니다. 이는 불충분한 입력 검증(sanitization)과 출력 이스케이핑(escaping) 때문입니다. 이로 인해 관리자(administrator) 수준 접근 권한을 가진 인증된 공격자가 페이지에 임의의 웹 스크립트를 주입할 수 있으며, 사용자가 해당 페이지에 접근할 때마다 스크립트가 실행됩니다. 이 플러그인은 관리자가 하위 권한 사용자에게 양식 관리 권한을 부여할 수 있게 하므로, 구독자(subscriber)와 같은 사용자에게도 악용될 가능성이 있습니다.
근본 원인은 로직 버그에 대한 세심한 인식이 필요한 부분입니다: (/fields/html.php 파일에 있는 이 함수)
public function markup( $field, $views_obj ) {
$settings = $views_obj->model->settings;
$html = '';
$label = esc_html( self::get_property( 'field_label', $field ) );
$id = self::get_property( 'element_id', $field );
$form_id = false;
$html .= '<div class="forminator-field forminator-merge-tags" data-field="' . $id . '">';
if ( $label ) {
$html .= sprintf(
'<label class="forminator-label">%s</label>',
self::convert_markdown( $label )
);
}
// Check if form_id exist.
if ( isset( $settings['form_id'] ) ) {
$form_id = $settings['form_id'];
}
// To allow iframes in content.
add_filter( 'wp_kses_allowed_html', array( 'Forminator_Core', 'add_iframe_to_kses_allowed_html' ) );
$content = wp_kses_post( self::get_property( 'variations', $field ) ); // root cause here
remove_filter( 'wp_kses_allowed_html', array( 'Forminator_Core', 'add_iframe_to_kses_allowed_html' ) );
$html .= forminator_replace_variables(
$content,
$form_id
);
$html .= '</div>';
return $html;
}
이 코드는 하위 권한 사용자의 XSS를 방어하기 위해 wp_kses_post라는 검증(sanitize) 함수를 사용하지만, 문제는 변수를 치환하기 전에 검증을 수행한다는 점입니다. 그 결과 적절한 권한을 가진 공격자는 유효한 HTML 태그를 사용하여 wp_kses_post를 우회하고 JavaScript 페이로드를 변수에 주입함으로써 XSS를 트리거할 수 있습니다.
Edit Form 권한을 가진 공격자는 HTML 필드에 다음과 같은 HTML을 삽입할 수 있습니다:
그런 다음 form_name을 다음과 같이 변경합니다:
javascript:alert(1) or javascript:<Payload>
| 점수 | 심각도 | 버전 | 벡터 문자열 |
|---|---|---|---|
| 4.4 | MEDIUM | 3.1 | CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N |
제 생각에 이 버그는 심각도가 높지는 않지만, 로직과 코드 리뷰에 대한 세심한 인식이 필요합니다. 위에서 볼 수 있듯이 두 줄의 코드 사이에 있는 사소한 실수 하나만으로도 취약점이 만들어질 수 있습니다.
이런 유형의 연구가 마음에 들고 더 많은 발굴 작업을 지원하고 싶다면, 기부를 통해 저를 후원할 수 있습니다. 기여해 주시면 감사하겠습니다.
╰(°▽°)╯