본문 바로가기

old/Cyber Security

사이버 보안: 세션 고정이란?

반응형

정의

세션 고정(Session Fixation)은 웹 응용 프로그램 보안에서 발생할 수 있는 취약점 중 하나입니다. 이 취약점은 공격자가 사용자의 세션 식별자(session identifier)를 제어하여 인증된 세션에 접근할 수 있는 상황을 의미합니다.

취약점 발생 지점 리스트

  • 세션을 발행하는 페이지
  • 세션이 있어야만(인가를 받아야지만) 들어갈수 있는 페이지

취약점 검증 방법

  • 발급된 세션이 로그아웃후 다시 로그인 해도 똑같은 경우
  • 로그인하기 전의 세션과 로그인한 후의 세션이 똑같은 경우
  • 세션을 재발급 안하는 경우(응답에서 set cookie)가 존재하지 않는 경우.

공격법

공격 시나리오

  1. 공격자는 로그인해서 세션 식별자를 생성합니다.
  2. 사용자에게 이 세션 식별자를 강제로 전달합니다.
  3. 사용자가 웹 응용 프로그램에 로그인하고 세션을 시작합니다.
  4. 이미 세션이 똑같으므로, 공격자는 새로고침을 해서 인증된 세션에 접근할 수 있게 됩니다.

공격 시나리오 발생 과정

세부 과정 설명

  1. 공격자가 웹 응용 프로그램에 인증 요청을 보냅니다.
  2. 웹 응용 프로그램은 인증을 위해 세션 식별자를 생성합니다.
  3. 세션 식별자는 사용자에게 전달되어 세션을 시작하는 데 사용됩니다.
  4. 공격자는 사용자에게 이전에 생성한 세션 식별자를 강제로 전달합니다.
  5. 사용자가 세션을 시작할 때, 공격자가 전달한 악의적인 세션 식별자를 사용합니다.
  6. 웹 응용 프로그램은 인증 확인을 수행하고, 악의적인 세션 식별자를 유효한 것으로 간주합니다.
  7. 공격자는 악의적인 세션 식별자를 사용하여 인증된 세션에 접근할 수 있게 됩니다.

대응방법

  1. 세션 식별자의 무작위성: 세션 식별자는 무작위로 생성되어야 하며, 예측하기 어렵도록 해야 합니다.
  2. 세션 식별자의 변경: 사용자가 인증되거나 권한을 얻을 때마다 세션 식별자를 변경해야 합니다.
  3. 안전한 세션 관리: 세션 식별자는 안전하게 저장되어야 합니다. 쿠키를 사용하는 경우에는 쿠키 보안 속성인 'Secure'와 'HttpOnly'를 설정하여 안전한 전송과 클라이언트 측 스크립트에 대한 보호를 제공해야 합니다.
  4. 세션 모니터링 및 로깅: 시스템에 대한 세션 활동을 모니터링하고 로깅하여 의심스러운 활동을 탐지하고 대응할 수 있도록 해야 합니다.
반응형