🇰🇷 한글 설명
WordPress의 WC Product Table Lite 플러그인 5.6.0 이하 버전에서 CSS 인젝션 취약점이 발견되었습니다. 인증되지 않은 공격자가 AJAX 핸들러를 통해 조작된 shortcode 속성을 전달하여 임의의 CSS 규칙을 삽입할 수 있습니다. 이를 통해 데이터 탈취, UI 변조 및 피싱 공격이 가능합니다.
💡 쉬운 설명
웹사이트의 디자인을 결정하는 코드를 해커가 마음대로 바꿀 수 있는 보안 약점입니다. 해커는 이를 이용해 화면을 가짜로 만들거나 사용자의 정보를 몰래 빼낼 수 있습니다.
🇺🇸 원문 (English)
The WC Product Table Lite plugin for WordPress is vulnerable to CSS Injection in versions up to, and including, 5.6.0 via the 'laptop_scroll_offset' shortcode attribute exposed through the unauthenticated wcpt_ajax() AJAX handler. The handler is registered for wp_ajax_nopriv_wcpt_ajax, JSON-decodes attacker-supplied attributes, only allowlists key names (not values), applies a preg_replace that strips only [ ] < >, and passes the value through do_shortcode into wcpt_style__sticky_sidebar(), where it is interpolated verbatim into inline CSS ('top: {$top}px;' and 'max-height: calc(100vh - {$top}px);') with no numeric casting or CSS escaping. This makes it possible for unauthenticated attackers to inject arbitrary CSS declarations and rules on pages rendering a product table with sticky sidebar enabled, which can be leveraged for data exfiltration (via attribute-selector + background-image URLs), UI redressing, and phishing that bypasses CSPs permitting inline styles.
📍 영향받는 시스템
WordPress WC Product Table Lite plugin (version up to and including 5.6.0)
⚔️ 공격 벡터
인증되지 않은 사용자가 wcpt_ajax() AJAX 핸들러를 통해 조작된 'laptop_scroll_offset' 속성값을 전달하여 공격
🛡️ 대응 방법
플러그인을 최신 버전으로 업데이트하거나, 해당 shortcode 사용 시 입력값에 대한 엄격한 숫자 검증 및 CSS 이스케이프 처리를 적용해야 합니다.
🔧 검증 코드
출력된 결과에서 해당 플러그인의 버전이 5.6.0 이하인지 확인합니다.
wp-cli plugin list --allow-root | grep 'wc-product-table-lite'