개요
updatePurchase 메서드가 purchaseId 만으로 엔티티를 조회하며 현재 사용자/household 소유권 검증이 없습니다. 다른 household의 purchaseId를 아는 사용자가 해당 구매 내역을 무단으로 수정할 수 있는 보안 취약점입니다.
위치
- 파일:
src/main/java/com/partition/domain/supply/service/SupplyPurchaseService.java
- 메서드:
updatePurchase(Long purchaseId, UpdateSupplyPurchaseRequest request)
재현 시나리오
- 공격자가 타 household의
purchaseId를 획득
PATCH /api/supplies/purchases/{purchaseId} 호출
- 소유권 검증 없이 수정 반영됨
수정 방향
updatePurchase 시그니처에 userId(또는 householdId) 추가
- 구매 내역 조회 후
purchase.getHousehold().getId()와 현재 사용자의 household ID 비교
- 불일치 시 적절한
CustomException (예: 권한 없음 에러코드) throw
- 컨트롤러 및 관련 테스트 업데이트
관련 링크
요청자: @danaggero
개요
updatePurchase메서드가purchaseId만으로 엔티티를 조회하며 현재 사용자/household 소유권 검증이 없습니다. 다른 household의purchaseId를 아는 사용자가 해당 구매 내역을 무단으로 수정할 수 있는 보안 취약점입니다.위치
src/main/java/com/partition/domain/supply/service/SupplyPurchaseService.javaupdatePurchase(Long purchaseId, UpdateSupplyPurchaseRequest request)재현 시나리오
purchaseId를 획득PATCH /api/supplies/purchases/{purchaseId}호출수정 방향
updatePurchase시그니처에userId(또는householdId) 추가purchase.getHousehold().getId()와 현재 사용자의 household ID 비교CustomException(예: 권한 없음 에러코드) throw관련 링크
요청자: @danaggero