🇰🇷 한글 설명
WordPress용 Stripe Payment Gateway 플러그인 5.0.8 이하 버전에서 암호화 서명 검증 미흡 취약점이 발견되었습니다. 관리자가 웹훅 비밀키를 설정하지 않은 경우, 공격자가 위조된 Stripe 웹훅 이벤트를 전송하여 결제 상태를 조작할 수 있습니다.
💡 쉬운 설명
결제 확인 과정에서 '진짜 결제 신호'인지 확인하는 절차가 빠져 있는 상태입니다. 해커가 가짜 결제 완료 신호를 보내면 물건을 사지 않고도 결제가 완료된 것처럼 속일 수 있습니다.
🇺🇸 원문 (English)
The Payment Gateway of Stripe for WooCommerce plugin for WordPress is vulnerable to Improper Verification of Cryptographic Signature in all versions up to, and including, 5.0.8. This is due to the publicly accessible `woocommerce_api_wt_stripe` webhook endpoint (`EH_Stripe_Webhook_Handler::handle()`) wrapping the only call to `\Stripe\Webhook::constructEvent()` inside an `if (!empty($endpoint_secret))` guard that is never entered on default installations — because the `eh_stripe_webhook_secret` option is empty after a fresh plugin install — causing the raw, attacker-controlled POST body to be decoded and processed as a fully trusted Stripe event without any signature verification, authentication, or authorization. This makes it possible for unauthenticated attackers to send forged Stripe webhook events to manipulate WooCommerce order statuses, including marking unpaid orders as paid or completed via `payment_complete()`, forcing legitimate orders into a failed state, fabricating dispute notifications, and injecting forged refund events. This vulnerability is only exploitable when the Stripe webhook signing secret has not been configured by an administrator; once a valid signing secret is saved, `\Stripe\Webhook::constructEvent()` is enforced and forged requests are rejected.
📍 영향받는 시스템
The Payment Gateway of Stripe for WooCommerce plugin (up to and including version 5.0.8)
⚔️ 공격 벡터
인증되지 않은 공격자가 위조된 POST 요청을 `woocommerce_api_wt_stripe` 엔드포인트로 전송
🛡️ 대응 방법
플러그인을 최신 버전으로 업데이트하거나, WordPress 관리자 설정에서 Stripe 웹훅 서명 비밀키(Webhook Signing Secret)를 반드시 설정하십시오.
🔧 검증 코드
출력된 플러그인 버전이 5.0.8 이하인지 확인하십시오.
wp plugin list --status=active | grep -E 'stripe-for-woocommerce'