티스토리 뷰

반응형

 

 

 

가. 취약점 개요

  - 일정한 규칙을 갖는 세션ID가 발급되거나, 세션 타임아웃이 너무 길게 설정된 경우, 사용자 권한도용이 가능한 취약점

   → (불충분한 세션관리)

 

  - 다중 스레드의 싱글톤 객체에서 멤버변수 등을 통해 서로 다른 세션 간 데이터를 공유로 인해 경쟁조건 발생하는 취약점

   → 잘못된 세션에 의한 정보노출

 

 

나. 요구사항

1. 세션간 데이터가 공유되지 않도록 설계

2. 세션을 안전하게 관리

3. 세션ID를 안전하게 관리

 

 

다. 요구사항 별 고려사항

1. 세션간 데이터가 공유되지 않도록 설계

  - 싱글톤 객체로 생성되는 서비스 컴포넌트 확인

  - 해당 컴포넌트에 읽고 쓰기가 가능한 멤버변수, 클래스 변수를 사용하지 않도록 설계

 

2. 세션을 안전하게 관리

  - 모든 페이지에서 로그아웃 가능하도록 UI 설계

  - 로그아웃을 통해 할당된 세션을 완전히 제거 ( session.Invalidate() )

  - 중요기능 세션타임 2~5분, 일반 세션타임 15~30분 설정

  - 일정시간 사용하지 않은 세션은 강제삭제

  - 새로운 로그인 시 기존 로그인 세션을 종료하거나 새로운 세션을 종료

  - 세션ID를 사용할 경우 HttpOnly 속성 추가

  - 패스워드 변경 시 현재 활성화 된 모든 세션을 삭제 후 재할당

 

3. 세션ID를 안전하게 관리

  - 세션ID는 서버에서 생성

  - 세션ID는 난수 알고리즘을 통해 예측불가능한 최소 128비트 길이로 생성

  - 로그인 성공 시 할당받은 세션ID는 파기 후 새로운 값으로 재할당

  - 장기간 접속되어 있는 경우, 주기적으로 세션ID를 재할당하도록 설계

 

 

라. 요구사항 별 진단기준 및 방법

0. 공통내용

  - 요구사항 정의서에 보안요구항목에 대한 대책이 수립

  - 아키텍쳐 설계서에 보안요구항목 적용계획이 수립

  - 요구사항 추적표를 통해 요구사항 추적가능 여부

 

1. 세션 간 데이터가 공유되지 않도록 설계

  - Servlet / Controller에서 클래스 멤버변수, 클래스 변수 사용하지 않도록 설계되었는지 확인

  - JSP에서 변수선언하여 사용하지 않도록 설계되었는지 확인

 

2. 세션을 안전하게 관리

  - 로그인 성공 후 세션을 재할당 하도록 정의하였는지 확인

  - 로그아웃 시 할당된 세션을 완전히 제거하도록 정의하였는지 확인

  - 사용자의 일방적인 연결종료에 대해 할당된 세션을 제거하도록 정의하였는지 확인

 

3. 세션ID를 안전하게 관리

  - 세션ID를 서버에서 생성하도록 설계되었는지 확인

  - 세션ID 전송방법을 쿠키로 제한하여 HttpOnly가 설정되도록 설계되었는지 확인

  - 장시간 접속 시 주기적으로 세션ID가 재할당되도록 설계되었는지 확인

  - 로그인 후 세션ID를 재할당하도록 설계되었는지 확인

 

 

마. 진단기준

1. 세션 간 데이터가 공유되지 않도록 설계

  - 세션 간 데이터가 공유되지 않도록 클래스가 설계되었는지 확인

  - 세션 간 데이터 공유를 점검하는 테스트 계획 확인

 

2. 세션을 안전하게 관리

  - 세션이 안전하게 관리되도록 설계되어 있는지 확인

  - 세션이 안전하게 관리되는지 점검하는 테스트 계획 확인

 

3. 세션ID를 안전하게 관리

  - 세션ID가 안전하게 관리되도록 설계되어 있는지 확인

  - 세션ID 노출여부를 점검하는 테스트 계획 확인

 

 

바. 안전한 보안설계 예

No 요구사항 명 해결방안 검수기준
1 세션 간 데이터 공유 예방 컨트롤러 컴포넌트를 상속받는 클래스에 멤버변수가 포함되지 않도록 하고, JSP페이지의 선언부에 변수를 선언하지 않도록 한다. 컨트롤러 컴포넌트를 상속받은 클래스에 멤버변수를 포함하지 않고, JSP페이지의 선언부에 변수가 선언되지 않았다.
2 안전한 세션 관리 모든 화면 오른쪽 상단에 "로그아웃" 버튼을 제공하여 쉽게 로그아웃을 요청할 수 있도록 하고, 로그아웃 후 세션에 저장된 모든 정보가 삭제되도록 한다. 오른쪽 상단에 로그아웃 버튼이 제공되고, 로그아웃 후 세션 정보가 삭제된다.
3 안전한 세션ID 관리 인증에 성공하면 인증 전에 할당한 세션ID를 파기하고, 세션ID를 재할당하여 전달한다. 인증 전/후 다른 세션ID를 사용한다.

 

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday