앞서 API2: Broken Authentication에서는 인증 절차가 적절하게 검증되지 않을 때 발생하는 문제를 살펴보았습니다. (*API2: Broken Authentication 확인하기) 그러나 사용자의 신원이 정상적으로 확인된 이후에도 보안 위험은 여전히 존재합니다. 어떤 데이터의 어떤 속성(Property)까지 접근·수정할 수 있는지를 제대로 검증하지 않는다면, 또다른 보안 위협이 발생할 수 있기 때문입니다. OWASP는 이러한 문제를 OWASP 상위 10대 API 보안 취약점 목록에서 3위로 선정했으며, 이를 API3:2023 – Broken Object Property Level Authorization(BOPLA)로 분류합니다.
■ BOPLA 취약점이란?
특정 객체의 속성(Property) 단위 권한 검증을 제대로 수행하지 않았을 때 발생하는 취약점으로, 이 검증이 누락되면 다음과 같은 문제가 발생할 수 있습니다.
- 응답에 원래 노출되어서는 안 되는 민감한 속성 포함
- 권한이 없는 사용자가 요청을 조작해 특정 속성 값을 변경, 추가, 삭제 가능
공격자는 이를 악용해 민감 정보 탈취, 권한 상승, 데이터 변조 등 다양한 공격을 시도할 수 있습니다. 이는 과거 OWASP 2019에서 별도로 다뤘던 과도한 데이터 노출(Excessive Data Exposure)과 대량 할당(Mass Assignment) 문제를 모두 포함합니다.
■ BOPLA의 공격 시나리오
속성 단위 권한 검증 미흡으로 다음과 같은 공격 시나리오가 발생할 수 있습니다.
사용자 프로필을 수정하는 API가 있다고 가정해 보겠습니다. 다음은 클라이언트가 서버로 전송한 일반적인 요청입니다.
|
{ “name”: “guest”, “email”: “guest@example.com” } |
그런데 서버가 응답을 구성하는 과정에서, 일반 사용자에게 노출되어서는 안 되는 내부 속성(isAdmin)을 실수로 포함해 반환할 수 있습니다.
|
{ “update”: “success”, “isAdmin”: false } |
이 응답을 확인한 공격자는 객체 내부에 권한과 관련된 속성이 존재한다는 사실을 알게 됩니다. 이후, 해당 속성을 직접 조작해 다음과 같은 요청을 전송할 수 있습니다.
|
{ “name”: “guest”, “email”: “guest@example.com”, “isAdmin”: true } |
서버가 속성 단위 권한 검증을 적절히 수행하지 않는다면, 조작된 속성이 그대로 적용되어 사용자의 권한이 관리자 권한으로 상승될 수 있습니다. 그 결과 공격자는 관리자 전용 API 호출, 시스템 설정 변경, 사용자 정보 조작 등 다양한 행위를 자유롭게 수행할 수 있습니다. 이는 단순한 데이터 변조를 넘어 서비스 전반의 조작과 계정 장악으로 이어질 수 있다는 점에서 심각한 보안 문제입니다.
■ BOPLA 취약점을 방지하기 위해 적용해야 할 보안 조치
✅ 속성 단위 권한 검증 적용
서버는 객체의 개별 속성에 대해 접근 및 수정 가능 여부를 명확히 정의해야 합니다. isAdmin, role, userId와 같이 권한과 직결되는 속성은 클라이언트 요청에 포함되더라도 변경 대상으로 처리해서는 안 됩니다. 해당 값들은 서버에서 검증된 로직을 기반으로 설정하는 것이 안전합니다.
✅ 요청/응답 구조 사전 정의
요청(Request)과 응답(Response)에 포함될 수 있는 필드를 사전에 정의하고, 허용되지 않은 속성이 요청에 포함된 경우에는 해당 요청을 거부해야 합니다. 응답 결과 또한 내부 구조를 그대로 반환하지 않도록 하고, 클라이언트에 노출 가능한 속성만을 명시적으로 구성하여 불필요한 내부 정보가 노출되지 않도록 해야 합니다.
✅ 기능 단위 접근 제한
서버는 API 기능(ex. 관리자 전용 API 호출, 시스템 설정 변경 등)에 따라 최소 권한을 명확히 정의하고 역할 기반 접근 제어를 적용해야 합니다.
스패로우의 웹 애플리케이션 취약점 동적 분석 도구, Sparrow DAST는 이번 글에서 언급된 API3:2023 – Broken Object Property Level Authorization(BOPLA)뿐만 아니라 OWSAP API Top 10을 기준으로 분석해 다양한 취약점을 탐지할 수 있습니다. 요청과 응답 기반의 자동 분석을 통해 수동 점검으로는 발견하기 어려운 보안 문제를 Sparrow DAST와 함께 선제적으로 탐지해보세요!
