OWASP이 2023년에 발표한 Top 10 API 보안 위험 목록에 대한 한글 문서가 존재하지 않아, 필자가 한글로 번역한 글이다. OWASP은 웹 애플리케이션 보안을 증진하는 비영리 단체로, 매년 업데이트되는 Top 10 리포트는 웹 애플리케이션 보안의 주요 현안을 다룬다. 글에서는 불안전한 권한, 인증 결함, 민감한 비즈니스 플로우에 대한 접근 등 총 10가지 API 보안 위험을 소개하고 있다. 원문과 자세한 내용은 OWASP의 웹사이트에서 확인 가능하다.
1. OWASP이란?
- 웹 애플리케이션 보안 향상에 기여하는 비영리 재단
- OWASP Top 10은 매년 업데이트되는 보고서로, 가장 중요한 10가지 위험에 초점을 맞춰 웹 애플리케이션 보안에 대한 보안 문제를 설명
- 원문 및 상세 내용 확인: https://owasp.org/API-Security/editions/2023/en/0x11-t10/
2. OWASP Top 10 API 보안 위험
1. 불안전한 객체 수준의 권한
- API에서 객체 식별자를 처리하는 엔드포인트가 노출되면, 객체 접근 제어에 대해 공격 표면이 생기게 됨
- 따라서 데이터에 접근하는 모든 기능에 대해 사용자 ID에 대한 객체 수준 권한을 확인해야 함
2. 불안전한 인증
- 인증 메커니즘이 부적절하게 구현되면, 공격자가 인증 토큰을 탈취하거나 다른 사용자의 신원을 가로챌 수 있음
- 사용자를 식별하는 시스템이 취약하면, API 보안 전반에 위험을 초래함
3. 불안전한 객체 속성 수준의 권한
- 개체 속성 수준에서 인증이 부족하거나 부적절하면, 승인되지 않은 당사자에 의한 정보 노출 또는 조작으로 이어짐
4. 제한되지 않은 자원 사용
- API 요청을 처리하려면 네트워크 대역폭, CPU, 메모리, 스토리지와 같은 리소스가 요구됨
- 특히 이메일/SMS/전화 또는 생체 인식 확인과 같은 API는 서비스 제공업체에 요청별로 비용이 지불되므로 공격이 성공하면 DoS 또는 운영 비용 증가로 이어질 수 있음
5. 불안전한 기능 수준의 인증
- 계층, 그룹, 역할에 따라 다른 복잡한 접근 제어 정책과 관리, 일반 기능을 불명확하게 구분해 인증 결함이 발생
6. 민감한 Business Flow에 대해 제한되지 않은 접근
- 해당 취약점을 가진 API는 Business Flow를 노출할 위험이 있으며, 자동화된 방식으로 과도한 접근이 일어날 때 피해 발생 가능
- 구현상의 문제로만 발생하는 것은 아님
7. SSRF (Server Side Request Forgery)
- SSRF는 API가 사용자가 제공한 URI에 대해 유효성을 검사하지 않고, 원격 리소스를 가져올 때 발생함
- 공격자는 애플리케이션이 방화벽이나 VPN에 보호되는 것과 관계 없이, 조작된 요청을 보내도록 강제할 수 있음
8. 잘못된 보안 설정
- 맞춤형 API 사용을 위해 지원되는 복잡한 설정에 대해, DevOps 엔지니어가 보안 설정을 놓치거나 Best practices를 따르지 않아 다양한 유형의 공격이 발생할 수 있음
9. 적절하지 않은 API Inventory 관리
- API Inventory는 조직 또는 SW 전체에 사용되는 API의 전체 목록
- API는 일반적인 웹 애플리케이션보다 더 많은 엔드포인트에 노출되므로 API Inventory를 올바르게, 최신으로 관리해야 함
- 특히 개체와 배포된 API 버전의 Inventory를 관리하는 것은 더 이상 사용되지 않는 API나 노출된 디버그 엔드포인트 등의 문제를 완화할 수 있음
10. 안전하지 않은 API 사용
- 개발자는 사용자의 입력보다 제3자의 API로부터 수신한 데이터를 더 신뢰하기 때문에, 더 약한 보안 표준을 채택하는 경향이 있음
- 공격자는 이 점을 악용해, 대상 API를 직접 공격하는 것 대신 제3자 서비스를 공격