보안/SW보안약점 진단원

[설계보안] 보안기능-중요자원 접근통제

re-bugger 2022. 6. 25. 20:06

분류: 보안기능/ 부적절한 인가, 중요한 자원에 대한 잘못된 권한 설정

가. 항목명

중요자원 접근통제

나. 취약점 설명

관리자 페이지 노출: 관리자페이지가 인터넷에서 접근 가능할 경우 SQL 삽입, 무차별 대입 공격 등 다양한 형태의 공격 빌미르 제공하는 취약점

SSI 삽입: SSI(Server-side Includes)는 HTML 문서 내 변수 값으로 입력된 후 서버에서 처리 시 삽입 명령문을 수행해 서버 데이터 정보가 누출되는 취약점

부적절한 인가 : 프로그램 모든 접근 가능한 실행경로에 대해 접근제어 검사가 불완전해 접근 가능한 실행경로로 정보를 유출하는 취약점

중요자원에 대한 잘못된 권한 설정: 권한을 갖지 않은 사용자가 자원을 사용하게 될 수 있는 취약점

다. 보안대책

① 중요자원에 대한 접근통제 정책

② 중요기능에 대한 접근통제 정책

③ 관리자 페이지에 대한 접근 통제

라. 설계시 고려사항

* RBAC(Role Based Access Control: 역할기반 접근제어) 모델을 사용하여 사용자와 정보 객체들로 구성된 조칙체계에서 할당된 역할을 기반으로 권한을 부여하는 설계
* ACL(Access Control List: 접근제어목록) 을 구성하여 자원에 대한 접근 권한을 설정

* 접근제어 제공하는 프레임워크 별 라이브버리
JAVA - Spring Security
ASP.NET - .NET Framework
PHP - PHP-RBAC

① 중요자원에 대한 접근통제 정책

  • 접근권한을 최소 권한으로 설정
  • 사용자별 or 그룹별 접근 체크
  • 접근 통제를 위해 ACL이나 RBAC을 적용하여 설계

② 중요기능에 대한 접근통제 정책

  • 익명/일반/특권 사용자와 관리자 영역으로 구분하여 역할기반 접근통제(RBAC) 정책 및 비즈니스 로직에 따라 접근통제
  • 최소 권한으로 설정
  • 사용자별 또는 그룹별 접근을 체크
  • 의도치 않은 범위의 권한을 획득하지 않도록 설계
  • 파라미터 변조가 되지 않도록 절차 구현
  • 권한상승이 필요한 경우 가장 마지막에 수행하고 종료 후 즉시 원상 복귀

③ 관리자 페이지에 대한 접근 통제

  • URL은 쉽게 추측할 수 없도록 설계
  • 암호화 통신채널(TLS, VPN) 을 사용해야 한다
  • 접속가능한 IP 설정하고 80번이 아닌 별도의 포트를 사용
  • 접속 시 추가인증을 요구

마. 진단기준 및 세부사항

① 중요자원에 대한 접근통제

  • 중요자원의 식별(파일, 프로세스, 메모리, 데이터베이스, 정보 등으로 분류)
  • 프로그램의 접근권한을 최소권한으로 설정
  • 프로그램 접근권한을 자원별로 분리
  • 접근통제 정책(ACL, RBAC 등) 설정
  • 접근통제 기능의 프레임워크의 컴포넌트를 활용하여 적용

② 중요기능에 대한 접근통제

  • 중요기능(ex. 개인정보 조회, 변경, 관리자등록, 사용자 등급 등록 등)이 분석 단계 산출물에 식별되는지
  • 중요기능 접근하는 사용자/프로그램이 분류
  • 최소권한으로 설정
  • 접근통제 정책(ACL, RBAC 등) 설정
  • 접근통제 기능의 프레임워크의 컴포넌트를 활용하여 적용

③  관리자 페이지에 대한 접근통제       

  • 포트가 일반 사용자 페이지와 다른 포트로 사용
  • 외부 네트워크로부터 관리자 페이지의 접근 차단
  • 접근 가능한 IP주소 정의
  • 반드시 암호화된 통신
  • 접속페이지 로깅 

 

바. 안전한 보안설계의 예

No 요구사항명 해결방안 검수기준 비고
1 DB사용자 계정에 최소권한 부여 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. 지속적인 DB사용자 계정 관리가 필요