11장. 권한
1. 권한 상승
악의적인 사용자가 다른 사용자의 권한을 남용한 것.
권한 상승 공격
- 수직적 확대: 공격자가 자신의 계정보다 더 넓은 권한을 가진 계정에 액세스할 수 있음.
- 수평적 확대: 공격자가 자신의 계정과 유사한 권한을 가진 다른 계정에 액세스.
2. 접근 제어 구현
각 사용자에게 올바른 권한이 적용되도록 사이트를 보호하는 프로세스.
접근 제어 전략
- 인증
- 권한 부여
- 권한
접근 제어 전략의 세 단계
(1) 인증 모델 설계
권한 부여 규칙을 모델링하는 방법
a.접근 제어 목록: 시스템의 각 개체에 권한 목록을 첨부해 각 사용자 또는 계정이 개체에 수행할 수 있는 작업을 지정하는 간단한 모델링 권한 부여 방법.
예) 리눅스 파일 시스템
b. 화이트리스트 및 블랙리스트: 모델 인증을 수행하는 가장 간단한 방법.
화이트리스트: 특정 자원에 액세스할 수 있는 사용자 또는 계정을 설명하고 다른 모든 사용자를 금지함.
블랙리스트: 자원에 액세스할 수 없는 사용자/계정을 명시적으로 설명해서 다른 사용자/계정에서 자원에 액세스할 수 있어야 함.
예) 스팸 필터
c. 역할 기반 접근 제어(RBAC, Role-Based Access Control): 사용자에게 역할을 부여하거나 특정 역할을 부여한 그룹에 사용자를 추가할 수 있음.
예) 아마존 웹 서비스 ID
d. 소유권 기반 접근 제어: 각 사용자가 업로드하는 사진이나 자신이 만든 게시물을 완전히 제어할 수 있도록, 소유권 개념에 접근 제어 규칙을 구성하는 것.
(2) 접근 제어 구현
인증 모델을 선택하고 사이트에 액세스 규칙을 정의한 후에 코드로 규칙을 구현해야 함.
권한 부여 규칙 구현 방법
- 함수/메서드 데코레이터 사용
- URL 검사
- 인라인 선언을 코드에 삽입
(3) 접근 제어 테스트
접근 제어 방식에서 허점 찾도록.
누가 특정 자원에 액세스할 수 있는지, 더 중요한 것은 해당 자원에 누가 액세스할 수 없는지 확인하는 유닛 테스트 작성.
3. 디렉터리 접근 공격
웹사이트의 URL에 파일 경로를 서명하는 매개 변수가 포함돼 있다면, 공격자는 디렉터리 접근 공격을 사용해 접근 제어 규칙을 무시할 수 있음. 디렉터리 접근 공격에서 공격자는 사용자가 액세스할 수 없도록 의도하지 않은 중요한 파일에 액세스하려고 URL 매개 변수 조작함.
디렉터리 접근 공격 방법
a. 파일 경로 및 상대 파일 경로
파일 경로: 각 파일의 위치. 경로 구분 문자(/)
상대 파일 경로: 현재 디렉터리에 있음을 나타냄. 마침표(.)문자로 시작
b. 디렉터리 접근 공격 분석
파일 이름 매개 변수가 안전하게 해석되지 않으면 공격자는 URL의 메뉴 파일 이름 대신 상대 경로로 스왑할 수 있음
공격자가 서버를 해킹하는 데 도움이 될 중요한 시스템 정보 노출.
디렉터리 접근 기능 해제하는 방법
- 웹 서버 신뢰: 웹서버가 정적 콘텐츠 URL 을 확인하는 방법 숙지
- 호스팅 서비스 사용: 코드베이스에 포함되지 않은 파일을 제공한다면 콘텐츠 전송 네트워크, 클라우드 스토리지/콘텐츠 관리 시스템에서 호스팅
- 간접 파일 참조 사용: 로컬 디스크에서 파일을 제공하려고 고유 코드를 작성한다면 디렉터리 접근 공격을 방지하는 가장 안전한 방법
- 파일 참조 삭제: 사이트 코드를 보호해 파일 이름 대신 임의 경로를 전달할 수 없도록.
문제: 다음 중 설명으로 옳지 않은 것은?
1. 웹사이트의 URL에 파일 경로를 서명하는 매개 변수가 포함돼 있다면, 공격자는 디렉터리 접근 공격을 사용해 접근 제어 규칙을 무시할 수 없다.
2. 권한 상승 공격은 '수직적 확대'와 '수평적 확대' 로 나뉜다.
3. 권한 부여 규칙을 모델링하는 방법 중 '화이트리스트 및 블랙리스트'의 예시로 '스팸 필터'를 들 수 있다.
4. 파일 이름 매개 변수가 안전하게 해석되지 않으면 공격자는 URL의 메뉴 파일 이름 대신 상대 경로로 스왑할 수 있다.
'웹 보안' 카테고리의 다른 글
| [웹 개발자를 위한 웹 보안] 10장 (0) | 2025.11.05 |
|---|---|
| [웹 개발자를 위한 웹 보안]7장~9장 (0) | 2025.10.29 |