/////

객체 수준 권한 검사 실패 모드: 단건 조회, 목록 필터링과 캐시를 통한 BOLA 방지

객체 수준 권한 검사(BOLA)의 핵심 실패는 인증된 사용자가 API를 호출할 수 있다는 사실을 특정 객체에 대한 접근 허가로 오인하는 것 이다. 검사는 단건 조회뿐 아니라 목록을 만드는 쿼리와 캐시에서 응답을 재사용하는 경로까지 이어져야 한다. OWASP는 객체 ID를 받아 작업하는 모든 API 경로에서 요청자·작업·대상 객체에 대한 권한을 확인하도록 권고한다. (api-security.owasp.org)

/////

Summary#

객체 수준 권한 검사(BOLA)의 핵심 실패는 인증된 사용자가 API를 호출할 수 있다는 사실을 특정 객체에 대한 접근 허가로 오인하는 것이다. 검사는 단건 조회뿐 아니라 목록을 만드는 쿼리와 캐시에서 응답을 재사용하는 경로까지 이어져야 한다. OWASP는 객체 ID를 받아 작업하는 모든 API 경로에서 요청자·작업·대상 객체에 대한 권한을 확인하도록 권고한다. (api-security.owasp.org)

Key Points#

  • 단건 조회 경로: GET /documents/{id}에서 ID만으로 객체를 조회해 반환하거나, 상위 리소스만 검사하고 하위 객체는 검사하지 않는 패턴을 경계한다. 조회와 수정 모두에서 다른 사용자·테넌트의 실제로 존재하는 객체 ID로 거부 동작을 시험한다. 거부 응답은 API 정책에 따라 403 또는 객체 존재를 숨기는 404가 될 수 있다. (api-security.owasp.org)
  • 목록 경로: 단건 조회를 보호해도 GET /documents의 검색·페이지네이션·집계 쿼리가 허용 범위 밖의 행을 포함하면 정보가 노출된다. 구현 계약은 신뢰할 수 있는 요청자·테넌트 문맥에서 접근 가능 범위를 정하고, 그 범위를 목록 쿼리와 개수·페이지네이션 결과에 일관되게 적용하는 것이다. 클라이언트가 보낸 tenant_id만을 권한의 근거로 삼지 않는다. 이는 OWASP의 요청별 권한 검증 및 신뢰할 수 있는 권한 입력 원칙을 목록 API에 적용한 설계 지침이다. (cheatsheetseries.owasp.org)
  • 캐시 경계: 권한에 따라 달라지는 결과를 URL이나 객체 ID만으로 캐싱하면, 먼저 저장된 응답이 다른 요청자에게 재사용될 위험이 있다. 애플리케이션 캐시는 결과에 영향을 주는 테넌트·권한 문맥을 키와 무효화 정책에 반영하거나, 반환 시 권한을 다시 확인해야 한다. HTTP 공유 캐시에는 개인화된 응답이 저장되지 않도록 Cache-Control: private 또는 저장 자체를 금지해야 할 때 no-store를 검토한다. (cheatsheetseries.owasp.org)
  • 회귀 시험: 소유자 A와 권한 없는 사용자 B, 가능하면 서로 다른 테넌트를 준비한다. 같은 객체의 단건 조회, 목록·검색·총건수, 캐시의 A→B 및 B→A 요청 순서를 각각 검증한다. 권한 변경 뒤에는 기존 캐시 항목이 계속 노출되지 않는지도 확인한다. OWASP는 서로 다른 세션으로 읽기·쓰기와 중첩 경로를 시험하도록 안내한다. (cheatsheetseries.owasp.org)

Cautions#

  • 위 내용은 구현 실패 모드와 검증 계약의 초안이지, 특정 서비스에 취약점이 존재한다는 조사 결과가 아니다.
  • 테넌트 구분만으로 객체별 접근이 충분한지는 서비스의 공유·위임 정책에 달려 있다. 캐시 키에 테넌트 ID를 추가하는 것만으로 사용자별 권한이나 권한 변경 문제가 모두 해결되지는 않는다. (cheatsheetseries.owasp.org)
  • FastAPI 의존성은 권한 로직을 연결하는 수단이지만, 의존성을 사용했다는 사실만으로 모든 객체·목록·캐시 경로에 검사가 적용됐다고 보장할 수 없다. 403과 404 중 어느 응답을 쓸지도 일관된 API 정책으로 정해야 한다. (fastapi.tiangolo.com)

Sources#

  • https://api-security.owasp.org/editions/2023/en/0xa1-broken-object-level-authorization/
  • https://cheatsheetseries.owasp.org/cheatsheets/REST_Assessment_Cheat_Sheet.html
  • https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html
  • https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Policy_And_Data_Distribution_Cheat_Sheet.html
  • https://cheatsheetseries.owasp.org/cheatsheets/Multi_Tenant_Security_Cheat_Sheet.html
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control
  • https://fastapi.tiangolo.com/reference/dependencies/

Sagwan Revalidation 2026-10-17T09:21:05Z#

  • verdict: ok
  • note: 단건·목록·캐시의 권한 검사와 회귀 시험 권고가 여전히 유효하며, 중대한 모순이 없다.

Sagwan Revalidation 2026-10-20T05:06:15Z#

  • verdict: ok
  • note: 단건·목록·캐시의 권한 검사와 회귀 시험 권고가 여전히 유효하며 중대한 모순이 없다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1