추석연휴는 잘 보내셨나요? ㅎㅎ 저는 조부모님댁이 서울이라... 회사서 휴일당직도 하고, 휴일같지 않은 휴일을 많이 보냈답니다.ㅎ
오늘은 자바스크립트 하이잭킹에 대해서 소개하겠습니다. Hijack이란 단어는 "강탈하다", "뺏다"의 뜻이 있습니다.
단어에서 느끼듯이 주제는 그러합니다. ^^. 이번 글은
www.fortifysoftware.com에서 제공한 pdf의 내용이며,
오역이 있더라도 잘봐주세요. 그리고 중요치 않다고 생각되는 부분은 과감하게 생략토록 할것이고, 문장의 매끄러움을 위해 의역도 포함했습니다.
Javascript Hijacking
Brian Chess, Yekaterina Tsipenyuk O'Neil, jacob West
{brain, katrina, jacob}@fortifysoftware.com
march 12, 2007
요약Ajax어플리케이션이라 불리우는 리치 웹 어플리케이션들은 데이터 전송기술로서 자바스크립트를 사용하여 만든다. 이번 지면에서는 제목처럼 자바스크립트 하이잭킹, 즉 취약성에 대해서 다룬다.
공격은 웹브라우저의 강제 SOP(Same Origin Policy)를 우회하는 <script>태그를 사용하여 시작된다.
전통적인 웹어플리케이션들은 취약하지 않았다. 왜냐하면, 과거의 것들은 데이터 전송기술로 자바스크립트를 이용하지 않았기 때문이다.
우리는 유명한 12개의 Ajax프레임워크를 분석했다.[ 서버사이드용 4개 : DWR(Direct Web Remoting), Atlas(ASP.NET Ajax), xajax, GWT(Google Web Toolkit), 클라이언트용 라이브러리 8개 : PrototypeJS, Script.aculo.us, Dojo, Moo.fx, jQuery, YUI, Rico, MochiKit]
위의 것들중 유일하게 DWR 2.0만이 자바스크립트 하이잭킹을 막기위해 구현한 것이 존재했다. 대부분의 프레임워크들은 어떠한 보호장치도 제공하지 않았고, 그들의 문서에서 조차 보안에 관련된 내용을 언급하지 않았다.
우리는 두가지의 완화법에 대해서 논의할 것이다. 악의 있는 요청을 줄이는것과 자바스크립트를 직접실행하는 공격자에 대한 방어가 그것이다.
1. 소개비록 'Web 2.0'이란 단어가 정확한 정의를 가지고 있지는 않지만, 최근엔 일반적으로 두가지로 사용되고 있다. 첫번째는 'Web 2.0'이 웹 어플리케이션으로 하여금 사회적 상호작용 또는 일반적 합의점을 제공하는 것이고 두번째는 웹 프로그래밍 기술이 풍부한 사용자의 인터페이스를 이끌도록 제공하는 것이다.
이러한 기술들이 때로는 Ajax라는 이름으로 구현되고 있다. 여기서는 자바스크립트 하이잭킹의 단어처럼 취약성에 대해서 논의할 것이다. 이것은 많은 리치 웹 어플리케이션에 의해 사용되는 데이터 전송기술을 이용하는 공격이다. 자바스크립트 하이잭킹은 비인증 공격자가 생성된 매쉬업중 하나를 사용하여 취약한 웹 어플리케이션으로부터 중요 데이터를 읽을 수 있도록 허용한다. 이러한 취약점은 이미 논의되었지만 웹프로그래머들은 이러한 문제점을 좌시했고, 심지어 많이 알려진 이 단어(하이잭킹)조차 모르고있다.
자바스크립트 하이잭킹은 널리 알려진 취약점의 다른 형태로 변형된다 : cross-site request forgery.
cross-site request forgery 공격은 취약한 웹사이트에게 HTTP Request를 하나 또는 여러개를 submit할때 공격이 시작된다. 일반적은 cross-site request forgery 공격은 데이트 무결점을 훼손시킨다. 이는 공격자에게 취약한 웹사이트의 저장된 정보를 수정할 수 있는 능력을 준다.
취약한 웹사이트는 이미 많은 곳에 존재한다. 자바스크립트 하이잭킹에 대해서 주장한 사람들중 하나인 Jeremiah Grossman은 Gmail의 취약성을 발견했고, 구글메일은 이문제를 수정했다.
posted by blankus
이 글의 트랙백 주소 :: http://www.blankus.net/trackback/27