Network Session이란 무엇인가?

네트워크의 연결성이란?

  • 네트워크에서는 사실 요청과 응답 사이에 두 시스템이 연결이 되어 있다는 것을 증명할 어떤 장치가 있어야 연결이 유지되었다고 할 수 있습니다. 만약 연결을 위한 정보가 없다면, 다음과 같은 문제가 발생하게 됩니다.

  • 만약 연결 정보가 없다면, 통신의 연속성이 없습니다.

    • 연결 정보는 연결이 되어 있고, 연결한 사용자가 누구인지에 대한 정보가 들어있습니다.
    • 이러한 정보가 없다면, 통신하고 있는 주체가 누구인지, 언제부터 통신했는지 알 수 없습니다.
    • 연결 정보가 없다면, 현재 인터넷에서 우리가 사용하는 것과 같은 연속적인 통신이 어렵습니다.

  • 만약 연결을 수시로 수행한다면, 서버에 부담이 발생하게 됩니다.

    • 연결이 연속적이지 않다고 하여, 계속 다시 연결을 시도한다면, 서버에 불필요한 연산작업이 늘어나게 됩니다.
    • 이는 서버의 성능 저하로 연결되며, 통신 장애로 이어질 수 있습니다.

Session이란 서버 내에 남아 있는 연결 정보

  • 세션(Session)이란 HTTP 프로토콜을 사용하는 인터넷 사용자가 어떤 웹사이트를 방문할 경우, 사용자와 서버 사이의 연결을 확인하기 위한 정보입니다. 세션은 서버 내부에 저장되며, 저장된 값은 반영구적이며, 사용자가 특정 시간동안 사용되지 않을 경우 폐기될 수 있는 정보입니다.
  • 세션은 쿠키와 마찬가지로 연결 지향 통신을 수행하는데 기초적인 요구사항입니다.

  • 사용자(Client)가 세션을 생성하고 이를 이용한 통신 과정은 다음과 같습니다.

    1.  사용자가 서버에 연결 요청을 보냅니다.
    2.  서버는 이때 세션(Session)ID가 생성 및 저장됩니다
    3.  그리고 이러한 세션 정보를 쿠키에 입력하여, 함께 연결 응답 정보를 전송 합니다.
    4.  사용자는 다음에 연결을 수행할 때 쿠키와 함께 데이터를 요청합니다.
    5.  서버는 이때 쿠키를 확인하고, 쿠키에 입력된 세션정보를 통해 사용자가 누구인지 확인한 후 응답을 하게 됩니다.

Cookie의 취약성

  • 세션 탈취는 다양한 방법으로 일어날 수 있습니다. 사용자의 PC가 감염될 경우, 서버가 감염될 경우, 사용자의 정보를 서버의 취약점을 통해 가져올 수 있을 경우 등이 있습니다. 탈취되는 정보는 아직 활성화 되어 있는 세션 정보입니다.
  • 사용자가 정상적으로 로그인을 한 정보가 아직 유지돼 있을 경우, 해당 세션의 정보로 변조가 가능할 시, 정상 사용자로 둔갑할 수 있습니다.

  • 만약 사용자의 세션(쿠키 안에 있는 세션 정보)가 탈취된다면 시나리오의 순서는 다음과 같습니다.

    1.  사용자(Client) A ~ C가 서버와 통신을 하고, 이로인해 서버에는 A,B,C의 세션ID 정보가 저장되어 있습니다.
    2.  서버는 저장된 세션 정보를 통해 사용자가 누구인지 식별할 수 있습니다.
    3.  그런데, 통신 과정 중 공격자의 어떠한 공격으로 인해 사용자의 세션을 공격자에게 탈취될 수 있습니다.
    4.  탈취가 성공적으로 이루어지고, 아직 세션 ID가 활성화되어 있을 경우, 다음 공격을 수행할 수 있습니다.
    5.  공격을 수행할(요청을 보낼) 때, 탈취된 세션 정보를 쿠키에 입력하여 패킷을 전송합니다.
    6.  패킷을 전송받은 서버는, 악의적인 사용자가 정상적인 사용자일 것으로 판단하여, 요청한 정보를 응답합니다.

  • 위와 같은 경우는 사용가 악의적인 사용자에게 정보를 탈취당했을 경우입니다. 이러한 세션 정보는 XSS, CSRF, SSRF 등의 공격으로 탈취가 가능하며, 이러한 정보를 이용하여 특정 개인의 정보를 조회 및 조작할 수 있습니다.

학습 키워드

  • HTTP Session
  • 연결을 위한 정보
  • 연결 지향 통신