๐ Introduction
CSWSH๋ Cross-Site WebSocket Hijacking์ ์ฝ์๋ก WebSocket์์ Cross domain๊ฐ ์ฌ์ฉ ์ ์ฑ ์ธ Origin ํค๋์ ๋ํ ๊ฒ์ฆ ๋ฏธํก์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค.
์ด๋ฅผ ํตํด ๊ณต๊ฒฉ์๋ CSRF, JSON Hijacking๊ณผ ์ ์ฌํ๊ฒ ์ฌ์ฉ์์ ์ธ์ ์ ๊ฐ์ง๊ณ WebSocket Connection์ ๋งบ์ ์ ์์ผ๋ฉฐ, ์ ๋ณด๋ฅผ ํ์ทจํ๊ฑฐ๋ ์๋ํ์ง ์์ ๊ธฐ๋ฅ์ ์ํํ ์ ์์ต๋๋ค.
How?
WebSocket์ ์ผ๋ฐ HTTP ํ๋กํ ์ฝ ์์์ Upgrade: WebSocket
์ ํตํด ์๋ฒ๋ก ์น ์์ผ์ ์ฌ์ฉํ๊ฒ ๋ค๋ ๋ด์ฉ์ ์ ์กํ๊ณ ์๋ฒ๊ฐ 101 Switching Protocol์ Response๋ก ์ ๋ฌํด์ฃผ๋ฉฐ Client๊ฐ ์๋ฒ๋ก WebSocket connection์ ๋งบ๋ ํํ๋ก ์ฒ๋ฆฌ๊ฐ ์งํ๋ฉ๋๋ค. ์ด ๋ ์๋ฒ๋ Origin ํค๋๋ฅผ ํตํด ์ด ์์ฒญ์ด ์ด๋์ ์จ ์์ฒญ์ธ์ง ์๋ณํ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ ์๋ฒ๊ฐ Origin์ ์ ๋๋ก ๊ฒ์ฆํ์ง ์๊ณ Switching Protocol์ ์ฃผ๊ณ ์๋ค๋ฉด, ์ด๋ค ๋๋ฉ์ธ์์๋ ์ฌ์ฉ์์ ์ธ์ ์ ํตํด WebSocket์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ก Offensive techniques
Detect
ํ ์คํ ๋ฐฉ๋ฒ์ JSON Hihacking๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค. Upgrade ์น ์์ฒญ์์ Origin ํค๋๋ฅผ ์กฐ์ํ์ฌ ์๋น์ค๊ฐ ์๋ ๋ค๋ฅธ ์ฌ์ดํธ์์ WebSocket connection์ ๋งบ์ ์ ์๋์ง ํ ์คํธํ๋ฉด ๋ฉ๋๋ค.
|
|
Exploitation
์์ WebSocket connection์ ์ฑ๊ณตํ๋ค๋ฉด ์ด์ ์ํฅ๋ ฅ์ ๊ฒ์ฆํด์ผํฉ๋๋ค. WebSocket connected ์ํ์์ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ์ค ์ ์๋ ๊ธฐ๋ฅ์ ํ์ ํ ํ ์ฌ์ฉ์์ ์ธ์ ์ผ๋ก ์ํํ์ฌ ์ฌ์ฉ์๊ฐ ์๋ํ์ง ์์ ๊ธฐ๋ฅ์ ์ํํ๊ฑฐ๋, ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฑ์ ์ก์ ์ผ๋ก ๊ณต๊ฒฉ์ ์ํํ๋ฉด ๋ฉ๋๋ค.
|
|
Bypass protection
๋ฌผ๋ก ์๋น์ค์์ Origin ํค๋๋ฅผ ๊ฒ์ฆํ๊ณ ์์ ์ ์์ต๋๋ค. ๋ค๋ง ์ผ๋ฐ์ ์ธ JSON Hijacking๊ณผ ๋์ผํ๊ฒ ์ ๋ขฐ๋ฐ๋ ๋๋ฉ์ธ, ๋ฌธ์์ด ๋ฑ์ ์ด์ฉํด์ ์ฐํํ ์ ์์ต๋๋ค.
e.g
|
|
๐ก Defensive techniques
Origin Verification
Switching Protocol ์ Origin ํค๋์ ๋ํด ์ ํํ๊ฒ ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์์ connection ์ origin ํค๋๋ฅผ ์์๋ก ์์ ํ ์ ์์ง๋ง, ์์ ์๋น์ค์์์ ์์ฒญ์ ํ์ฉํ๊ฑฐ๋ ํน์ ํจํด์ Origin์์ ํ์ฉํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์๋น์ค์์ ์ ๋ขฐํ๋ ๋๋ฉ์ธ๋ง ์ฒ๋ฆฌํ ์ ์๋๋ก ์ ํํ๊ฒ ๊ฒ์ฆํด์ผํฉ๋๋ค.
|
|
SameSite Cookie
CSRF์ ๋์ผํ๊ฒ ์ฟ ํค ๊ธฐ๋ฐ์ ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฟ ํค ์ค์ ์ ํตํด ๋ฐฉ์ดํ ์๋ ์์ต๋๋ค. Set-Cookie ์ SameSite=Lax
๋๋ SameSite=strict
๋ฑ์ผ๋ก ๋ช
์ํ๊ฒ ๋๋ฉด ํด๋น ๋๋ฉ์ธ์์ ๋ฐ์ํ๋ ์์ฒญ๋ง ์ฟ ํค๋ก ๋ถ๊ธฐ ๋๋ฌธ์ Cross-origin ๊ฐ ์ฌ์ฉ์ ์ธ์
์ ์ด์ฉํ๋ ๊ณต๊ฒฉ์ ๋๋ถ๋ถ ๋ฐฉ์ดํ ์ ์์ต๋๋ค.
e.g
|
|
์์ธํ ๋ด์ฉ์ https://www.hahwul.com/2020/01/18/samesite-lax/ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๐น Tools
none