세션 하이재킹(Session Hijacking)은 네트워크 보안 분야에서 사용되는 용어로, 사용자와 서버 사이에 이미 설정된 세션을 공격자가 불법적으로 가로채어 해당 사용자의 권한으로 시스템에 접근하거나 조작하는 공격 기법을 의미한다.
정의
- 세션(Session): 클라이언트와 서버 간에 지속되는 통신 상태를 식별하기 위해 부여되는 고유한 토큰 또는 식별자. 일반적으로 쿠키, URL 매개변수, 혹은 헤더에 포함된 세션 ID 형태로 전달된다.
- 하이재킹(Hijacking): 기존에 정상적으로 설정된 연결이나 권한을 강제로 탈취하거나 전환하는 행위.
세션 하이재킹은 공격자가 사용자의 세션 ID를 획득한 뒤, 해당 세션을 악용해 원래 사용자로 가장하게 된다. 이는 인증된 상태를 유지하는 웹 서비스, 온라인 뱅킹, 전자상거래, 클라우드 애플리케이션 등에서 심각한 보안 위협을 초래한다.
주요 유형
- 쿠키 탈취(Cookie Hijacking)
- XSS(교차 사이트 스크립팅) 또는 네트워크 스니핑을 통해 클라이언트의 세션 쿠키를 획득한다.
- URL 세션 하이재킹(URL Session Hijacking)
- 세션 ID가 URL 파라미터에 노출된 경우, 로그 파일, 브라우저 히스토리, 레퍼러 헤더 등을 통해 ID를 수집한다.
- 패킷 스니핑(Packet Sniffing)
- 암호화되지 않은 HTTP 트래픽을 중간에서 가로채어 세션 토큰을 추출한다.
- 세션 고정(Session Fixation)
- 공격자가 미리 지정한 세션 ID를 사용자에게 할당하게 만든 뒤, 사용자가 인증을 마치면 해당 세션을 그대로 사용한다.
- 무선 네트워크 공격
- 공중 Wi‑Fi 등에서 ARP 스푸핑, DNS 스푸핑 등을 활용해 트래픽을 가로채고 세션 정보를 탈취한다.
공격 흐름 (일반적인 시나리오)
- 세션 ID 획득: 위에 열거된 방식 중 하나로 세션 토큰을 확보한다.
- 세션 활성화: 획득한 토큰을 이용해 서버에 요청을 전송한다.
- 권한 행사: 해당 사용자의 인증된 상태를 이용해 데이터 열람, 변조, 계정 설정 변경 등을 수행한다.
방어·대책
- 전송 계층 보안: HTTPS(SSL/TLS) 사용을 통해 세션 토큰이 암호화된 채 전송되도록 한다.
- 쿠키 보안 속성 설정:
Secure(HTTPS 전용)와HttpOnly(클라이언트 스크립트 접근 차단) 플래그를 활성화한다. - 세션 재생성: 로그인 직후 기존 세션 ID를 폐기하고 새로운 세션 ID를 발급한다(세션 고정 방지).
- 세션 타임아웃: 비활동 기간이 일정 시간 초과될 경우 세션을 자동 종료한다.
- IP/사용자 에이전트 검증: 세션 사용 시 클라이언트 IP주소, User-Agent 등을 검증하여 비정상적인 변화가 감지되면 세션을 무효화한다.
- 동시 세션 제한: 동일 계정에 대해 동시에 허용되는 세션 수를 제한한다.
- 다중 인증(MFA): 중요한 작업에 대해 추가 인증 절차를 요구한다.
관련 용어
- 세션 피싱(Session Phishing): 피싱 페이지를 통해 사용자에게 세션 인증 정보를 입력하도록 유도하는 공격.
- 세션 복제(Session Replay): 이미 획득한 세션 데이터를 재전송해 재사용하는 방식.
참고 문헌 및 표준
- RFC 6265 – HTTP 쿠키 표준
- OWASP Top Ten 2021 – A2:2021 – 암호화되지 않은 전송 (Cryptographic Failures)
- NIST SP 800-63B – 디지털 인증 가이드라인
세션 하이재킹은 웹 애플리케이션 보안에서 매우 흔히 논의되는 위협이며, 올바른 암호화와 세션 관리 정책을 적용함으로써 위험을 크게 감소시킬 수 있다.