🇰🇷 한글 설명
Beyondseo 플러그인 1.3.6 이하 버전에서 Contributor 권한 사용자가 rankingcoach_write_* 모듈 권한을 상속받아 REST API를 통해 사이트 전체의 리다이렉트 규칙을 생성, 수정, 삭제할 수 있는 권한 상승 취약점입니다. 공격자는 이를 이용해 /checkout, /wp-login 등 임의 경로를 악성 사이트로 리다이렉트할 수 있습니다.
💡 쉬운 설명
웹사이트에 글을 쓸 수 있는 낮은 권한의 사용자가 관리자 권한 없이도 사이트 전체의 페이지 이동 규칙을 바꿀 수 있습니다. 이를 통해 방문자가 가짜 로그인 페이지나 결제 페이지로 몰래 이동되도록 만들 수 있습니다.
🇺🇸 원문 (English)
The Beyondseo plugin for WordPress is vulnerable to unauthorized access in versions up to, and including, 1.3.6. This is due to the plugin permanently granting the 'rankingcoach_write_redirectManager' (and sibling rankingcoach_write_* module capabilities) to the Contributor role via BaseModule::defineCapabilities(), whose default role list includes 'contributor', combined with the module's REST endpoints (registered through BaseSubmoduleApi::registerRouteCreate/registerRouteEdit/registerRouteDelete) authorizing state-changing requests solely through checkPermissionsPost(), which only calls current_user_can('rankingcoach_write_<module>') and performs no admin capability, ownership, or additional nonce check inside the callback. This makes it possible for authenticated attackers, with Contributor-level access and above, to elevate their privileges to effectively that of an Administrator with respect to site-wide redirect management — creating, updating, or deleting 301/302 redirects that RedirectManagerHooks::handleRedirects() executes for every frontend visitor on template_redirect, allowing hijacking of arbitrary paths (including /checkout, /wp-login.
📍 영향받는 시스템
WordPress용 Beyondseo 플러그인 1.3.6 이하 버전 (Contributor 이상 권한 사용자 존재 시)
⚔️ 공격 벡터
Contributor 계정으로 로그인 후 Beyondseo REST API 엔드포인트에 리다이렉트 생성/수정/삭제 요청을 보내 임의 경로를 공격자 지정 URL로 리다이렉트
🛡️ 대응 방법
Beyondseo 플러그인을 1.3.7 이상으로 업데이트하고, 업데이트 전까지 해당 플러그인을 비활성화하거나 Contributor 계정을 점검하세요.
🔧 검증 코드
version 값이 1.3.6 이하이면 취약하므로 즉시 1.3.7 이상으로 업데이트해야 하며, status가 active이면 위험도가 더 높습니다.
wp plugin list --name=beyondseo --fields=name,version,status 2>/dev/null