🇰🇷 한글 설명
Vvveb CMS 1.0.8.2 이전 버전에서는 장바구니 추가 엔드포인트의 수량(quantity) 파라미터 부호를 검증하지 않습니다. 음수 값이 정상 항목으로 처리되어 소계, 세금, 총액이 모두 음수가 되며, 이 상태로 주문이 저장될 수 있습니다.
💡 쉬운 설명
쇼핑몰 장바구니에 마이너스 수량을 넣으면 시스템이 이를 막지 않아 결제 금액이 음수가 됩니다. 그 결과 판매자가 고객에게 돈을 내줘야 하는 것처럼 보이는 비정상 주문이 실제로 저장됩니다.
🇺🇸 원문 (English)
Vvveb is a powerful and easy to use CMS with page builder to build websites, blogs or ecommerce stores. Prior to 1.0.8.2, Vvveb CMS does not validate the sign of the quantity parameter on the cart-add endpoint. Submitting a negative integer is accepted by the server and treated as a normal positive line-item, but with the sign carried through into every downstream computation: line total, sub-total, taxes, and grand total all become negative numbers. The customer-facing cart UI then displays a negative grand total to the user, the checkout flow accepts the negative cart, and the resulting order is persisted in the merchant's database with a negative total column. From the merchant's order management dashboard, this surfaces as a real order with a negative total — an "the merchant owes the customer money" record that no legitimate workflow ever creates. This vulnerability is fixed in 1.0.8.2.
📍 영향받는 시스템
Vvveb CMS 1.0.8.2 이전 버전 (장바구니/결제 기능 사용 시)
⚔️ 공격 벡터
장바구니 추가 요청의 quantity 값에 음수 정수를 전송하여 음수 총액 주문을 생성
🛡️ 대응 방법
Vvveb CMS를 1.0.8.2 이상으로 업그레이드하고, 수량 값이 양의 정수인지 서버 측에서 검증
🔧 검증 코드
설치된 Vvveb 장바구니 코드에서 quantity 처리 로직을 확인하여 양수 검증(예: quantity > 0 또는 abs 처리)이 있는지 확인하고, 없으면 취약한 것으로 판단하며 1.0.8.2 이상 버전인지도 함께 점검합니다.
grep -rn 'quantity' /var/www/html/ 2>/dev/null | grep -i 'cart' | head -20