Session fixation

✒️ 2025-05-16 09:08 내용 수정


공격자가 session ID나 session 토큰을 고정한 뒤, 이를 통해 인증된 사용자의 권한을 획득하는 공격 기법


공격 방법


공격 방지법

  1. Session identifier(ID, token)를 GET/POST 변수로 받지 않는다.
    • 사용자의 복사 붙여넣기와 같은 동작에 SID가 유출될 수 있고, SID가 브라우저 history나 웹 서버 로그 등에 저장되기 때문에 URL 변수로 받지 않는 것이 중요하다.
  2. 매 요청마다 새로운 Session ID를 생성한다.
    • 로그인 시 새로운 session ID를 생성하는 방법으로 방지할 수 있다.
    • 이는 공격자가 세션을 고정하더라도 해당 Session ID가 만료되어 사용할 수 없도록 만든다.
  3. 서버에서만 생성된 SID만 받도록 설정하는 것도 방법이나, 모든 session fixation을 막을 수 없기 때문에 주의해야 한다.
    • 공격자가 미리 타겟 사이트에 접속하여 서버로부터 온 SID를 받아 피해자에게 URL 등으로 전송할 수 있기 때문이다.
  4. Session Timeout을 설정한다.
    • Session 만료 시간을 설정하여 세션이 오랫동안 유지되지 않는 경우 Session을 삭제하는 것으로 공격자가 Session ID를 다시 사용하기 어렵게 만든다.