본문 바로가기

카테고리 없음

OWASP API Security Top 10 (2023)

https://www.lgcns.com/blog/cns-tech/security/54998/

1. 취약한 객체 수준 인가 ( Broken Object Level Authorization )

자신이 아닌 다른 사람의 데이터에 접근 가능한 문제

 

예시

  • /api/users/42/posts 로 42번 사용자의 비공개 게시물을 URL 숫자만 바꿔서 접근

 

방어법

  • 사용자가 요청한 데이터에 접근 권한이 있는지 매 요청마다 확인
  • 요청한 id 뿐만 아니라 소유권과 권한도 확인

 

2. 취약한 인증 ( Broken Authentication )

누가 로그인했는지 제대로 확인하지 않는 문제

 

예시

  • 약한 암호를 허용하거나 무제한 로그인 시도를 허용
  • JWT 토큰을 제대로 검증하지 않거나 만료된 토큰을 계속 사용가능한 경우

방어법

  • 강력한 비밀번호 정책 사용
  • 다중 인증(MFA - 비밀번호, 휴대폰, 지문 등 중 2가지 이상 조합해서 사용) 구현
  • 안전한 토큰 관리 및 토큰 만료시간 설정

 

3. 취약한 객체 속성 수준 인가 ( Broken Object Property Level Authorization )

사용자가 볼 수 없어야 하는 데이터 필드 까지 노출되는 문제

 

예시

  • 일반 사용자가 api 요청시 "isAdmin": false 와 같은 민감한 속성이 포함된 경우

방어법

  • 응답 데이터에서 사용자 역할별로 필드 필터링
  • 서로 다른 권한 레벨에 맞는 응답 스키마 설계

 

4. 취약한 리소스 제한 ( Unrestricted Resource Consumption )

API가 너무 많은 요청이나 큰 데이터를 처리하게 해서 서버가 느려지거나 멈추는 문제

 

예시

  • 한 사용자가 초당 수천개의 요청을 보냄
  • 매우 큰 파일을 업로드하거나 복잡한 검색 쿼리를 실행

방어법

  • 요청 속도 제한 구현
  • 페이지네이션 적용
  • 업로드 파일 크기 및 요청 데이터 크기 제한

 

5. 취약한 함수 수준 인가 ( Broken Function Level Authorization )

권한이 없는 사용자가 관리자 기능을 사용할 수 있는 문제

 

예시

  • 일반 사용자가 관리자 전용 api 에 접근할수 있는 경우

방어법

  • 모든 api 엔드포인트에 권한 확인 적용
  • 역할기반 접근제어 구현
  • 프론트엔드 숨김으로 보안 의존하지 않음

 

6. 비정상적 자산 할당 ( Unrestriced Access to Sensitive Business Flows )

자동화 봇이 중요한 비즈니스 프로세스를 악용하는 문제

 

예시

  • 봇이 티켓팅 사이트의 모든 좋은 좌석을 자동으로 예약
  • 쇼핑몰에서 할인 상품을 자동으로 대량 구매해서 재판매

방어법

  • CAPTCHA 구현
  • 비정상적인 행동 패턴 감지
  • 비즈니스 프로세스에 제한 설정( 구매 수량 제한 등 )

 

7. 서버 측 요청 위조 ( Server Side Request Forgery )

공격자가 서버를 속여서 내부 네트워크나 외부 시스템에 원치 않는 요청을 보내게 하는 문제

 

예시

  • api에 {"profileUrl": "http://internal-network/admin"}을 보내 서버가 내부 관리자 페이지에 접근하게 함

방어법

  • 요청 URL의 허용 목록 사용
  • 내부 네트워크 주소로의 요청 차단
  • 서버 응답 내용을 클라이언트에게 직접 전달하지 않기

 

8. 보안 설정 오류 ( Security Misconfiguration )

API 서버의 보안 설정이 잘못되어 있는 문제

 

예시

  • 기본 비밀번호 사용
  • 오류 메시지에 너무 많은 정보 노출
  • HTTPS 대신 HTTP 사용
  • 불필요한 api 엔드포인트 공개

방어법

  • 보안 강화 설정 적용
  • 안전한 기본값 사용
  • 모든 환경(개발, 테스트, 운영) 에 일관된 보안 설정 적용

 

9. 부적절한 재고 관리 ( Improper Inventory Management )

API의 모든 버전, 문서, 호스트 정보가 제대로 관리되지 않아 생기는 문제

 

예시

  • 오래된 API 버전에 보안 패치가 적용되지 않음
  • 개발용 / 테스트용 API 가 인터넷에 노출됨
  • API 문서가 불필요하게 모든 엔드포인트 정보를 노출함

방어법

  • API 인벤토리 목록 관리
  • 미사용 API 및 엔드포인트 제거
  • API 버전 관리 및 지원 정책 수립

 

10. 안전하지 않은 API 클라이언트 설정 ( Unsafe Consumption of APIs )

클라이언트 앱이 외부 API 응답을 신뢰하고 제대로 검증하지 않는 문제

 

예시

  • 외부 API에서 받은 데이터를 검증 없이 데이터베이스에 저장
  • 외부 API 응답에 포함된 스크립트를 그대로 실행

방어법

  • 모든 외부 API 응답 데이터 검증
  • 최소 권한 원칙 적용
  • API 응답 데이터 샌드박스 처리

 

 

참고문서 - https://owasp.org/www-project-api-security/