개인정보 유출의 숨은 원인, API 취약점 예방법
내 정보만 보여야 할 서비스에서 다른 사람의 개인정보까지 조회된다면, 내 정보도 안전하다고 장담할 수 없다. 기업들은 서비스와 시스템 간 데이터를 주고받기 위해 API(Application Programming Interface)를 사용하며, 이 과정에서 이름·연락처·주소 등 개인정보도 처리한다. 하지만 API가 요청자의 접근 권한을 제대로 검증하지 않으면 회원번호와 같은 식별자를 바꾸는 것만으로 타인의 정보를 무단 조회하거나 변경할 수 있다.
최근 금융권을 비롯해 패션·뷰티 플랫폼 등 다양한 업계에서 개인정보 유출 사고가 잇따르면서 API 접근통제의 중요성이 커지고 있다. API의 어떤 보안 허점이 개인정보 유출로 이어지는지, 이를 예방하기 위해 기업이 점검해야 할 보안 조치를 살펴보자.

API 권한 검증의 허점
로그인에 성공했다고 해서 모든 정보에 접근할 권한이 주어지는 건 아니다. 하지만 일부 API는 로그인 여부만 확인하고 개별 데이터에 대한 접근 권한은 제대로 검증하지 못한다.
이때 발생할 수 있는 대표적인 취약점이 BOLA(Broken Object Level Authorization, 객체 수준 권한 검증 미흡)다. 여기서 ‘객체’란 회원 정보나 문서처럼 API가 다루는 개별 데이터를 의미하며, 회원 번호나 UID, 문서 번호 등은 이를 구분하기 위한 식별자다.
공격자는 이런 취약점을 악용해 다른 사용자의 개인정보를 무단으로 조회하거나, API가 제공하는 기능에 따라 데이터를 변경하고 삭제할 수도 있다. 또한 노출된 정보와 서비스 구조에 따라 추가적인 계정 탈취 공격으로 이어질 가능성도 있다.
BOLA 외에도 내부용 회원 조회 API나 관리자용 API가 적절한 접근통제 없이 외부에 노출된 경우, 개인정보 유출과 서비스 침해 위험이 더욱 커질 수 있다.
API 보안을 위협하는 4가지 요인
API 보안 위험을 키우는 요인은 권한 검증 미흡만이 아니다. 예측하기 쉬운 객체 식별자, 내부용 API의 외부 노출, 비정상적인 요청에 대한 탐지 미흡 등도 공격 가능성을 높이거나 개인정보 유출 피해를 확대할 수 있다.
- 객체 수준 권한 검증 미흡:API 요청에 포함된 객체 식별자를 기준으로 데이터를 조회하면서, 요청 주체가 해당 객체에 접근할 권한이 있는지 서버 측에서 검증하지 않는 경우
- 예측 가능한 객체 식별자:순차적인 회원 번호 등 추측하기 쉬운 식별자를 사용해 공격자가 다수의 객체를 열거하거나 반복적으로 조회하기 쉬운 경우
- 내부용 API의 외부 노출:내부용 회원 조회 기능이나 관리자용 API가 외부 인터넷 구간에 노출돼 있거나 접근 가능한 사용자와 기능에 대한 통제가 미흡한 경우
- 비정상적인 데이터 조회 탐지 미흡:짧은 시간 동안 다수의 회원 정보를 조회하거나 여러 객체 식별자를 반복적으로 변경하는 행위를 탐지·차단하는 체계가 미흡한 경우
API 보안 위험을 줄이는 대응 방안
API 접근통제 취약점으로 인한 개인정보 유출을 예방하려면 서버 측 권한 검증을 강화하고, 불필요한 정보 노출과 비정상적인 접근을 최소화해야 한다. 주요 권고사항은 다음과 같다.
① 서버 측 객체 수준 권한 검증 강화
API 요청을 처리할 때마다 사용자가 해당 데이터에 접근하거나 변경할 권한이 있는지 서버 측에서 확인해야 한다. 데이터베이스를 조회할 때는 사용자·조직·역할 등 서비스의 권한 정책에 따른 접근 조건을 적용하고, 생성·수정·삭제 기능에도 권한 검증을 수행해야 한다. 권한 변경 시 검증 절차가 누락되지 않도록 공통 검증 로직과 관련 테스트를 적용하는 것도 중요하다.
② 객체 식별자 관리 및 개인정보 반환 최소화
객체 식별자가 외부에 노출되는 객체 식별자는 예측하기 어려운 값으로 설정하는 방안을 검토해야 한다. 다만 UUID 등을 사용하더라도 서버 측 권한 검증은 필수로 적용해야 한다.
또한 API 응답에는 서비스 제공에 필요한 최소한의 정보만 포함하고, 오류 메시지를 통해 개인정보나 내부 시스템 정보가 노출되지 않도록 관리해야 한다.
③ 내부용·관리자용 API 접근통제 강화
내부용 회원 조회 기능과 관리자용 API가 외부에 불필요하게 노출돼 있지 않은지 점검하고, 네트워크 분리, VPN, API 게이트웨이, IP 허용 목록(Allowlist) 등 적절한 접근통제를 수단을 적용해야 한다. API의 기능과 사용자 역할에 따라 접근 권한을 최소화하고, 불필요한 API 엔드포인트는 비활성화하거나 외부 접근을 차단해야 한다. 내부망이나 허용된 IP에서 접근하더라도 인증과 권한 검증을 생략해서는 안 된다.
④ 비정상적인 API 요청 탐지 및 접근 제한
단시간에 다수의 회원 정보를 조회하거나 객체 식별자를 반복적으로 변경하는 행위를 탐지할 수 있도록 API 로그와 보안 모니터링 정책을 점검해야 한다. 아울러 서비스 특성에 맞춰 레이트 리미팅(Rate Limiting, 일정 시간 내 요청 횟수 제한), 웹 방화벽(WAF) 등의 보안 통제도 적용할 필요가 있다. 비정상적인 접근이 확인될 경우 요청을 제한하고 로그를 분석해 개인정보 유출 여부 및 추가 침해 가능성을 확인해야 한다.
앞서 살펴본 보안 조치가 실제 운영 환경에 적용돼 있는지도 확인할 필요가 있다. 시스템 운영·개발 담당자는 다음 항목을 중심으로 주요 API의 보안 상태를 점검해 보자.
- 회원 정보 및 개인정보 조회 API에 객체 수준 권한 검증이 적용돼 있는가?
- 다른 사용자·조직의 객체 식별자로 요청했을 때 권한이 없는 접근이 차단되는가?
- 인증이 필요한 API에서 비로그인 사용자나 접근 권한이 없는 계정의 요청이 적절히 차단되는가?
- 내부용 회원 조회 API와 관리자용 API가 불필요하게 외부에 노출돼 있지 않은가?
- API 응답에 불필요한 개인정보나 계정 관련 정보가 포함돼 있지 않은가?
- 다수의 객체를 반복적으로 조회하는 비정상적인 요청을 탐지하고 기록할 수 있는가?
API 보안 점검은 취약한 부분을 확인하는 데서 그쳐서는 안 된다. 특히 회원 정보 조회 API와 내부 업무용·관리자용 API에서 권한 검증 누락이나 불필요한 외부 노출이 확인되면 신속히 개선해야 한다. 비정상적인 API 접근이나 개인정보 유출이 의심되는 경우에는 관련 로그와 접근 이력을 보존하고, 영향 범위와 추가적인 계정 침해 여부를 확인해 필요한 대응 조치를 수행해야 한다.
- AhnLab콘텐츠마케팅팀