WebSocket Origin 미검증 CSRF (WEB-39)
WEB-39 WebSocket CSRF
WebSocket Origin 미검증 CSRF:
WebSocket 핸드셰이크에서 Origin 헤더가 검증되지 않으면,
다른 도메인의 페이지에서 WebSocket 연결을 열 수 있고,
자동으로 브라우저 쿠키가 전송되어 CSRF 공격이 가능합니다.
WebSocket 핸드셰이크 시뮬레이션
WebSocket 핸드셰이크
⚠️
CSRF 취약점 감지! Cross-Origin에서의 WebSocket 연결이 허용되었습니다.
이를 통해 다음과 같은 공격이 가능합니다:
- 다른 도메인의 JavaScript에서 WebSocket을 열어 타겟 서버로 명령 전송
- 브라우저 자동 쿠키 전송으로 인한 인증된 요청
- CSRF 공격: 사용자가 모르는 사이에 악의적인 메시지 전송
WebSocket 핸드셰이크 요청:
GET /chat HTTP/1.1
Host: localhost:8000
Upgrade: websocket
Connection: Upgrade
Origin: unknown
Sec-WebSocket-Key: b432a245560e8057
Sec-WebSocket-Version: 13
응답:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: [base64(SHA1(key + GUID))]