가. 취약점 개요
사례3 : 부적절한 인가
프로그램이 모든 가능한 실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행경로로 정보를 유출할 수 있는 취약점이다.
사례4 : 중요자원에 대한 잘못된 권한 설정
소프트웨어가 중요한 자원에 대하여 읽기, 수정 등의 권한을 의도하지 않게 허가할 경우 권한을 갖지 않은 사용자가 해당 자원을 사용하게 될 수 있는 취약점이다.
나. 설계시 고려사항
RBAC(Role Based Access Controll : 역할기반 접근제어) 모델을 사용하여 기업, 정부 등 다수의 사용자와 정보객체들로 구성된 조직체계에서 사용자에게 할당된 역할을 기반으로 권한을 부여하도록 설계한다.
접근제어목록(Access Control List, ACL)을 구성하여 자원에 대한 접근 권한을 설정한다.
- Spring Security 프레임워크 사용시 ACL 모듈을 추가할 수 있다.
① 중요자원에 대한 접근통제 정책을 수립하여 적용해야 한다.
- 중요자원에 대한 접근권한을 최소권한으로 설정한다.
- 중요자원에 대한 접근통제 정책을 설정하고, 사용자별 또는 그룹별 접근을 체크한다.
중요자원(파일, 프로세스, 메모리, 데이터베이스와 같은)에 대한 접근을 통제하기 위해 ACL이나 RBAC을 적용하도록 설계한다. 접근통제 정책을 수립할 때는 최소권한의 원칙과 권한 분리 정책에 따라 자원에 대한 권한을 할당하고, 자원에 대한 접근은 요구조건을 충족할 때만 허가하도록 설계해야 한다.
② 중요기능에 대한 접근통제 정책을 수립하여 적용해야 한다.
중요기능에 대한 접근통제는 소프트웨어를 익명·일반·특권사용자와 관리자 영역으로 구분하여 역할기반 접근통제(RBAC) 정책 및 비즈니스 로직에 따라 접근통제가 실시되도록 다음과 같은 조건에 따라 설계한다.
- 중요기능에 대한 접근 권한은 최소권한으로 설정한다.
- 중요기능에 대한 접근통제 정책을 설정하고, 사용자별 또는 그룹별 접근을 체크한다.
- 프로그램에서 사용자 또는 자원에 대한 권한의 할당, 수정, 확인, 검사를 수행하여 의도치 않은 범위의 권한을 획득하지 않도록 한다.
- 파라미터 변조로 인증이 올바르게 수행되지 않을 수 있으므로, 파라미터가 변조되지 않았는지 확인하는 절차를 구현한다.
- 상위권한을 사용해 수행되는 기능을 구현해야 하는 경우, 권한상승은 가능한 가장 마지막에 수행하고 수행종료 즉시 원상 복귀한다.
③ 관리자 페이지에 대한 접근통제 정책을 수립하여 적용해야 한다.
- 관리자 페이지의 URL은 쉽게 추측할 수 없도록 설정한다.
- 관리자 페이지 접속 시 암호화 통신 채널(TLS 등)을 사용해야 한다.
- 관리자페이지에 접속 가능한 IP를 설정하고 80번이 아닌 별도의 포트를 사용하도록 한다. -
관리자페이지 접속 시 추가인증을 요구하도록 해야 한다. 중앙 집중화된 접근제어를 제공하는 라이브러리나 프레임워크를 사용하여 각 종류의 자원에 대한 접근을 보호할 수 있다.
[테스트 문제]
문제: 접근제어목록(Access Control List, ACL)은 업, 정부 등 다수의 사용자와 정보객체들로 구성된 조직체계에서 사용자에게 할당된 역할을 기반으로 권한을 부여하도록 설계하는 방식이다.
정답: X
해설: 접근제어목록(Access Control List, ACL)은 자원에 대한 접근 권한을 설정한다.
문제: 보안대책을 서술하시오.
정답:
① 중요자원에 대한 접근통제 정책을 수립한다.
② 중요기능에 대한 접근통제 정책을 수립한다.
③ 관리자페이지에 대한 접근통제 정책을 수립한다.
문제: 빈칸을 채우시오.
나. 설계시 고려사항
(ㄱ) 모델을 사용하여 기업, 정부 등 다수의 사용자와 정보객체들로 구성된 조직체계에서 사용자에게 할당된 역할을 기반으로 권한을 부여하도록 설계한다.
(ㄴ)을 구성하여 자원에 대한 접근 권한을 설정한다.
- (ㄷ) 프레임워크 사용시 (ㄴ) 모듈을 추가할 수 있다.
① 중요자원에 대한 (ㄹ)을 수립하여 적용해야 한다.
- 중요자원에 대한 접근권한을 (ㅁ)으로 설정한다.
- 중요자원에 대한 (ㄹ) 을 설정하고, 사용자별 또는 그룹별 접근을 체크한다.
중요자원(파일, 프로세스, 메모리, 데이터베이스와 같은)에 대한 접근을 통제하기 위해 (ㄱ) 이나 (ㄴ) 을 적용하도록 설계한다. 접근통제 정책을 수립할 때는 (ㅁ)의 원칙과 권한 분리 정책에 따라 자원에 대한 권한을 할당하고, 자원에 대한 접근은 요구조건을 충족할 때만 허가하도록 설계해야 한다.
② 중요기능에 대한 (ㄹ) 을 수립하여 적용해야 한다.
중요기능에 대한 접근통제는 소프트웨어를 익명·일반·특권사용자와 관리자 영역으로 구분하여 역할기반 접근통제(RBAC) 정책 및 비즈니스 로직에 따라 접근통제가 실시되도록 다음과 같은 조건에 따라 설계한다.
- 중요기능에 대한 접근 권한은 (ㅁ)으로 설정한다.
- 중요기능에 대한 (ㄹ) 을 설정하고, 사용자별 또는 그룹별 접근을 체크한다.
- 프로그램에서 사용자 또는 자원에 대한 권한의 할당, 수정, 확인, 검사를 수행하여 의도치 않은 범위의 권한을 획득하지 않도록 한다.
- 파라미터 변조로 인증이 올바르게 수행되지 않을 수 있으므로, 파라미터가 변조되지 않았는지 확인하는 절차를 구현한다.
- 상위권한을 사용해 수행되는 기능을 구현해야 하는 경우, 권한상승은 가능한 가장 마지막에 수행하고 수행종료 즉시 원상 복귀한다.
③ 관리자 페이지에 대한 접근통제 정책을 수립하여 적용해야 한다.
- 관리자 페이지의 URL은 쉽게 추측할 수 없도록 설정한다.
- 관리자 페이지 접속 시 (ㅂ)을 사용해야 한다.
- 관리자페이지에 접속 가능한 IP를 설정하고 80번이 아닌 별도의 포트를 사용하도록 한다. -
관리자페이지 접속 시 추가인증을 요구하도록 해야 한다. 중앙 집중화된 접근제어를 제공하는 라이브러리나 프레임워크를 사용하여 각 종류의 자원에 대한 접근을 보호할 수 있다.
정답
ㄱ: RBAC
ㄴ: ACL
ㄷ: Spring Security
ㄹ: 접근통제
ㅁ: 최소권한
ㅂ: 암호화 통신 채널(TLS 등)
중요자원 접근통제 | |
보안기능 | 부적절한 인가 |
보안기능 | 중요한 자원에 대한 잘못된 권한 설정 |