'injection'에 해당되는 글 2건

  1. 2008.10.11 JavaScript Injection Attack
  2. 2007.12.15 DOM innerHTML 이 갖는 문제점?!! (2)
JavaScript Injection Attack - 자바스크립트 인젝션 공격

JavaScript 보안 관련 자료가 있어 번역하여 올립니다.
웹 기술의 변화와 관심이 달라지는 만큼 함께 신경써야 할 부분도 많아지고 그만큼 복잡해지나 봅니다.


최근 JavaScript 인젝션 공격이 유행하고 있습니다.  Malware 감염을 전파하는 효과적인 수단으로 이러한 종류의 공격을 활용하는 악성웨어들이 늘고 있다.

불과 1 년 전만해도 악의적인 공격자가 의지하고 있던 것은 공격용 Web 사이트를 가리키는 이메일, 검색 링크 또는 인스턴트 메시징 웜 등의 연결로 사람들을 유도하는 방식이었다.

지금은 JavaScript 인젝션 공격을 이용하여 Web 사이트의 방문자를 "납치"하고 만다. 이 공격은, 이른바 어둠 세계의 해커들이 악성웨어가 만연하도록 하는데 사용하는 맥가이버 칼과도 같다.


예시


우리는 다수의 높은 트래픽을 보았고, 합법적인 웹 사이트들은 이 기술을 이용해 공격을 받았다.  최근  알렉사 랭크 3172의 미국의 매우 유명한 게임 포털인 MegaGame도 하나의 예이다. 자바스크립트 인젝션 공격은 MegaGame 서버 중 하나의 서버에 몇 줄의 코드를 성공적으로 추가하였고 이 추가는 아무것도 모른체 웹 사이트를 접속한 방문자들을 악의적인 유럽 사이트로 이동시키고 악성웨어에 감염시키려 시도되었다.

그 악의적인 사이트는 두 가지 다른 방법을 통해 방문자들에게 공격을 시도하였다.  첫 번째는 Microsoft MDAC RDS.Dataspace ActiveX Control Remote Code Execution Vulnerability (MS06-014).
를 시도했다.

 


이 공격은 Microsoft's Internet Explorer (IE) 브라우저를 사용하는 방문자에게만 성공할 수 있었다.
왜냐하면 이 Web 사이트는 기본적으로 ActiveX 컨트롤의 사용을 요구하고 ActiveX 컨트롤 및 IE 간의 상호 작용에 존재하는 허점 (루프 홀)을 통해 원격으로 컴퓨터를 공중 납치하기 때문이다.

두 번째 공격은 다운로드 시 실행되고 IE뿐만 아니라 "Firefox"버전 1.0이 2.0이 대상이다. 이 공격에서는 JavaScript를 사용하여 Web 브라우저 종류를 확인하고 그 후에 미국 어도비 시스템의 Flash의 악용을 통해 공격에 대한 바이너리 파일을 PC에 다운로드하고 실행한다.

 


MegaGames의 Web 사이트는 여전히 감염된 상태. 불행히도 이것이 바로 현재의 상황을 말해 준다

인터넷 이용자의 대부분은 "pr0n"(포르노) 나 "warez"(와레즈 : 불법 복제 소프트웨어) 와 같은 계시의 위험이 높다.  (dodgy: 자못 의심스러운) Web 사이트를 방문한 경우 감염도 없다고 생각하고 듯하지만,  불행이도 그것은 잘못된 생각이다.

Malware 수법은 이전보다 성공화되고 있으며, 현재는 제대로 된 뉴스 사이트 및 비즈니스 관련 사이트도 감염되어있을 가능성이 있다.

"안전한 Web 사이트는 존재하지 않는다"는 것을 보여주는 또 경우가 BusinessWeek.com이다.  아주 정통으로 접근할 수가 많은 이 사이트가 SQL 주입 공격 타겟이 됐다.  이 같은 SQL 인젝션 공격이  JavaScript 인젝션 공격으로 연결 된다.

출처 : http://www.f-secure.com/weblog/archives/00001502.html


포스팅하려고 준비해 둔 JavaScript Injection 공격에 대한 자료를 첨부합니다.
상세한 자료는 아니고 아웃라인(흐름)에 대한 내용입니다.


신고
Posted by Rhio.kim
사용자 삽입 이미지
Ajax 개발을 하면서 가장 많이 사용하는 프로퍼티중의 하나입니다.

서버에서 HTML로 생성해주거나 혹은 데이터를 html 스트링으로 변환하여 해당 엘리먼트에

Element의 프로퍼트(property)인 innerHTML에 string을 치환하게 됩니다.

비어져 있는 엘리먼트일 수도 있고 그렇지 않는 경우도 있습니다.

DOM을 일일이 생성하는 것보다 innerHTML이 간단하기 때문에 많이들 사용하지만

이렇게 innerHTML을 자주 사용하는 프로퍼티인데 하지만 이를 사용할 때 문제가 되는 사항이 많이 있습니다.

그래서 유의해서 사용해야합니다.


1. 이미 innerHTML에 어떤 Element 구조가 형성되어 있을 때 해당 엘리먼트에 innerHTML을 하게 되면
기존에 있던 구조가 모두 없어져 버리게 됩니다.
만약에 그 구조안에 이벤트 헨들러를 등록했었다면 몇몇 브라우저에서는 메모리 누수가 발생합니다.

2. DOM 엘리먼트를 참조는 되돌릴 수가 없습니다.

3. 모든 브라우저의 모든 엘리먼트에서 innerHTML 프로퍼티를 사용하여 설정할 수 없습니다.
예를 들어 IE에서는 table의 row 엘리먼트에는 설정할 수 없다는 것입니다.

4. 익스플로러에서는 innerHTML속성을 이용해 script-injection 공격을 할 수 있습니다.
익스플로러에는 스크립트 태그에 defer 속성이 있는데요.
이를 이용해 <script src="" defer></script>를 이용하면 외부 script 로딩을 해 여러가지 공격이 가능합니다.

뭐 더 생각해보면 많을 것 같습니다.

FireFox에서는 파이어버그를 이용해서 다양한 동적인 지원과 디버깅을 지원하는데요.
전문가들에게는 이게 해킹의 수단이 될 수도 있습니다.
신고
Posted by Rhio.kim