Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- hacking
- API Gateway
- 웹 개발
- cloud
- Lambda
- 인터랙티브 자바스크립트
- EC2
- JavaScript
- aws
- Vulnerability
- VUL
- web
- 클라우드
- S3
- VPC
- owasp
Archives
- Today
- Total
yubyeong
OWASP Top 10 -A01 (Broken Access Control :접근 권한 취약점) 본문
Web Hacking/OWASP TOP 10
OWASP Top 10 -A01 (Broken Access Control :접근 권한 취약점)
yubyeong 2025. 5. 5. 18:27A01 | Broken Access Control (접근 권한 취약점) |
A02 | Cryptographic Failures (암호화 오류) |
A03 | Injection (인젝션) |
A04 | Insecure Design (안전하지 않은 설계) |
A05 | Security Misconfiguration (보안설정오류) |
A06 | Vulnerable and Outdated Components (취약하고 오래된 소스) |
A07 | Identification and Authentication Failures (식별 및 인증 오류) |
A08 | Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 오류) |
A09 | Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패) |
A10 | Server-Side Request Forgery (서버 측 요청 위조) |
A01 : Broken Access Control (접근 권한 취약점)
- Moves up from the fifth position; 94% of applications were tested for some form of broken access control. The 34 Common Weakness Enumerations (CWEs) mapped to Broken Access Control had more occurrences in applications than any other category.
- 2021년 5위에서 상승했다. 94%의 애플리케이션이 어떤 형태로든 액세스 제어가 중단되었는지 테스트되었다. 중단된 액세스 제어에 매핑된 34개의 공통 취약점(CWE)는 다른 어떤 카테고리보다 애플리케이션에서 더 많이 발생하였다.
- 주목할만한 공통 취약점 목록(CWE) 에는 아래 항목들이 포함.
- CWE -200: 권한이 없는 공격자에게 민감한 정보 노출.
- CWE -201: 전송된 데이터에 민감한 정보 삽입.
- CWE -352: 사이트 간 요청 위조.
- 주목할만한 공통 취약점 목록(CWE) 에는 아래 항목들이 포함.
설명
- 엑세스(접근) 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행한다. 만약 엑세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위로 이어질 수 있다. 일반적인 접근 제어 취약점은 다음과 같다.
- 최소 권한 또는 기본적으로 거부 원칙을 위반하여 특정 기능, 역할 또는 사용자에게만 액세스 권한을 부여해야 하지만 누구나 사용할 수 있도록 하는 경우.
- URL(매개변수 변조 또는 강제 검색), 내부 애플리케이션 상태 또는 HTML 페이지를 수정하거나 공격 도구를 사용하여 API 요청을 수정하여 액세스 제어 검사를 우회.
- 고유 식별자(안전하지 않은 직접 객체 참조)를 제공하여 다른 사람의 계정을 보거나 편집할 수 있도록 허용.
- POST, PUT, DELETE에 대한 액세스 제어가 누락된 상태에서 API에 액세스.
- 권한 승격. 로그인하지 않고도 사용자로 활동하거나, 사용자로 로그인한 상태에서 관리자로 활동하는 것을 말한다.
- JSON 웹 토큰(JWT) 액세스 제어 토큰을 재생하거나 변조하는 것과 같은 메타데이터 조작, 권한을 높이기 위해 조작된 쿠키 또는 숨겨진 필드, JWT 무효화 남용.
- CORS 구성 오류로 인해 승인되지 않거나 신뢰할 수 없는 출처에서 API에 액세스할 수 있다.
- 인증되지 않은 사용자에게는 인증된 페이지를 강제로 탐색하게 하고, 표준 사용자에게는 권한이 있는 페이지를 강제로 탐색
예방법
- 공용, 공개 리소스를 제외하고는 기본적으로 거부한다.
- 접근 제어 메커니즘을 한 번 구현하면 CORS (Cross-Origin Resource Sharing) 사용을 최소화하는 등 애플리케이션 전체에서 재사용.
- 사용자에게 자신의 작업을 수행하는데 필요한 최소한의 권한만을 부여하고 더 이상의 권한을 부여하지 않는 ‘최소 권한 원칙’을 따라야한다.
- 사용자에게 CRUD(Create, Read, Update, Delete) 허용 대신 특정 레코드에만 CRUD 권한 부여.
- 접근 제어 실패를 기록하고, “반복적인 실패” 등의 경우 관리자에게 경고.
- 자동화 공격 툴로 인한 피해를 최소화하기 위해 API 및 컨트롤러 액세스에 속도 제한을 적용.
- 웹 서버 디렉토리 목록을 비활성화, 파일 메타데이터(.git 등 ) 와 백업 파일이 웹 루트 내에 존재하지 않게 한다.
공격 시나리오 예시
- 시나리오 1: 계정 정보에 액세스하는 SQL 호출에서 검증되지 않는 데이터 사용.
pstmt.setString(1, request.getParameter("acct"));
ResultSet results = pstmt.executeQuery( );
공격자는 브라우저의 'acct' 매개변수를 수정하여 원하는 계좌 번호를 전송. 제대로 인증되지 않으면 공격자는 모든 사용자의 계정에 접근 가능.
<https://example.com/app/accountInfo?acct=notmyacct>
- 시나리오 2: 공격자가 특정 URL로만 브라우징을 강제로 유도. 관리자 페이지에 접근하려면 관리자 권한이 필요.
<https://example.com/app/getappInfo>
<https://example.com/app/admin_getappInfo>
인증되지 않은 사용자가 두 페이지 중 하나에 접근할 수 있다면 이는 취약점. 관리자가 아닌 사용자가 관리자 페이지에 접근할 수 있다면 이는 취약점.
참고자료
https://owasp.org/www-project-top-ten/
'Web Hacking > OWASP TOP 10' 카테고리의 다른 글
OWASP TOP 10 -A05 (Security Misconfiguration :보안설정오류) (0) | 2025.05.06 |
---|---|
OWASP Top 10 -A04 (Insecure Design :안전하지 않은 설계) (2) | 2025.05.06 |
OWASP TOP 10 -A03 (Injection :인젝션) (1) | 2025.05.06 |
OWASP TOP 10 -A02 (Cryptographic Failures :암호화 오류) (1) | 2025.05.05 |
OWASP Top 10 List -2021 ver. (0) | 2025.05.05 |