안녕하세요. 여행자K입니다.
이번에는 OWASP API Security Top 10 2023 리스트의 아홉 번째 주제인 API09:2023 Improper Inventory Management (부적절한 자산 관리)에 대해 심도 있게 다루고자 합니다. 이 취약점은 조직이 모든 API 버전과 환경을 제대로 추적하고 보호하지 못할 때 발생하는 중대한 API 보안 위험입니다. 부적절한 자산 관리는 민감한 데이터 유출로 이어질 수 있으며, 공격자에게 중요한 시스템에 대한 무단 접근 권한을 제공할 위험이 있습니다.
Improper Inventory Management(부적절한 자산 관리)란?
부적절한 자산 관리는 API 자산 목록의 부족과 폐기 전략의 부재로 인해, 패치되지 않은 시스템을 운영하게 되어 민감한 데이터가 유출되는 상황을 초래합니다. 이는 조직 내의 모든 활성 API, 버전, 엔드포인트 및 데이터 흐름에 대한 가시성이 부족함을 의미합니다. 이러한 취약점을 악용하면 공격자가 민감한 데이터에 무단으로 접근하거나 서버에 대한 완전한 접근 권한을 획득할 수 있습니다.
이러한 문제는 대부분 API 목록에 대한 명확한 절차와 제어가 부족하고, API 서비스 수명 주기 전반에 걸쳐 API 버전 관리 정책이 일관성 없이 적용되거나 아예 부재할 때 발생합니다. 또한, 운영 중인 API의 환경(운영, 개발, 스테이징 등)을 파악하지 못하는 것도 주요 원인 중 하나입니다.
API 취약성 요인
API가 부적절한 자산 관리로 인해 취약해질 수 있는 주요 요인은 다음과 같습니다.
1. API의 버전, 환경 및 데이터 흐름을 포함한 모든 API 엔드포인트를 식별하고 재고를 관리하는 엄격한 프로세스 부재
2. API 호스트 및 배포 환경에 대한 명확한 문서화 부족
3. 알려진 취약점을 포함하는 오래되고 패치되지 않은 API 버전 운영
4. 관리자 패널, 테스트 서버 등 민감한 엔드포인트의 공용 노출
5. 더 이상 사용되지 않는 API 및 서비스를 적절히 폐기하지 않아 공격에 노출
6. API 버전 관리 및 폐기에 대한 공식적인 프로세스 부재
실제 공격 시나리오
두 가지 시나리오를 통해 부적절한 자산 관리가 어떻게 실제 공격으로 이어질 수 있는지 살펴보겠습니다.
1. 시나리오 #1: 방치된 디버깅 인터페이스 악용
- api.example.com/v1이라는 공개 API가 운영되고 있습니다. 이와 연관된 디버깅 인터페이스인 api.example.com/v1-dev가 존재했으나, 개발팀이 이의 존재를 망각한 채 공개적으로 노출되어 있는 상황입니다. 공격자는 서브도메인 열거 또는 OSINT(오픈 소스 인텔리전스)를 통해 이 v1-dev 인터페이스를 발견하고, 인증 없이 접근이 가능하거나 민감한 정보가 노출되는 등의 심각한 취약점을 악용하여 서버를 침해합니다.
2. 시나리오 #2: 잊혀진 베타 API 통한 사용자 데이터 탈취
- 어떤 기업이 새로운 기능을 도입하기 위해 /beta API를 구현했으나, 기능 개발이 일시 중단되었습니다. 문제는 이 베타 API 엔드포인트가 여전히 활성화되어 있고, 적절한 모니터링이나 보안 조치 없이 방치되었다는 점입니다. 공격자는 이 베타 API를 발견하여, 인증 및 권한 부여의 부재를 악용하고 사용자 데이터를 추출하거나 승인되지 않은 작업을 수행합니다.
대응방안
API 보안의 핵심은 부적절한 자산 관리를 예방하는 것입니다. 다음은 이를 위한 주요 전략입니다.
1. 포괄적인 API 인벤토리 관리:
- 모든 API 엔드포인트, 버전, 환경(운영, 스테이징, 개발) 및 관련 데이터 흐름에 대한 정확하고 최신 상태의 인벤토리를 유지해야 합니다.
- 각 API에 대한 소유권, 목적 및 보안 제어를 명확하게 문서화해야 합니다.
2. 공식적인 API 수명 주기 관리:
- API 버전 관리, 폐기 및 최종 중단을 위한 공식적인 API 수명 주기 관리 프로세스를 구현해야 합니다.
- 더 이상 사용되지 않는 API는 적절하게 종료하고 시스템에서 완전히 제거되어야 합니다.
3. 지속적인 API 발견 및 모니터링:
- 섀도우 API(Shadow API) 및 좀비 API(Zombie API)를 포함하여 공개적으로 노출된 모든 API 엔드포인트를 정기적으로 스캔하고 발견해야 합니다.
- API 게이트웨이를 활용하여 API 트래픽을 관리하고 모니터링하며, 보안 정책을 적용해야 합니다.
4. 강화된 접근 제어:
- 관리자 또는 디버깅 인터페이스에 대한 접근을 엄격히 제한해야 합니다.
- 모든 API에 대해 적절한 인증 및 권한 부여 메커니즘이 확립되어야 합니다.
5.네트워크 세분화:
- 외부 소스에서 내부 또는 개발 API에 접근하는 것을 방지하기 위해 네트워크를 적절히 세분화해야 합니다.
6. 명확한 소유권 할당:
- 각 API에 대한 명확한 소유자를 지정하고, 해당 팀이 API의 전체 수명 주기 동안 보안에 대한 책임을 지도록 해야 합니다.
API09:2023 Improper Inventory Management는 API 자산에 대한 포괄적인 인벤토리 관리의 중요성을 강조합니다. 모든 API 엔드포인트의 정확한 추적 및 효과적인 수명 주기 관리는 잠재적인 보안 위협을 사전에 차단하는 데 필수적입니다.
읽어주셔서 감사합니다.