Skip to content

[Security] updatePurchase: 구매 내역 수정 시 household 소유권 검증 누락 #24

Description

@coderabbitai

개요

updatePurchase 메서드가 purchaseId 만으로 엔티티를 조회하며 현재 사용자/household 소유권 검증이 없습니다. 다른 household의 purchaseId를 아는 사용자가 해당 구매 내역을 무단으로 수정할 수 있는 보안 취약점입니다.

위치

  • 파일: src/main/java/com/partition/domain/supply/service/SupplyPurchaseService.java
  • 메서드: updatePurchase(Long purchaseId, UpdateSupplyPurchaseRequest request)

재현 시나리오

  1. 공격자가 타 household의 purchaseId를 획득
  2. PATCH /api/supplies/purchases/{purchaseId} 호출
  3. 소유권 검증 없이 수정 반영됨

수정 방향

  1. updatePurchase 시그니처에 userId(또는 householdId) 추가
  2. 구매 내역 조회 후 purchase.getHousehold().getId()와 현재 사용자의 household ID 비교
  3. 불일치 시 적절한 CustomException (예: 권한 없음 에러코드) throw
  4. 컨트롤러 및 관련 테스트 업데이트

관련 링크

요청자: @danaggero

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions