Improper Authorization
부적절한 권한 부여
정의
- 소프트웨어가 사용자나 시스템 구성요소에 부여된 권한을 적절하게 확인하거나 제한하지 못해, 허용되지 않은 작업을 수행할 수 있게 만드는 취약점.
발생 원인
- 권한 검증 미흡
애플리케이션이 사용자 인증 후 부여된 권한을 확인하지 않거나, 접근할 수 있는 기능을 제한하지 않을 경우 발생.
- 구성 오류
RBAC나 다른 접근 제어 메커니즘을 올바르게 설정하지 않아, 일부 사용자가 관리자 기능이나 민감한 데이터를 조회할 수 있게 됨
- 코드 실수
보안 검증을 누락하거나, 잘못된 조건문 or 로직으로 인해 허용되지 않은 동작을 방지하지 못할 때 발생.
공격 결과
- 민감 데이터 접근
권한이 없는 사용자가 내부 데이터에 접근 가능.
- 시스템 구성 변경
시스템 설정을 변경하거나, 관리자 기능을 악용하여 서비스 장애 유발 가능.
- RCE
제한된 권한을 이용해 시스템의 다른 부분에 대한 접근 권한을 획득하는 경우.
예시
1. 웹 애플리케이션의 관리자 페이지
- 상황
사용자가 로그인 후 자신의 대시보드에 접근할 수 있도록 하는 웹 애플리케이션이 있음.
- 문제
권한 검증이 제대로 이루어지지 않는다면, 일반 사용자도 URL을 직접 입력하여 관리자 페이지에 접근할 수 있음.
- 영향
관리자 기능에 접근한 사용자는 민감한 설정을 변경하거나, 다른 사용자 정보를 열람할 수 있어 보안 사고로 이어질 수 있음.
2. API 호출 권한 검증 미흡
- 상황
REST API를 통해 특정 데이터에 접근할 때, 사용자 역할에 따라 다르게 응답하도록 설계되어 있어야 함.
- 문제
API에서 사용자의 역할을 제대로 확인하지 않으면, 낮은 권한의 사용자가 원래 관리자 전용 데이터를 요청할 수 있음
- 영향
민감한 데이터가 유출되거나, 잘못된 데이터 변경이 발생할 수 있음.
예방 조치
-
엄격한 권한 검증
모든 기능과 리소스에 대해 접근 전에 사용자의 권한을 반드시 확인해야 함.
각 API 호출이나 데이터 접근 요청 시, 사용자의 역할이 해당 작업을 수행할 수 있는지 검증하는 로직을 구현 필요
-
역할 기반 접근 제어(RBAC) 도입
사용자에게 부여하는 역할을 명확히 정의하고, 각 역할에 따라 수행 가능한 작업을 제한해야 함.
최소 권한 원칙(Least Privilege Principle)을 적용해, 필요 이상의 권한이 부여되지 않도록 해야 함.
-
정기적인 보안 감사 및 코드 리뷰
주기적으로 애플리케이션의 권한 검증 로직을 점검하고, 코드 리뷰를 통해 누락된 검증 절차가 없는지 확인해야 함
-
로그 및 모니터링 강화
권한과 관련된 비정상적인 접근 시도나 변경 사항을 기록하고, 이를 기반으로 실시간 경고 시스템을 구축해야 함.
궁금하신 점이나, 잘못된 정보가 있다면 댓글로 알려주세요. 감사합니다!
출처:
https://cwe.mitre.org/data/definitions/89.html
+내 머리