🇰🇷 한글 설명
WordPress용 WP Inventory Manager 플러그인 2.5.1 이하 버전에서 [wpinventory] 숏코드의 'where' 속성을 통한 SQL 인젝션 취약점이 발견되었습니다. WPIMItem::get_all() 함수 내에서 사용자 입력값에 대한 적절한 이스케이프 처리와 SQL 쿼리 준비(prepare) 과정이 누락되어 발생합니다. 이를 통해 기여자(Contributor) 권한 이상의 인증된 공격자가 데이터베이스에서 민감한 정보를 추출할 수 있습니다.
💡 쉬운 설명
플러그인의 특정 기능을 사용할 때 입력값을 제대로 검사하지 않아 발생하는 보안 문제입니다. 공격자가 악의적인 명령어를 입력하면 데이터베이스에 저장된 중요한 정보를 몰래 빼낼 수 있습니다.
🇺🇸 원문 (English)
The WP Inventory Manager plugin for WordPress is vulnerable to SQL Injection via the 'where' shortcode attribute of the [wpinventory] shortcode in versions up to, and including, 2.5.1. This is due to insufficient escaping on the user-supplied parameter and lack of sufficient preparation on the existing SQL query in the WPIMItem::get_all() function — parse_custom_where() only performs html_entity_decode(), strips semicolons, and does field-label name replacements, without using $wpdb->prepare() or a whitelist. The resulting string is concatenated into a raw SELECT statement that is executed via $wpdb->get_results(). This makes it possible for authenticated attackers, with Contributor-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.
📍 영향받는 시스템
WP Inventory Manager plugin for WordPress (versions up to and including 2.5.1)
⚔️ 공격 벡터
인증된 사용자(Contributor 권한 이상)가 [wpinventory] 숏코드의 'where' 속성에 조작된 SQL 구문을 삽입하여 공격
🛡️ 대응 방법
WP Inventory Manager 플러그인을 최신 버전으로 업데이트하거나, 입력값에 대한 $wpdb->prepare() 사용 및 화이트리스트 검증을 적용해야 합니다.
🔧 검증 코드
출력 결과에 'wp-inventory-manager'가 포함되어 있고 버전이 2.5.1 이하인지 확인합니다.
wp plugin list --status=active | grep -i 'wp-inventory-manager'