중요자원(프로그램 설정, 민감한 사용자 데이터 등)을 정의
정의된 중요자원에 대한 접근을 통제하는 신뢰할 수 있는 방법(권한관리 포함) 및 접근통제 실패 시 대응방안을 설계
(보안기능) 부적절한 인가
(보안기능) 중요한 자원에 대한 잘못된 권한 설정
① 광역수사대에 따르면 전문 해커 김모씨와 정모씨 등은 OO 홈페이지를 해킹해 OO 홈페이지에 로그인 후 개인정보를 빼내왔다. 이들은 홈페이지 이용대금 조회란에 고유숫자 9개를 무작위로 자동 입력시키는 이 프로그램으로 OO 가입고객의 9자리 고유번호를 맞춰 개인정보를 탈취
② "디렉토리 리스팅 취약점은 웹서버 관리 미흡으로 발생하는 취약점으로 공격자는 이를 이용하여 웹 애플리케이션의 구조를 파악하고 민감한 데이터를 조회하거나 추가적인 공격방법을 구상할 수 있다”면서 “이에 대응하기 위해서는 웹상에서 디렉토리 검색을 차단해야 한다."
디렉토리는 물론, 내부의 모든 파일들이 보이게 되어 공격자는 웹 어플리케이션의 구조를 파악해 민감한 정보가 포함된 설정 파일을 조회하거나 웹에 게시하지 않은 각종 파일을 유출가능
① 중요자원에 대한 접근통제 정책을 수립/적용
② 중요기능에 대한 접근통제 정책을 수립/적용
③ 관리자 페이지에 대한 접근통제 정책을 수립/적용
RBAC(역할기반 접근제어) 모델을 사용하여 기업, 정부 등 다수의 사용자와 정보객체들로 구성된 조직체계에서 사용자에게 할당된 역할을 기반으로 권한을 부여하도록 설계
RBAC 데이터모델
접근제어목록(Access Control List)을 구성
Spring Security 프레임워크 사용 시 ACL 모듈을 추가, ACL 관련기능을 애플리케이션에 적용하여 객체에 대한 접근제어를 구현
1. 모든 도메인 객체에 대한 ACL엔트리를 효과적으로 검색하고 수정한다.
2. 메소드 호출에 앞서, 각 사용자가 객체에 대해 특정 작업을 수행할 권한이 있는지 검증한다.
3. 메소드 호출이 끝난 후, 각 사용자가 객체(또는 반환되는 객체)에 대해 특정 작업을 수행할 권한이 있는지 검증한다
① 중요자원에 대한 접근통제 정책
중요자원에 대한 접근권한을 최소권한으로 설정
중요자원에 대한 접근 통제 정책을 설정하고, 사용자별 또는 그룹별 접근 제한
중요자원(파일, 프로세스, 메모리, 데이터베이스와 같은)에 대한 접근을 통제하기 위해 ACL이나 RBAC을 적용하도록 설계
접근통제 정책을 수립할 때는 최소권한(1)의 원칙과 권한분리(2) 정책에 따라 자원에 대한 권한을 할당
자원에 대한 접근은 요구조건을 충족할 때만 허가하도록 설계
② 중요기능에 대한 접근 통제
소프트웨어를 익명·일반·특권사용자와 관리자 영역으로 구분
역할기반 접근통제(RBAC) 정책 및 비즈니스 로직에 따라 접근통제가 실시
중요기능에 대한 접근권한은 최소권한으로 설정한다.
중요기능에 대한 접근통제 정책을 설정하고, 사용자별 또는 그룹별 접근을 체크
프로그램에서 사용자 또는 자원에 대한 권한의 할당, 수정, 확인, 검사를 수행
파라미터가 변조되지 않았는지 확인하는 절차 구현
상위권한을 사용해 수행되는 기능을 구현해야 하는 경우
권한상승은 가능한 가장 마지막에 수행
수행종료 즉시 원상 복귀
③ 관리자 페이지에 대한 접근 통제 정책
관리자 페이지의 URL은 쉽게 추측할 수 없도록 설정
관리자 페이지 접속 시 암호화 통신 채널(TLS 등)을 사용
관리자페이지에 접속 가능한 IP를 설정하고 80번이 아닌 별도의 포트를 사용
관리자페이지에 접속 시 추가인증을 요구
접근제어를 제공하는 프레임워크 및 라이브러리
Java : Spring Security
ASP.NET : .NET Framework
Php : PHP-RBAC
관리자페이지가 인터넷으로 접근 가능할 경우, 해당 페이지는 공격자의 주 공격대상으로 SQL삽입, 무차별대입공격 등 다양한 형태의 공격의 빌미를 제공하게 되는 취약점
SSI(Server‐side Includes)는 HTML 문서 내 변수 값으로 입력된 후, 이를 서버가 처리하게 되는데, 이 때 인젝션 명령문이 수행되어 서버 데이터 정보가 누출
프로그램이 모든 가능한 실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행경로로 정보를 유출할 수 있는 취약점
소프트웨어가 중요한 보안 관련 자원에 대하여 읽기, 수정 등의 권한을 의도하지 않게 허가할 경우 권한을 갖지 않은 사용자가 해당 자원을 사용하게 될 수 있는 취약점