🇰🇷 한글 설명
PDF Invoices & Packing Slips for WooCommerce 플러그인 5.14.0 이하 버전에는 generate_document_shortcode의 사용자 제어 키 검증 누락으로 인한 안전하지 않은 직접 객체 참조(IDOR) 취약점이 있습니다. 문서 링크 접근 유형이 'full'로 설정된 경우, 기여자 이상 권한의 인증된 공격자가 타인 주문의 인보이스와 포장명세서에 세션 없이 접근 가능한 다운로드 링크를 생성할 수 있습니다.
💡 쉬운 설명
회원 등급이 낮은 사용자도 다른 고객의 주문서 다운로드 링크를 만들 수 있는 취약점입니다. 이 링크로 고객 이름, 주소, 연락처, 결제 정보 등이 노출될 수 있습니다.
🇺🇸 원문 (English)
The PDF Invoices & Packing Slips for WooCommerce plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 5.14.0 via the generate_document_shortcode due to missing validation on a user controlled key. This makes it possible for authenticated attackers, with contributor-level access and above, to mint publicly accessible, session-free download links for arbitrary third-party orders, exposing customer names, billing and shipping addresses, email addresses, phone numbers, order and invoice numbers, line items, totals, payment details, and customer notes contained in those orders' invoices and packing slips. Exploitation requires the plugin's Document link access type setting to be configured to 'full'; with the default 'logged_in' value, generated URLs are signed with a per-session nonce rather than the order_key, making the shortcode path unexploitable for unauthorized access to third-party orders.
📍 영향받는 시스템
WordPress용 PDF Invoices & Packing Slips for WooCommerce 플러그인 5.14.0 이하 (문서 링크 접근 유형이 'full'로 설정된 경우)
⚔️ 공격 벡터
기여자 이상 권한을 가진 인증된 사용자가 generate_document_shortcode를 조작해 타인 주문의 세션 불필요 다운로드 링크를 생성
🛡️ 대응 방법
플러그인을 5.14.1 이상 최신 버전으로 업데이트하고, 문서 링크 접근 유형을 기본값인 'logged_in'으로 설정
🔧 검증 코드
출력된 버전이 5.14.0 이하이면 취약하므로 업데이트가 필요하고, 5.14.1 이상이면 패치된 것입니다.
wp plugin list --name=wpo-woocommerce-pdf-invoices-packing-slips --field=version 2>/dev/null || grep -i 'Version' wp-content/plugins/woocommerce-pdf-invoices-packing-slips/*.php 2>/dev/null | head -1