본문 바로가기
웹개발/기타

쿠키의 보안 취약점

by heavenLake 2022. 2. 18.
반응형

 

 출처사이트 : https://uoonleen.tistory.com/m/65

 

쿠키의 보안 취약점

1) XSS(Cross-Site Scripting) 공격

XSS 공격은 자바스크립트가 사용자의 컴퓨터에서 실행된다는 점을 이용한 공격입니다. 자바스크립트에서 "document.cookie"라는 명령어는 사이트에서 쿠키 값을 활용할 수 있게 하는 역할을 하지만 공격자들은 쿠키 값을 탈취하기 위해서 사용하기도 합니다.

 

2) 스니핑(Sniffing) 공격

스니핑이란 단어의 사전적 의미는 '코를 훌쩍이는, 킁킁거리며 냄새를 맡는' 입니다. 사전적 의미와 같이 스니핑 공격은 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나입니다. 수동적 공격에 해당하며, 도청할 수 있도록 설치되는 도구를 스니퍼(Sniffer)라고 합니다.

우리가 웹 페이지에 쿠키를 사용할 경우 서버와 클라이언트는 매번 요청 때마다 쿠키를 주고받게 됩니다. 이때 네트워크 상에 전달되는 쿠키가 스니핑 공격에 의해서 탈취당할 수 있습니다.

 

3) 공용 PC에서 쿠키값 유출

쿠키는 사용자의 하드디스크에 저장되기 때문에 공용 PC인 경우 쿠키를 쉽게 탈취할 수 있습니다. 사용자 개인이 주의해서 사용해야 할 문제인 것 같습니다.

 

4) HTML5 웹 스토리지 정보 유출

웹 스토리지 란?
웹 스토리지는 서버가 아닌, 클라이언트에 데이터를 저장할 수 있도록 하는 HTML5의 새로운 기능입니다. 웹 스토리지와 쿠키의 기능은 매우 유사하지만 쿠키는 약 4kb의 저장 공간 밖에 사용하지 못하는 반면, 웹 스토리지는 약 5MB까지 저장 공간을 이용할 수 있다는 차이점이 있습니다. 웹 스토리지는 <로컬 스토리지>와 <세션 스토리지>를 제공합니다.

4-1) 클라이언트 미검증을 이용

웹 스토리지는 클라이언트 측에서 실행되며 Script를 이용하여 접근할 수 있습니다. 따라서 클라이언트 측에서는 Script 접근에 대한 검증이 필요합니다. 하지만 검증되지 않은 Script 접근이 가능하다면 공격자는 XSS 공격 등을 이용하여 웹 스토리지의 쿠키, 세션 등의 정보를 탈취할 수 있습니다.

4-2) 호스팅 공유

호스팅을 공유하는 사이트의 경우, 하나의 로컬 스토리지에 공유된 모든 사이트의 정보를 저장하게 됩니다. 이때, 공유된 사이트 중 하나의 사이트가 공격 도구로 사용될 경우, 공유된 모든 사이트의 로컬 스토리지 내 정보가 유출될 수 있습니다.

XSS 공격 대응방법

위에서 살펴본 많은 쿠키의 보안 취약점 중에서 XSS 공격에 대응하는 방법 한 가지를 살펴보도록 하겠습니다. XSS 공격은 Script 접근을 통해 이루어지고 "document.cookie" 명령어를 사용합니다. 쿠키는 이런 Script 접근을 막기 위한 HttpOnly라는 옵션을 제공합니다.

HttpOnly 옵션을 설정하고 실제로 작동하는지 살펴보도록 하겠습니다.

저번 포스팅에서 사용한 코드에 빨간줄로 밑줄친 부분만 수정해주었습니다.

쿠키가 생성되었고 클라이언트 측에서 보이는 모습입니다. 보시는 바와 같이 HttpOnly에 체크가 되어 있는 걸 볼 수 있습니다. 이제 "document.cookie" 명령어로 쿠키에 접근해 보겠습니다.

접근해 보았지만 HttpOnly가 체크되어 있던 쿠키들은 출력되지 않는 것을 볼 수 있습니다. 이렇게 HttpOnly 옵션을 사용하면 임의적인 Script 접근을 막을 수 있습니다.

<!>
하지만 HttpOnly 옵션도 단점이 있습니다. SPA(Single Page Application)에서 Script를 통해 쿠키에 접근해야 하는 경우 HttpOnly 옵션이 활성화되어 있다면 쿠키에 접근할 수 없다는 단점이 있습니다.




결론

쿠키는 유용하지만 많은 보안 취약점이 존재합니다. 보안성만 본다면 암덩어리네요!
항상 보안에 유의해서 사용하는 것이 좋을 것 같습니다.

 

 

반응형

댓글