🇰🇷 한글 설명
s2Member 플러그인(261011 이하 버전)의 'date_format' 매개변수에 입력값 검증 및 출력 이스케이프가 부족하여 저장형 크로스사이트 스크립팅(XSS)이 발생합니다. 기고자(Contributor) 이상 권한의 인증된 공격자가 악성 스크립트를 삽입할 수 있으며, 해당 페이지에 접근하는 사용자의 브라우저에서 스크립트가 실행됩니다.
💡 쉬운 설명
회원제 워드프레스 플러그인의 날짜 형식 입력란에 악성 코드를 숨겨 넣을 수 있는 취약점입니다. 이 페이지를 방문한 사용자의 브라우저에서 해당 코드가 몰래 실행될 수 있습니다.
🇺🇸 원문 (English)
The s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'date_format' parameter in all versions up to, and including, <= 261011 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The payload bypasses wp_kses_post() on save because it contains no literal angle brackets — only backslash-escaped sequences that PHP's date() materializes into HTML tag characters at render time after WordPress's shortcode_parse_atts() applies stripcslashes() to the attribute value.
📍 영향받는 시스템
s2Member 플러그인 261011 이하(포함) 버전을 사용하는 WordPress 사이트
⚔️ 공격 벡터
기고자 이상 권한을 가진 인증된 사용자가 날짜 형식 속성에 백슬래시 이스케이프된 페이로드를 포함한 숏코드를 저장하면, 렌더링 시 HTML 태그로 변환되어 방문자 브라우저에서 스크립트가 실행됨
🛡️ 대응 방법
s2Member 플러그인을 261011보다 높은 최신 버전으로 업데이트하고, 기고자 등 낮은 권한 사용자의 숏코드 작성 권한을 점검
🔧 검증 코드
출력된 버전 번호가 261011 이하이면 취약하므로 즉시 업데이트가 필요하고, 그보다 높으면 패치된 버전입니다.
wp plugin get s2member --field=version 2>/dev/null || grep -m1 "Version:" wp-content/plugins/s2member/s2member.php 2>/dev/null