Weakness
불충분한 인가 / 파라미터 변조
Description
개요
- 서버리스트 상단에 서버를 고정 시키기 위하여 사용자가 결제하는 상품 구매제한을 임의로 해제 시켜 구매 가능한 취약점
(※취약점 발생 url : /api/v1/internal/campaigns/get_slots)
재현 과정
[구매 가능 기간이 도래하지 않은 상품 결제 시도]
- 마인리스트 페이지 내의 프리미엄 메뉴에서 광고를 노출하고자 하는 기간 선택
- 구매 가능한 기간이 도래하지 않아 선택 불가한 상품 목록 확인
- [프리미엄] > [광고기간] 선택 시 Response되는 can_pay 파라미터 값을 false에서 true로 변경하여 상품 활성화 시도
- 상품 선택 및 결제 가능한 상태로 활성화됨을 확인 가능
[광고 가능한 서버 대수 제한 해제]
- 광고 가능한 서버대수가 제한되어 추가 상품 구매 불가능한 기간 확인
- [프리미엄] > [광고기간] 선택 시 Response되는 ①can_pay 파라미터 값을 false에서 true로 변경하여 상품 활성화 및 ②max_slot 파라미터 값을 2에서 4로 변경하여 서버대수 제한 수 증가 시도
- 광고 구매 가능한 서버대수가 증가하여 상품 구매가 가능한 상태로 활성화됨을 확인 가능
[타 사용자가 이미 구매한 상품 중복 결제 시도]
- 타 사용자가 이미 구매한 상품은 중복 구매가 불가함을 확인
- [프리미엄] > [광고기간] 선택 시 Response되는 ①can_pay 파라미터 값을 false에서 true로 변경하여 상품 활성화, ②max_slot 파라미터 값을 2에서 4로 변경하여 서버대수 제한 수 증가, ③ user_id 및 server_id 파라미터 값을 null으로 변경 시도
- 타 사용자 이미 구매한 상품을 중복 구매가 가능한 상태로 활성화됨을 확인 가능
예상되는 취약점 발생 원인
- 특정 기간이 도래하였을 때 선착순으로 저렴하게 구매 가능한 상품을 우선적으로 선점 구매 가능
- 타 사용자가 구매한 상품에 대한 중복 및 광고 가능한 서버 제한 해제하여 추가 구매 가능
프론트엔드 상에서의 데이터를 변경하면 결제가 가능한 것처럼 보일 수 있지만, 이미 백엔드 최종 결제 승인 단계에 말씀주신 내용들에 대한 검증을 진행하고 있습니다. 따라서 종료 처리하도록 하겠습니다. 감사합니다.