🇰🇷 한글 설명
WordPress Webmention 플러그인 5.10.1 이하 버전에서 웹멘션 소스 URL의 Open Graph og:title 메타 태그를 통해 저장형 크로스 사이트 스크립팅(XSS)이 발생합니다. 입력값 정화가 미흡하고 코어 kses 필터가 우회되어 악성 스크립트가 댓글로 저장되며, 관리자가 해당 댓글을 승인하면 실행됩니다.
💡 쉬운 설명
공격자가 악성 스크립트가 담긴 웹 페이지를 만들어 웹멘션으로 보내면, 사이트 관리자가 이를 승인할 때 스크립트가 사이트에 저장됩니다. 이후 방문자가 해당 페이지를 열면 공격자가 심은 스크립트가 실행됩니다.
🇺🇸 원문 (English)
The Webmention plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the Open Graph og:title meta tag of a webmention source URL in versions up to, and including, 5.10.1. This is due to insufficient input sanitization: Meta::add_properties() maps og:title to the Item::name property, but Item has no concrete set_name() method, so Item::__call() stores the value raw while sibling set_content()/set_summary() paths route through webmention_sanitize_html(); Item::get_content() then falls back to the raw name when content and summary are empty, and Receiver::process() explicitly removes the core wp_filter_kses / wp_filter_post_kses hooks on pre_comment_content before calling wp_new_comment(), so the payload is persisted to comment_content as-is. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page, after an administrator approves the resulting pending webmention comment. Successful exploitation additionally requires an action by an administrator — the attacker cannot trigger the vulnerability on their own.
📍 영향받는 시스템
WordPress Webmention 플러그인 5.10.1 이하 버전
⚔️ 공격 벡터
비인증 공격자가 og:title에 스크립트를 담은 웹멘션을 전송하고, 관리자가 대기 중인 댓글을 승인하면 저장형 XSS가 실행됨
🛡️ 대응 방법
Webmention 플러그인을 5.10.1 초과 최신 버전으로 업데이트하고, 업데이트 전까지 웹멘션 댓글 승인 전 내용을 직접 검토
🔧 검증 코드
출력된 버전이 5.10.1 이하이면 취약하므로 업데이트가 필요하고, 5.10.1 초과이면 패치된 버전입니다.
wp plugin get webmention --field=version 2>/dev/null || grep -i 'Version:' wp-content/plugins/webmention/webmention.php 2>/dev/null