learning center banner

BOLA는 무엇인가요?

BOLA: 불충분한 객체 접근 검증으로 인해 공격자가 무단 행동을 수행할 수 있는 치명적인 API 취약점으로, 데이터 보안과 사용자 프라이버시를 위협합니다.

객체 수준 권한 부여(BOLA)는 공격자가 요청에서 객체 ID를 조작하여 접근 권한이 없는 리소스에 접근할 수 있게 하는 접근 제어 취약점입니다. 이 취약점은 API에서 자주 발생하며, 서버가 클라이언트가 보낸 객체 ID에 의존하여 사용자가 어떤 객체에 접근할 수 있는지를 결정할 때 적절한 권한 검사를 수행하지 않는 경우가 많습니다.

온라인 뱅킹 앱을 상상해 봅시다. 사용자가 자신의 계좌 정보를 조회할 수 있도록 합니다. 사용자는 다음과 같이 자신의 계좌를 조회할 수 있습니다: GET /account/12345. 하지만 만약 앱이 사용자가 해당 계좌를 볼 수 있는지 확인하지 않는다면 문제가 발생할 수 있습니다. 악의적인 사용자가 요청을 변경하여 다른 사람의 계좌를 보려고 할 수도 있습니다. 예를 들어, 그들은 GET /account/67890를 시도할 수 있습니다. 은행 앱은 각 사용자가 자신의 계좌 정보만 볼 수 있도록 보장해야 하며, 그렇지 않으면 정보 유출로 이어질 수 있습니다.

최신 OWASP Top 10에서, 접근 제어 결함은 2017년의 다섯 번째 자리에서 2021년에는 첫 번째 자리에 올라, 가장 중요한 웹 애플리케이션 보안 위험이 되었습니다. 이 취약점은 사용자가 의도한 권한을 넘어 행동을 수행할 수 있게 하여, 무단 정보 공개, 수정 또는 데이터 파괴로 이어질 수 있습니다.

BOLA 취약점으로 인한 일반적인 문제는 무엇인가요?

BOLA 취약점으로 인해 발생할 수 있는 문제는 다음과 같습니다:

  1. 데이터 유출: 공격자는 다른 사용자의 데이터를 접근할 수 있습니다. 예를 들어, 공격자가 환자 ID를 수정하여 의료 애플리케이션에서 다른 환자의 의료 기록에 접근할 수 있습니다.
  2. 계정 탈취: 경우에 따라, 객체에 대한 무단 접근은 전체 계정을 탈취하게 될 수 있습니다. 예를 들어, 공격자가 차량 식별 번호(VIN)를 수정하여 자신에게 속하지 않은 차량에 접근하고 제어할 수 있습니다.
  3. 데이터 손실 또는 손상: BOLA 취약점은 데이터 변경이나 삭제를 초래할 수 있습니다. 예를 들어, 공격자가 문서 ID를 수정하여 클라우드 스토리지 서비스에서 다른 사용자의 문서를 삭제할 수 있습니다.
  4. 비즈니스 프로세스 중단: 전자 상거래 플랫폼에서, 공격자는 상점 이름을 조작하여 수천 개의 온라인 상점의 판매 데이터를 접근하여 정상 비즈니스 운영을 방해할 수 있습니다.
  5. 운영 비용 증가: 공격자는 BOLA 취약점을 이용하여 서비스 제공업체의 비용 증가를 초래하는 많은 무단 요청을 통해 API 리소스를 소비하는 서비스 거부 공격을 수행할 수 있습니다.

BOLA 취약점 공격의 원리는 무엇인가요?

BOLA 취약점의 발생 원인은 다음과 같습니다:

  1. API 엔드포인트가 객체 ID를 수신함: API 엔드포인트는 URI, 요청 헤더 또는 요청 본문을 통해 전달된 객체의 ID를 수신합니다. API가 해당 리소스에 접근할 호출자의 권한을 확인하지 않으면 BOLA 취약점이 존재할 수 있습니다.
  2. 적절한 권한 검사 부족: API는 로그인이 된 사용자가 요청된 객체에 대해 요청된 작업을 수행할 권리가 있는지를 확인하지 않고 이를 실행합니다. 이는 서버 구성 요소가 클라이언트 상태를 완전히 추적하지 않고 클라이언트가 보낸 객체 ID와 같은 매개변수에 의존할 때 종종 발생합니다.
  3. 악용 용이성: 공격자가 BOLA 취약점을 식별하면 간단한 스크립트를 사용하여 이를 악용하기 쉽습니다. 공격자는 API 호출에서 자신의 리소스 ID를 다른 사용자의 리소스 ID로 바꾸기만 하면 됩니다.
  4. 민감한 정보 공개로 이어짐: BOLA 취약점은 무단 제3자에게 민감한 정보 공개, 데이터 손실 또는 데이터 변조로 이어질 수 있습니다. 경우에 따라, 객체에 대한 무단 접근은 전체 계정의 탈취로도 이어질 수 있습니다.

요약하면, 포괄적인 사용자 인증 및 매개변수 암호화의 부족은 일부 사용자가 허점을 악용하고 임의로 접근 권한을 수정할 수 있게 합니다. 아래 다이어그램은 사용자 A가 리소스 A에만 접근할 수 있음을 보여줍니다. 프로그램의 인증이 불완전할 경우, 사용자는 API를 구성하여 리소스 B에 접근할 수 있어 리소스 B에 접근하고 심지어 수정할 수 있게 됩니다.

UserA not allowed to access UserB data

BOLA 취약점을 예방하는 방법은 무엇인가요?

BOLA 취약점을 예방하기 위한 몇 가지 주요 조치가 있습니다. 이러한 예방 조치를 구현함으로써 BOLA 취약점의 위험을 크게 줄이고 API를 무단 접근 및 작업으로부터 보호할 수 있습니다.

No.예방 조치설명
1객체 수준 권한 검사 구현각 API 엔드포인트에서 사용자가 특정 객체에 대해 작업할 권한이 있는지를 확인합니다.
2무작위 및 예측 불가능한 ID 사용연속 정수나 쉽게 추측 가능한 ID 사용을 피하여 공격자가 리소스 식별자를 예측하거나 조작할 가능성을 줄입니다.
3자동 API 생성 제한API 엔드포인트를 자동으로 생성하는 도구 사용을 피하여, 각 엔드포인트가 접근 제어 모델을 준수하도록 합니다.
4API 엔드포인트 추적 및 관리정기적인 보안 감사 및 침투 테스트를 수행하여 잠재적인 보안 취약점을 식별하고 수정합니다.
5API 게이트웨이 사용모든 API 요청의 단일 진입점으로 API 게이트웨이를 설치하여 보안 정책을 적용합니다.
6강력한 인증 및 권한 부여 구현OAuth 2.0, JWT 등과 같은 산업 표준 인증 프로토콜을 사용하고 역할 기반 접근 제어를 구현합니다.
7웹 애플리케이션 방화벽(WAF) 사용WAF는 일반 웹 애플리케이션 공격으로부터 기업 API에 추가적인 보호층을 제공합니다.
8데이터 검증서버에서 수락하는 모든 콘텐츠를 필터링하고 XML 또는 JSON 스키마를 사용하여 매개변수를 검증합니다.
9요청 속도 제한사용자 또는 IP 주소가 일정 시간 내에 수행할 수 있는 요청 수를 제한하여 무차별 대입 및 DoS 공격을 방지합니다.
10보안 테스트정기적으로 API 보안 테스트를 수행하여 침투 테스트, 주입 테스트 및 사용자 인증 테스트를 통해 취약점을 식별하고 해결합니다.
11모니터링 및 패치API에서 비정상적인 네트워크 활동을 정기적으로 모니터링하고 최신 보안 패치, 버그 수정 및 새로운 기능으로 API를 업데이트합니다.
12민감한 데이터 암호화SSL/TLS 암호화 프로토콜을 사용하여 API와 클라이언트 애플리케이션 간의 통신을 보호하고 저장된 민감한 데이터를 암호화합니다.
13접근 제어 목록(ACL)특정 리소스에 대한 사용자 접근을 제어하기 위해 ACL을 사용합니다.
14최소 권한 원칙사용자가 작업을 완료하는 데 필요한 최소한의 권한만 갖도록 하여 과도한 권한을 피합니다.
15교육 및 훈련개발자에게 보안 인식 교육을 제공하여 API를 안전하게 설계하고 구현하는 방법을 이해하도록 합니다.

결론

BOLA는 민감한 데이터 유출 또는 무단 작업으로 이어질 수 있는 일반적인 보안 결함입니다. 애플리케이션을 설계하고 구축할 때 개발자는 이와 같은 문제가 발생하지 않도록 모든 객체에 대한 접근을 적절히 제어해야 합니다. 우리는 개발 및 테스트 과정에서 이러한 문제를 해결하고 예방하는 데 더 많은 노력을 기울여야 합니다. 또 다른 옵션은 이러한 우려 사항을 해결하기 위해 강력한 서드파티 솔루션을 선택하는 것입니다.

Tencent EdgeOne는 다양한 위협을 효과적으로 차단하여 강력한 웹 공격 보호를 제공합니다. 광범위한 공격 서명 데이터베이스를 통해 웹 공격, 익스플로잇, 트로이 목마, 백도어 및 기타 보안 문제의 위험을 줄일 수 있습니다. 현재 무료 체험판을 출시했으며, 더 많은 정보가 필요하시면 등록하시거나 문의해 주시기 바랍니다.

자주 묻는 질문(FAQs)

Q1: BOLA는 IDOR와 어떤 관계가 있나요?

A1: BOLA는 IDOR(불안전 직접 객체 참조)와 밀접한 관련이 있습니다. 두 개념 모두 권한 검사가 불충분하여 공격자가 다른 사용자의 객체에 접근하거나 조작할 수 있는 동일한 유형의 취약점을 가리킵니다.

Q2: 왜 BOLA가 중요한 보안 위험으로 간주되나요?

A2: BOLA는 OWASP API Top 10 목록에서 1위에 랭크되어 있습니다. API에서 가장 널리 퍼진 취약점 중 하나로, 민감한 데이터 노출 및 사용자 정보에 대한 무단 접근을 가능하게 할 수 있습니다.

Q3: BOLA 취약점 악용의 예를 제공할 수 있나요?

A3: Peloton 보안 사건은 BOLA 악용의 예입니다. 공격자는 불충분한 객체 수준 권한 부여로 인해 다른 사용자의 개인 정보를 포함한 모든 데이터에 접근할 수 있었습니다.

Q4: 개발자는 BOLA 취약점을 어떻게 예방할 수 있나요?

A4: BOLA 취약점을 예방하기 위해 개발자는 적절한 객체 수준 권한 검사 구현을 해야 합니다. 여기에는 각 객체 접근 요청에 대한 사용자 권한을 검증하고 사용자가 볼 수 있는 객체에 대해서만 접근할 수 있도록 보장하는 것이 포함됩니다.