㈜안랩코코넛 선임컨설턴트 이호선 | ||||||||||||||||||
인터넷의 사용 인구가 계속 증가하는 추세에서 월드와이드웹은 중요한 요소를 차지하고 있다. 특히 전자상거래, 인터넷뱅킹, 커뮤니티, 포럼 등과 사용자 인증을 요하는 월드와이드웹의 비율도 계속하여 높아지고 있다. 월드와이드웹을 구성하는 프로토콜인 HTTP는 세션을 유지하지 않는 프로토콜이기 때문에 인증된 정보를 세션으로서 유지하기 위해 쿠키의 개념이 도입되었다. 본 문서에서는 이러한 쿠키에 대해서 알아보고 보안상 위협 요소, 그리고 그에 대한 대응책에 대하여 알아보기로 한다. | ||||||||||||||||||
| ||||||||||||||||||
| ||||||||||||||||||
Cookie의 종류에는 Persistent Cookie와 Session Cookie(Non-Persistent Cookie)가 있다. 이 두 개를 비교하면 다음과 같다.
| ||||||||||||||||||
| ||||||||||||||||||
클라이언트가 웹서버에 접속할 때 Cookie가 어떤 식으로 교환되는지 살펴보기로 하자. 우선 클라이언트가 해당 서버에 대한 Persistent Cookie를 저장하고 있다면 저장하고 있는 Cookie 정보가 만료되었는지 여부를 확인하여 만료되지 않았다면 해당 Cookie 정보를 보낸다. 이 정보는 Request Header에 포함되어 전달된다. | ||||||||||||||||||
그림 1 초기 접속 시 Request Header에 포함된 Cookie 정보 | ||||||||||||||||||
서버는 클라이언트가 보낸 Cookie 정보를 해석한다. 또한 서버에서 클라이언트에 대해 추가적인 쿠키 정보를 셋팅할 필요가 있을 때는 응답 메시지에 Set-Cookie 정보로 보낸다. | ||||||||||||||||||
그림 2 서버의 Response Header에 포함된 Set-Cookie | ||||||||||||||||||
클라이언트는 해당 Cookie 정보를 받아들이거나 무시할 수 있지만 특별한 브라우저 설정을 하지 않았고 Set-Cookie가 규약을 만족한다면 받아들이는 것이 기본이다. 다음에 해당 웹서버로 클라이언트가 요청을 하게 될 경우 앞서 보냈던 쿠키 정보에 Set-Cookie에 의해 새로이 추가된 쿠키 정보를 포함하여 보낸다. | ||||||||||||||||||
그림 3 Set-Cookie 설정 이후 Request Header에 포함된 Cookie 정보 | ||||||||||||||||||
여기서 웹서버가 브라우저에 보내는 Set-Cookie를 좀 더 상세히 보자. Set-Cookie는 다음과 같은 정보가 포함될 수 있다. | ||||||||||||||||||
브라우저에 전송된 Set-Cookie가 악의적인 경우에 대처하기 위해 브라우저는 다음과 같은 경우 쿠키 정보를 거부할 수 있다. - Domain 값이 '.'으로 시작되지 않는 경우 | ||||||||||||||||||
Cookie(엄밀히 Persistent Cookie) 파일이 저장되는 위치, 그리고 저장 방식은 웹 브라우저 종류와 버전에 따라 상이하다. 예를 들어 Netscape Navigator 4.x 버전은 User Preference 폴더에 cookies.txt라는 파일 하나로 저장하였으며 Opera 4.x 버전은 cookies4.dat라는 파일로서 Opera 디렉토리에 저장한다. 국내에서 가장 많은 유저가 사용하는 인터넷익스플로러의 경우는 도메인마다 파일 하나로서 저장한다. 또한 저장되는 위치는 Windows 버전에 따라 다를 수 있다. 따라서 Cookie 파일을 찾기 위해서는 '파일 찾기'등의 검색 툴을 이용하여 검색어로서 'Cookie'를 입력하여 로컬하드디스크를 확인해보는 것이 쉽다. 이중 윈도우에 저장된 인터넷익스플로러의 Cookie 파일의 예를 보자. 다음은 로컬하드디스크에저장된 hosik@google[1].txt의
내용을 메모장으로 열어 본 경우이다.
여기서 PREF는 Cookie의 Name이며 , ID=e86917dffe2b57c6.. (생략) .. S=R4sPpGRTj7axz2nH 는 Cookie의 Value, google.com/는 Cookie가 사용되는 Domain과 Path를 의미하며 1536은 해당 Cookie가 Secure하지 않음을 의미한다. 이렇게 Cookie 파일 그 자체로서 내용을 분석하는 것은 까다로운 문제이다. IECookieView라는 툴을 이용하면 다음과 같이 저장된 Cookie 내용들을 쉽게 열람하고 분석할 수 있다. | ||||||||||||||||||
그림 4 IECookieView를 이용한 Cookie 정보 열람 | ||||||||||||||||||
여기까지 HTTP Session인 쿠키에 대하여 알아보았다. 12월호에서는 이러한 쿠키에 대한 취약성은 무엇이 있는지 그리고 어떤 공격기법들이 있는지에 대하여 알아보도록 하겠으며, 이에 대한 대응 방법도 같이 알아 보도록 하겠다. | ||||||||||||||||||
<AhnLab coconut> - |
'javascript' 카테고리의 다른 글
자바스크립트 정규식 (1) | 2008.06.18 |
---|---|
객체지향적 고급 자바스크립트 개발을 위한 가이드 (0) | 2007.12.14 |
자바스크립트 정규표현식 (4) | 2007.11.28 |
자바스크립트 성능 향상 팁 (0) | 2007.11.23 |
String Function모음 String을 자바처럼 핸들링해보잣~! (0) | 2007.11.19 |