🇰🇷 한글 설명
WooCommerce용 Product Filter 플러그인(WBW, 3.4.6 이하)의 filtersFrontend AJAX 액션에서 인증 및 nonce 검사가 없어, 공격자가 default_query 파라미터로 WP_Query 인자를 조작할 수 있습니다. 이를 통해 비공개 상태(draft, future, pending)의 상품 수와 목록을 열람하고 제한 없는 쿼리를 실행할 수 있습니다.
💡 쉬운 설명
로그인하지 않은 사람도 쇼핑몰의 아직 공개되지 않은 상품 정보를 볼 수 있는 취약점입니다. 공격자가 한 번에 모든 상품을 불러와 서버에 부하를 줄 수도 있습니다.
🇺🇸 원문 (English)
The Product Filter for WooCommerce by WBW plugin for WordPress is vulnerable to Missing Authorization / Information Disclosure in all versions up to, and including, 3.4.6 via the 'filterSettings[default_query]' parameter of the 'filtersFrontend' AJAX action. The handler is registered as 'wp_ajax_nopriv_filtersFrontend' and performs no capability or nonce check; raw POST data is JSON-decoded into $filterSettings and the attacker-controlled 'default_query' array is unconditionally array_merge()'d into the WP_Query arguments, overriding the plugin's safe defaults (most notably post_status, post_type, posts_per_page, and nopaging). This makes it possible for unauthenticated attackers to enumerate non-public WooCommerce products (draft, future, pending) — including their count and rendered listing markup — and to force unbounded queries that load all products in a single request.
📍 영향받는 시스템
WordPress 플러그인 'Product Filter for WooCommerce by WBW' 3.4.6 이하 버전
⚔️ 공격 벡터
인증되지 않은 공격자가 admin-ajax.php에 filtersFrontend 액션과 조작된 filterSettings[default_query] 값을 POST로 전송
🛡️ 대응 방법
플러그인을 3.4.7 이상 등 패치된 최신 버전으로 업데이트하고, 업데이트가 어려우면 플러그인을 비활성화
🔧 검증 코드
출력된 버전이 3.4.6 이하이면 취약하므로 취약점 조치(업데이트)가 필요하며, 3.4.7 이상이면 패치된 상태입니다.
wp plugin get product-filter-for-woocommerce --field=version 2>/dev/null || grep -i 'Version' wp-content/plugins/product-filter-for-woocommerce/*.php 2>/dev/null | head -1