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

정민교님의 프로필 이미지

작성한 질문수

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

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

공격자의 세션을 피해자가 사용하는 부분이 이해가 안 됩니다

작성

·

154

0

같은 질문아 밑에 있긴한데 답변이 이해가 안가서 다시 질문을 올립니다.공격자가 서버로부터 세션 쿠키를 얻었다는 건 공격자가 로그인을 했다는 거 아닌가요?이 세션 쿠키를 다른 피해자에게 강제로 사용하도록 하는 걸 세션 고정 공격이라고 하는 것 맞나요?이게 맞다면 피해자의 활동을 서버에서는 공격자의 활동으로 인식하게 되는거고, 피해자는이미 공격자의 세션쿠키를 갖고 있으니까 별다른 인증이 필요 없은 것 아닌가요?피해다가 또 로그인을 한다는 부분이 잘 이해가 안 됩니다.아니면, 피해자가 공격자의 세션 쿠키를 들고있음에도 로그인 페이지로 접속하여 로그인을 하게됐을 때, 서버에서 새로운 세션을 생성해서 세션쿠키를 내려주지 않는다면, 공격자도 같은 세션쿠키를 사용해서 사용자 정보 페이지등에 접근이 가능하게 되는 위험을 말한다고 생각하면 될까요?

답변 2

0

정민교님의 프로필 이미지
정민교
질문자

로그인 하지 않소 접속만 해도 세션이 생성되는 건가요?

세션 아이기 변경하는 옵션이 기존 세션을 유지하고 아이디만 바꾸는 거면 사용자가 로그인해도 공격자의 정보가 보이는 거 아닌가요?

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

네 그렇습니다.

세션쿠키는 서버에 접속하게 되면 발급되는 쿠키이기 때문에 로그인하고는 무관합니다.

사용자가 공격자의 세션쿠키를 가지고 있더라도 로그인 하지 않으면 큰 문제가 되지는 않습니다.

서버입장에서는 모두다 익명 사용이기 때문이죠

하지만 공격자의 세션쿠키를 가지고 있는 상태에서 인증을 하게 되면 서버 입장에서는 모두 다 동일 계정의 인증 사용자가 됩니다.

그걸 막는 것이 세션고정보호입니다. 즉 사용자의 세션 쿠키를 변경함으로 서버에서는 공격자의 세션쿠키는 다시 익명사용자와 같이 취급하게 됩니다.

0

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

정민교님의 질문에 대해 세션 고정 공격 및 세션 쿠키와 피해자의 로그인 과정에 대한 혼란이 있으신 것 같습니다. 제공된 정보에서 비슷한 주제를 다루는 질문에 대한 답변이 있으며, 해당 내용을 바탕으로 상세히 설명드리겠습니다.

세션 고정 공격(session fixation attack)은 공격자가 미리 자신의 세션ID를 피해자에게 강제로 사용하도록 만든 후, 피해자가 그 세션ID로 로그인을 하게 해 서버가 피해자를 공격자로 인식하게 만드는 공격 방법입니다. 이 경우 공격자는 피해자가 로그인한 이후 그 세션ID를 사용하여 피해자의 권한으로 서비스에 접근할 수 있게 됩니다.

피해자가 공격자의 세션ID를 사용하여 로그인한다는 것은, 서버입장에서 볼 때 이미 인증된 세션ID로 새로운 인증 시도가 이루어진다는 의미이며, 이 경우 일반적인 웹 어플리케이션은 새로운 세션ID를 발급해줄 수 있습니다. 그러나 이 과정에서 웹 어플리케이션의 구현 방식에 따라, 새로운 세션ID를 발급하지 않고 기존 세션ID을 계속 사용하게 하면 공격자가 계속해서 피해자의 세션을 사용할 수 있는 위험이 발생합니다.

실제 강의 내용과 관련 있는 세션 고정 공격 상황에 대해서 질문있습니다.에서 다루고 있습니다. 이 답변에서는 공격자가 사용자의 쿠키로 로그인을 하게 만들고, 그 이후 사용자가 사이트에 접속하였을 때, 마치 사용자처럼 활동할 수 있게 된다는 과정을 설명하고 있으며, 사용자가 공격자의 쿠키로 로그인할 때 서버에서는 사용자의 쿠키를 새로운 값으로 변경하여 공격자가 사용자와 같은 세션ID를 사용하지 못하도록 하는 세션 고정 보호 기능에 대해서 언급하고 있습니다.

따라서 피해자가 로그인을 수행함으로써 서버에서 새롭게 세션ID를 발급받는 과정이 중요하며, 이 과정을 통해 공격자와 피해자의 세션ID를 분리하여 공격자의 접근을 막을 수 있습니다. 보안 정책에 따라서는 로그인 시 새로운 세션ID를 발급하여 공격자의 세션 고정 시도를 무력화시키는 방안이 일반적으로 권장됩니다.

설명이 이해가 되셨길 바라며, 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏