1580, 5/79 회원가입  로그인  
   twinz
   - [보안노트] 쿠키

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=838 [복사]


(1) 쿠키란?
웹 서비스는 기본적으로 한번 지나친 페이지의 상태를 기억하지를 못한다.
(HTTP is stateless protocol) 이 말은 사용자가 사이트에 접속할 때 마다 새로운 세션을 만들어 전에 수행했던 동일한 작업을 수행해야 한다는 말이며, 세션에 대한 정보를 유지하면, 수행하지 않아도 되는 작업을 중복 수행하도록 하여 사용자의 불편을 가중시키는 일을 초래한다. 이를 극복하기 위해서 웹 서버와 사용자(client)는 쿠키라는 메커니즘을 사용하여 세션 연결에 필요한 데이터를 유지시킨다. 즉, 쿠키는 "HTTP 사용 시, 세션에 대한 정보 공유를 위하여 웹 서버와 사용자간 데이터를 주고 받는 메커니즘" 이라고 표현할 수 있다. 이러한 쿠키를 이용하여 사용자는 웹 브라우저에 이전 페이지 접속 정보를 저장했다가 다음 접속 시 그 정보를 재 사용하여 좀더 편리한 웹 서비스를 받을 수 있다.
또한, 쿠키를 웹 서버에 인터넷 사용자가 방문할 때 그 사용자의 하드디스크에 기록되는 짤막한 정보라고 표현하기도 한다. 즉, 쿠키는 웹사이트에서 사용자의 하드디스크에 집어넣는 특별한 텍스트 파일로, 웹사이트와 사용자의 컴퓨터를 매개해주는 정보를 담고 있는 소량의 파일(4kB 이하의)이 보내진다. 이 모습이 과자를 먹을 때 항상 남는 과자 부스러기와 유사하다고 하여 붙여진 이름이다.

(2) 쿠키의 필요성
A. 웹 서버와 사용자 매개기능
쿠키에는 기본적으로 개인 ID와 비밀번호, 방문한 사이트 등의 정보가 담겨 사용자 PC 하드디스크에 저장된다. 이 정보로 사용자가 다음에 해당 사이트를 찾을 경우 웹 서버에서는 그가 누구인지, 어떤 정보를 주로 찾았는지 바로 파악할 수 있다. 즉 사용자가 어떤 제품을 구입 했는지, 어떤 분야에 관심이 많은지를 파악할 수 있어 웹사이트 운영자 측에서는 쿠키를 이용한 target 마케팅이 가능하다.
그러나 사용자 입장에서는 프라이버시를 침해의 가능성이 존재한다.


B. 사용자의 불편 해소
쿠키를 사용할 경우 사용자는 웹사이트의 다른 서비스를 방문할 때마다ID와 비밀번호를 입력할 필요가 없다. 그러나, 쿠키를 사용하지 않으면 사용자는 동일 웹사이트에서 다른 서비스 페이지를 방문할 때마다 회원 정보를 계속 입력해야 하는 불편함이 있다. 따라서, 사용자의 편리성을 고려한다면, 쿠키 사용이 불가피하다. 특히 웹 브라우저를 이용해 전자 상거래를 할 경우 많은 전자상거래 서버에서는 사용자가 쿠키를 사용하고 있다.


(3) 쿠키의 내용
쿠키에 저장되는 정보는 웹 서버의 이름, 쿠키의 이름, 존속기간, 쿠키 값 등이다. 여기서 쿠키 값은 쿠키프로그램의 제작자(어플리케이션 개발자) 만이 알 수 있는 값으로 사용자는 이를 알 수가 없다. 아래의 내용은 쿠키에 저장 가능한 대표적인 정보들이며, 그 내용은 쿠키 프로그램 제작자가 어떻게 설정하느냐에 따라 다를 수 있다.
사용자가 그 웹사이트를 방문해서 남긴 자취(이름, 암호, 주민등록번호, 신용카드번호 등)를 남길 수 있다.

사이트를 방문하면서 둘러본 페이지, 즐겨 찾은 페이지

사용자의 검색패턴

배너광고

위와 같은 다양한 정보가 저장될 수 있는 점에서 쿠키를 잘 사용하면 웹 사이트 개발자는 누가 자기들 사이트를 방문했는지를 알 수 있고 어느 국가의 어떤 지역 고객이 주로 방문했는지, 고객들의 취향이 무엇인지, 얼마나 많은 사람들이 특정 서비스나 상품에 관심을 보였는지도 알 수 있다. 결국 이러한 정보를 잘 활용하여 성공적인 인터넷 비즈니스에 활용 할 수 있다. 하지만, 쿠키는 사용자의 클릭패턴에 대한 소극적인 정보를 담을 뿐만 아니라 사용자의 중요한 개인정보(회원가입 시 입력한 정보 등)를 저장할 수 있다는 점에서 개인정보침해에 대한 끊임없는 문제를 야기 시키고 있다.


(4) 쿠키의 저장장소
쿠키 파일은 대개 자신이 사용하는 브라우저와 관련한 특정 디렉터리
밑에 저장된다. 이 경우 client의 특정 장소에 저장되며, 웹 브라우저 가동 중에만 정보를 메모리에 저장하는 방식이 있다.
① Netscape 사용자의 경우 탐색기에서 "cookies.txt"라는 파일을 찾으면 쿠키가 저장되어 있는 위치를 찾을 수 있다.
② Microsoft internet Explorer에서는 쿠키를 하나의 텍스트 파일로 만들어 저장하고 있으며, Windows2000의 경우에는 "Documents and Settings \jis(user계정)\cookies\"에 저장된다 (파일이름 예시:jis@empas[2].txt)


(5) 쿠키의 동작원리
A. Request : 클라이언트가 서버측에 문서를 요청 한다.
B. Call : 서버는 Cookie를 검사하기위해 CGI를 호출한다.
C. Set : Cookie가 없는 경우에 CGI는 Set-Cookie 헤더를 포함한 출력을 서버에 반환한다.
D. SetCookie : Set-Cookie 헤더에 부가 헤더를 덧붙여 Body 함께 클라이언트에 전송한다
E. Save : Set-Cookie 헤더를 받을 클라이언트는 Cookie 정보(Name=Value, Expires Date, Path, Domain)를 Cookies.txt라는 파일에 저장한다.
F. Read
G. Send Cookie : Cookies.txt에 등록된 동일한 Domain의 동일한 Path를 사용자가 요청하는 경우 클라이언트는 Cookie 정보를 Cookie: 헤더를 이용해서 서버로 전송한다.
H. Call : 서버는 클라이언트로부터 받은 Cookie 정보를 환경변수(HTTP_COOKIE)에 저장하고 CGI를 호출한다.
I. HTTP_COOKIE : CGI는 HTTP_COOKIE로부터 Cookie 정보를 복원해서 서버로 전송한다

쿠키의 취약성 -
(1) 쿠키 정보 유추에 대한 취약성
쿠키 생성시 사용되는 데이터 및 알고리즘의 단순성이 주요 취약성으로 brute force와 같은 공격으로도 유추가 어려운 알고리즘 사용과 추측이 어려운 데이터를 입력 값으로 사용하여 쿠키 값을 생성하여야 한다.

(2) 네트워크 상에서의 도청에 대한 취약성
웹 서버와 사용자 간 네트워크(인터넷 등)를 통해 쿠키 정보를 교환하는 과정에서 발생 가능한 취약성으로 네트워크 스니핑으로 쿠키 정보를 빼낼수 있다. 쿠키 정보를 암호화하는 것 보다는 SSL또는 VPN등을 이용하여 네트워크 경로를 secure(안전)하게 유지하는 것이 더 좋은 방안이다.

(3) 웹 서버의 의도적인 Link에 대한 취약성
웹 서버에 로그인한 상태로 같은 도메인 내의 악의적인 코드가 포함된 페이지를 방문하였을 경우 발생 가능한 취약성으로 그 대응 책은 두 가지로 나타낼 수 있다.
첫째로 홈페이지 초기 개발시 개발자의 의도적인 코드가 있는지 확인해야 하며, 운영 중에는 철저한 변경 관리 및 홈페이지의 지속적인 무결성 점검을 통해 해커에 의한 악성 코드 삽입을 통제하여야 한다.
둘째는 사용자 측면에서 주의할 사항이다. 사용자는 사용 중 타 사이트로 이동하는 것을 자제해야 한다. 해커들은 게임, 동영상 등의 자료에 악의적인 코드를 포함한 후, 사용자 방문시 자동으로 쿠키정보를 빼내도록 사이트를 구성할 수 있다.

(4) 사용자가 자리를 비운 경우에 대한 취약성
사용자의 부주의로 로그인 후 자리를 비웠을 때 타인이 3.5" 디스켙등을 이용하여 쿠키 정보를 복사하여 재사용이 가능한 위험이 존재한다.

(5) 서버간 사용자 정보 교환에 대한 취약성
신뢰 관계를 맺고 있는 서버간 세션 관리를 위하여 사용자 정보를 교환할 수 있으며, 이 구간(네트워크)에서 정보를 도청 할 수 있다.

(6) 해킹프로그램에 대한 취약성(email)
웹 서버에 로그인한 상태로 악성 코드(JAVA 스크립트 등)가 포함된 웹 페이지 메일을 읽을 경우 메일에 포함된 스크립트와 같은 악의적인 코드가 동작하여 쿠키 정보 유출이 이루어 질 수 있다.
이 취약점은 사용자가 웹 서버 log in 후, 메일을 읽지 않으며 막을수 있으며, 사용자가 log in 후 메일 송,수신을 위해 메일 서비스 제공 사이트로 연결을 요청할 경우 강제적으로 log out 시키거나, 경고 메시지를 보여주어 사용자의 주의를 환기 시켜야 한다.

(7) 클라이언트 백도어에 대한 취약성
사용자 PC에 백도어 등 악성프로그램이 깔려 있는 경우 쿠키 정보 뿐만 아니라 모든 정보를 해커에게 빼앗길 수 있다. 이 취약점은 사용자가 바이러스 백신, PC 보안 제품 등을 설치하여 스스로 관리 하여야 한다.

-쿠키의 보안요구사항 -
쿠키는 토큰 기반의 인증을 지원하기 때문에 정확한 토큰을 제공하는 것이 매우 중요하며, 안전한 토큰 기반 인증을 위해서 다음과 같은 보안성이 충족되어야 한다.

◆ 쿠키의 값이 추측 불가능 해야 한다.
◆ 쿠키가 서버에서 클라이언트로 클라이언트에서 서버로 전송될 때 외부의 사용자가 쿠키의 값
◆ 을 가로챌 수 없어야 한다.
◆ 쿠키가 클라이언트에 저장되어 있을 경우 이 값이 외부로 유출되지 않도록 한다 .
◆ 쿠키의 유효기간이 보안성 강도에 따라 적용되어야 한다.
◆ 쿠키 개발자와 운영자의 역할을 분리한다.
◆ 사용자는 올바른 방식으로 웹 서비스를 사용한다.
◆ 적절한 PC 보안 대책이 필요하다.

출저 - 시큐어리티 님의 블로그

  Hit : 8591     Date : 2007/08/28 10:34



    
brendabiz333 Everybody is very recommend to visit the portal which collected a lot of interesting sites:
http:/
2008/02/22
brendaorg333 Everybody is very recommend to visit the portal interesting sites:
<a href=http://farise.cn target=_blank>http://farise.cn</a>
2008/02/24
dansssblock Only best free news! :
<a href=http://american-citysearch.com target=_blank>http://american-citysearch.com</a>
2008/03/03
buzi Hi! I found a nice online pharmacy! Viagra 10 pills x 25 mg 2008/11/01
1500   - [리눅스팁] 리눅스 자동실행     twinz
08/28 7585
1499   - [보안팁] 프로그래밍 코드보호 (1)     twinz
08/28 9898
1498   - [보안팁] 프로그래밍 코드보호 (2)     twinz
08/28 7478
1497   - [보안팁] 리눅스     twinz
08/28 7273
  - [보안노트] 쿠키[4]     twinz
08/28 8590
1495   - [보안노트] 포트스캐닝 (1)     twinz
08/28 7573
1494   - [보안노트] 포트스캐닝 (2)     twinz
08/28 8991
1493   - [보안노트] 봇[1]     twinz
08/28 7211
1492   - 컴퓨터 바이러스의 종류[1]     twinz
08/27 8211
1491   - 다이하드 4.0 파이어세일 현실 가능[2]     twinz
08/25 8204
1490   - 도청 , 해킹 불가능한 세상이온다     twinz
08/25 7543
1489   - 백업명령어의 종류     twinz
08/27 8634
1488   - 무시되는 오프 스탠더드보안     twinz
08/27 6619
1487   - 서버관리자를 위한 50가지 비법     twinz
08/27 8758
1486   - 시스템 보안     twinz
08/27 6634
1485   - 어셈블리어 1[1]     twinz
08/27 8518
1484   - 어셈블리어 2     twinz
08/27 8360
1483   - 어셈블리어 3[1]     twinz
08/27 6616
1482   0번섹터 베드섹터일경우..[2]     ROK.AF
03/02 7541
1481   1[1]     백민준천재
08/31 4341
[1][2][3][4] 5 [6][7][8][9][10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com