BLOG ARTICLE 보안 | 3 ARTICLE FOUND

  1. 2007/07/23 쿠키는 어떻게 조작되는가? (1)
  2. 2007/07/03 G마켓 보안 관련 기사
  3. 2007/01/02 내 PC에 설치된 소프트웨어는 안전한가?

웹보안 시리즈 2번째 포스팅 '쿠키 조작' 에 대한 이야기이다. 원래 하려던 이야기는 쿠키가 아닌데, FattyMarine 님의 답글도 있고 하니 조금만 더 써볼까 한다. 이미 다른 포스팅을 드래프트로 걸어 놨는데, 순서가 바뀌게 되었다. 이건 어떻게 풀어야할지...

네이버 백과사전에서 찾은 쿠키의 정의는 아래와 같다.

인터넷 웹사이트의 방문기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보.

고객이 특정 홈페이지를 접속할 때 생성되는 정보를 담은 임시 파일로 크기는 4KB 이하로 작다. 쿠키는 애초 인터넷 사용자들의 홈페이지 접속을 돕기 위해 만들어졌다. 특정 사이트를 처음 방문하면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 다음에 접속했을 때 별도 절차 없이 사이트에 빠르게 연결할 수 있다.

쿠키는 웹사이트에서 사용자 PC(웹브라우저)에 저장해 놓은 Data 이다. 필요에 의해 불러 쓰고, 또 저장하고.. 이 과정을 반복하면서 쿠키를 '활용' 한다.

우리가 웹브라우저에서 웹사이트에 접속하면 초기 HTML 페이지와 JS, CSS, 이미지 파일 등의 구성요소를 다운로드해서 페이지를 보여준다. 필요한 구성요소를 받기 위해 웹서버에 요청(Request) 할 때마다 Request Header 에 쿠키 정보를 함께 보낸다.

위 그림을 보면 알겠지만 사실 쿠키가 Request Header 의 거의 대부분을 차지하고 있다. 1KB 정도 크기의 쿠키를 사용하는 웹사이트를 방문하면 웹브라우저에서 이미지 파일을 하나 가져올 때마다 쿠키를 포함해서 약 2KB 정도의 용량을 웹서버에 업로드 해야 한다.  이 때문에 대용량 쿠키를 사용하면 사이트 로딩속도가 느려진다!

아래와 같은 쿠키 사용 프로세스를 가진 사이트가 있다고 가정해보자.

1. 처음 웹사이트에 접속하면 '비로그인' 상태이며 쿠키에는 아무런 내용이 없다.
2. 로그인 과정을 거치면서 사용자 쿠키에 로그인ID를 내려보낸다.
3. 사이트에서 클릭 할 때마다 쿠키에 담긴 로그인ID를 웹서버로 전송하고, 웹서버는 쿠키 값을 받아 로그인 상태로 해석한다.
4. 로그아웃 버튼을 누르면 쿠키를 삭제한다.

언뜻 보기에는 아무런 문제가 없어 보인다. 하지만, 이런 순서로 진행된다면 어떨까?

1. 웹사이트에 접속하자마자 비로그인 상태에서 로그인ID 쿠키를 강제로 셋팅한다.
2. 사이트에서 클릭 할 때마다 쿠키에 담긴 로그인ID를 웹서버로 전송하고, 웹서버는 쿠키 값을 받아 로그인 상태로 해석한다.
3. 로그아웃 버튼을 누르면 쿠키를 삭제한다.

웹서버는 헤더에 담긴 쿠키에서 로그인ID 값이 있는지 검사해서 로그인 상태인지 판단한다. 하지만 쿠키가 웹서버에서 셋팅했는지 사용자가 셋팅했는지에 대한 판단은 불가능하다. 그냥 쿠기 값이기 때문이다.

실제로 어떻게 동작하는지 확인해 보자.

모 사이트에 접속한 화면인데, 위와 같이 로그인창이 나온다.

javascript:alert("Cookies: "+document.cookie)

주소창에 위의 내용을 붙여 넣으면 현재 사이트의 쿠키 정보를 보여준다.

여기에서는 로그인 아이디 정보는 없다.

javascript:document.cookie='loginid=userid;path=/'

임의로 쿠키값을 셋팅하기 위해 웹브라우저 주소창에 위의 내용을 붙여 넣는다.

웹브라우저는 주소줄에 입력한 내용을 표시해준다. 뒤로 가기 버튼을 눌러 방금 전 화면으로 돌아가보면
(새로 고침이 필요한 경우도 있다)

이렇게 로그인 되어있다. 물론 쿠키가 암호화 되지 않았기 때문에 가능한 초보적인 실수이다.

Fiddler 와 같은 Proxy Tool 을 사용하면 웹브라우저와 관계 없이 내가 원하는 쿠키를 100% 조작할 수 있다.

static function OnBeforeRequest(oSession:Fiddler.Session)
{
    if (oSession.host == "image.auction.co.kr"){
       oSession.oRequest["Cookie"]="pcid=XXXX";
    }

}

위와 같은 Fiddler Rule 을 사용하면 image.auction.co.kr 에 접속할때는 pcid=XXXX 라는 쿠키만 전송한다.

실제로도 위와 같이 전송되었다. 위의 내용은 단순한 예이며, 마음 먹기에 따라 얼마든지 원하는 내용으로 수정해서 웹서버를 속일 수 있다.

쿠키는 웹서버에서 세션으로 처리해야 하는 일을 대신해 준다. 서버 여러 대를 동시에 운영하는 로드밸런싱 환경에서 세션 공유와 같은 처리하기 어려운 문제도 쉽게 해결해 준다. 하지만 보안 마인드 없이 사용하면 허점을 노출하게 되며, 아무리 작은 허점이라도 비지니스에 치명적인 위협이 될 수 있음을 알아야 한다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

G마켓, 나스닥 상장 기점으로 보안수준 급상승

옥션 DR 센터 구축 기사와 같은 날에 나온 기사인데, 묘한 비교가 되네요.

중복 방문자를 제외한 하루 순 방문객(Unique Visitor)이 100만명을 넘어서고 (옥션)
1일 평균 270만 명이 접속하고 (G마켓)
-> 방문자 발표치가 2배 차이?

년 1회 안전진단을 실시하고 있으며 보안컨설팅도 계획하고 있다 (G마켓)
-> 년 1회 안전진단은 정보보호안전진단을 말하는거 같은데, 그럼 SOX 는???

현재 G마켓 보안팀은 6명으로 구성돼 있으며 (G마켓)
-> 응? 정말?
이올린에 북마크하기(0) 이올린에 추천하기(0)

 
컴퓨터 초보자부터 능수능란하게 다루는 사람까지 다양한 소프트웨어를 사용합니다. 가장 기본이 되는 OS (주로 윈도우)가 있겠고, 어도비 아크로뱃 리더, 압축 프로그램, 동영상 재생 프로그램 등등 많은 프로그램이 설치되어 있습니다.
 
이 중에는 보안에 취약한 프로그램 내지는 아주 문제가 되는 버전을 사용하는 경우도 있겠지만, 웬만큼 PC에 전문가가 아니고서는 일일이 찾아내기가 쉽지 않습니다. 개인용 PC가 아닌 게임방 등의 공용 PC라면 문제가 더욱 심각해집니다. 누군가가 일부러 취약한 버전으로 설치했을 가능성도 있습니다.
 
Secunia Software Inspector 는 PC에 설치된 소프트웨어의 버전을 조사해서 보안에 문제가 있는 버전인지 조사해 줍니다. 사이트에 접속해서 'Start Now' 버튼을 누릅니다.

 
아, 이런.. 저도 보안이 취약한 버전을 사용하고 있었군요.
어도비 리더 7.x 버전은 보안에 취약하니 8.0 으로 업그레이드 하라고 알려줍니다.



 
아직까지는 Microsoft, Adobe, Real, Winzip 등 지원하는 프로그램이 다양하지는 않지만, 가장 기본적인 프로그램이니 한번씩 체크해 보는것도 좋을거 같네요.
 
http://secunia.com/software_inspector
이올린에 북마크하기(0) 이올린에 추천하기(0)