🇰🇷 한글 설명
WWBN AVideo 29.0 이전 버전의 Authorize.Net 웹훅 핸들러(plugin/AuthorizeNet/webhook.php)에 서명 검증 우회 취약점이 존재합니다. 공격자는 정상 소액 결제의 거래 ID를 이용해 서명 검증을 통과하고, 임의 금액과 대상 사용자 ID를 담은 위조 웹훅 요청으로 임의 사용자의 지갑 잔액을 충전하거나 프리미엄 구독을 활성화할 수 있습니다.
💡 쉬운 설명
결제 완료 알림을 가짜로 만들어 실제 결제 없이 다른 사용자의 잔액을 채워 넣을 수 있는 문제입니다. 그 결과 유료 콘텐츠를 무료로 이용하게 되어 플랫폼 운영자에게 매출 손실이 발생합니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions prior to 29.0, the Authorize.Net webhook handler at plugin/AuthorizeNet/webhook.php contains a signature verification bypass that allows an attacker to forge webhook requests with arbitrary payment amounts and target user IDs. By supplying a valid transaction ID from a small legitimate purchase, the attacker bypasses signature validation and credits arbitrary wallet balances to any user account via attacker-controlled payload fields. Three flaws combine into an exploit chain: signature bypass via OR logic (webhook.php:33), payload values override API-fetched values (AuthorizeNet.php:169-171, webhook.php:44-48) and a missing approval check (webhook.php:61-75). By forging payment metadata, an attacker can credit arbitrary amounts to any user's wallet without a corresponding payment and include a plans_id to activate premium subscriptions (webhook.php:86-134), enabling free access to all paid and premium content and causing direct revenue loss to the platform owner. This issue has been fixed in version 29.0.
📍 영향받는 시스템
WWBN AVideo 29.0 미만 버전 (Authorize.Net 결제 플러그인 사용 환경)
⚔️ 공격 벡터
정상 소액 결제의 거래 ID로 웹훅 서명 검증을 우회한 뒤, 조작된 금액과 사용자 ID를 담은 위조 웹훅 요청을 webhook.php에 전송
🛡️ 대응 방법
AVideo를 29.0 이상으로 업그레이드하고, 웹훅 서명 검증 로직과 결제 승인 상태 확인을 점검
🔧 검증 코드
출력된 버전 값이 29.0 미만이면 취약하며, 29.0 이상이면 수정된 버전입니다 (설치 경로는 환경에 맞게 변경 필요).
grep -i 'version' /var/www/html/AVideo/version.php 2>/dev/null || grep -ri 'AVideo' /var/www/html 2>/dev/null | grep -i version | head -n 5