Spring/Security
[Security] 고정세션 보호 - 고정세션 공격방어!
석석's
2021. 12. 28. 22:23
아래 사진과 같이 공격자가 우리에 was에 접근하게 되어 jsessionid를 가진 상태에서 클라이언트에게 자신의 jsessionid 를 몰래 넘겨 클라이언트가 인증처리를 한 후 부터는 공격자와 클라이언트가 같은 jsessionid를 가지고 세션을 공유하기에 공격자가 세션이 필요한 영역에 접근할 수 있는 문제가 있다.
이것을 "고정세션 공격" 이라고 하는데 스프링 시큐리티의 API를 활용하여 이 문제를 해결 할 것이다.
왼쪽이 사용자 , 오른쪽이 공격자라고 해보자 공격자가 사용자에게 자신의 jsessionid를 몰래 넣어 추후 사용자의 인증처리를 통해 공격자 자신도 리소스에 접근할 수 있게 해볼것이다.
공격자가 자신의 세션ID를 사용자에게 넣은 모습이다.
사용자가 인증을 끝마치고 공격자는 이제 자신도 세션을 공유하기에 리소스에 접근 해볼 것이다.
루트 경로로 접근하게되면 공격자도 접근이 잘 된것을 확인 할 수 있다.
이제 이러한 고정세션 공격을 막아보자!!!
이러한 공격을 막기 위해서는 세션ID를 인증할 때마다 새롭게 발급하여 클라이언트에게 주면 공격자는 이제 자신이 클라이언트에게 세션ID를 몰래 넣었다 한들 인증이후에는 달라졌기에 무의미 해진다.
먼저 사용자와 공격자의 쿠키 모습이다. 아까와 마찬가지로 동일한 세션ID를 가지고 있어보자
인증이후 세션ID가 달라져서 공격자가 인증없이는 접근할 수 없는 모습이다.