인프런 커뮤니티 질문&답변

김동민님의 프로필 이미지
김동민

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

세션 고정 보호 - sessionManagement().sessionFixation()

세션 고정 공격 상황에 대해서 질문있습니다.

작성

·

286

·

수정됨

0

수업에서 배운 세션 고정 공격은 먼저 공격자가 서버에 로그인 인증을 완료한 후 세션ID를 받은 뒤에 피해자에게 몰래 심는 거잖아요.

해당 세션ID로 피해자가 서버에 접속하는 걸텐데, 서버 입장에선 공격자의 신상으로 이미 인증이 되어 있어서 피해자의 모든 요청에 허용을 하지 않을까요? 굳이 피해자가 다시 로그인을 하는 상황이 머릿속에 그려지지 않습니다.

또 피해자가 사이트에 접속했을 때 이미 인증이 되어 있기 때문에 다른 사람으로 로그인이 되어 있을테고, 그러면 오히려 공격자의 신상이 피해자에게 노출되는 꼴 아닌가요..? ㅎㅎ 그렇다고 피해자가 다시 로그인을 하기 위해서 로그아웃하는 순간 악의적인 세션ID는 더 이상 사용하지 못하게 되구요..

궁금합니다!

답변 2

1

정수원님의 프로필 이미지
정수원
지식공유자

아 네

공격자가 먼저 로그인을 하는 것이 아니라 사용자가 공격자의 쿠키로 로그인을 하는 상황을 말하는 것입니다.

즉 공격자가 심어놓은 쿠키로 사용자가 로그인을 하게 되고 그 이후 공격자가 사용자의 사이트에 접속하게 되면 마치 사용자처럼 활동할 수 있다는 의미입니다.

그래서 사용자가 공격자의 쿠키로 로그인할 때 서버에서는 사용자의 쿠키를 다시 새로운 값으로 변경한다는 것이 세션고정보호이고 그렇게 되면 공격자가 사용자의 사이트를 접속하더라도 이제 더 이상 공격자의 쿠키와 사용자의 쿠키는 틀린 상태이기 때문에 공격자에게 사용자의 정보가 노출되지 않는다는 것을 의미합니다.

강의에서는 이 부분을 설명하고 있습니다.

 

김동민님의 프로필 이미지
김동민
질문자

감사합니다! :)

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 세션 고정 공격에 대해 답변드리겠습니다. 세션 고정 공격에서는 공격자가 임의로 생성하거나 획득한 세션 ID를 피해자에게 강제로 사용하게 만들어 서버가 피해자를 공격자로 오인하게 하는 것이 핵심입니다. 이 과정에서 피해자가 해당 세션 ID로 서버에 접속했을 때, 서버 입장에서는 이미 인증된 사용자로 판단하기 때문에, 피해자는 별도로 로그인 과정 없이 공격자의 권한을 가진 상태로 서비스를 이용하게 되죠.

하지만, 이런 상황에서 피해자가 사이트 내에서 자신의 계정 정보를 확인하면 공격자의 정보가 노출되는 문제가 발생할 수 있습니다. 이는 공격자에게도 리스크가 될 수 있는 부분입니다. 또한, 피해자가 로그아웃을 하는 순간 공격자가 심은 세션ID는 무효화되어 더이상 공격에 사용할 수 없게 됩니다.

세션 고정 공격을 방지하기 위해 웹어플리케이션은 로그인 시 새로운 세션ID를 발급하여 사용하는 등의 보안 조치를 취하는 것이 중요합니다. 게시하신 내용 외에도 보안에 관련하여 더 알아보고 싶으시다면 Spring Security 등의 프레임워크를 활용하는 것도 좋은 방법입니다. Spring Security는 Spring Boot와 함께 사용할 수 있으며 보안 관련 다양한 기능을 제공합니다. 관련된 내용은 Spring Security 프로젝트 페이지를 참고하시길 바랍니다.

참고자료:
- Spring Security 프로젝트 페이지: https://spring.io/projects/spring-security

도움이 되었기를 바랍니다. 추가적인 질문이 있으시면 언제든지 문의해 주세요.

김동민님의 프로필 이미지
김동민

작성한 질문수

질문하기