출처 : HTML5 웹 애플리케이션 개발 지침 : http://rra.go.kr/board/kcs/view.jsp?nb_seq=1502&cpage=1&nb_type=6&searchCon=nb_name&searchTxt=HTML5&sortOrder=
웹 애플리케이션 공격 유형 및 대응 방안
공격 유형 |
설명 |
대응 방안 |
크로스 사이트 스크립팅(XSS) |
웹 사이트의 악의적인 스크립트가 피해자의 브라우저에서 실행되면서 정보를 유출시키는 공격으로, 공격자는 악의적인 링크를 만들어 사용자가 방문하도록 유도한 후, 이를 통해 사용자의 클라이언트에서 악성스크립트가 수행되게 한다. |
HTML 태그를 분석해 안전한 태그 및 속성 값 만으로 HTML을 재구성하고 신뢰할 수 없는 스크립트 실행을 차단한다. ※ 시큐어코딩가이드 3판, 크로스사이트스크립트[19] 참고 |
크로스사이트 요청(CSRF) 변조 |
웹 애플리케이션이 사용자 인증을 요청할 때 매번 HTTP 요청 시 마다 암호를 입력하도록 하지 않고 세션 쿠키나 HTTP 인증 헤더 등을 이용해 다수의 HTTP 요청에서 이를 사용한다. CSRF는 이점을 이용하며, 사용자가 신뢰할 수 있는 서비스에 로그인 되어 있다가 악성 코드를 담고있는 다른 사이트를 방문할 때 공격한다. |
폼 데이터를 전송할 때 해당 입력 값의 인코딩 방식 및 유효값 여부를 사전에 검사하고 신뢰할 수 있는 데이터만 처리한다. ※ 시큐어코딩가이드 3판, 크로스사이트 요청위조[19] 참고 |
JSON 하이재킹 |
JSON 하이재킹은 CSRF를 기반으로 한 공격 방법이며, 일부 브라우저의 특성을 이용하여, 악성 사이트에서 JSON 포맷으로 된 기밀 데이터를 가로채어 공격한다. |
클라이언트 코드의 무결성을 검증할 수 있는 코드를 별도로 구현한다(MD5 기반 해시값을 사전에 서버로 보내 무결성을 검증하는 방법도 사용한다). ※ OWASP AJAX Security Guidelines[20] 참고 |
서비스 거부(DoS, Denial of Service) 공격 |
특정 웹사이트에 반복적으로 리소스를 요구하는 제3의 자바스크립트가 사용자의 브라우저에서 수행되어 특정 사이트를 반복적으로 응답 요청(공격)한다. |
웹 애플리케이션 특성상 경로를 허용하는 경우에는 ‘../’와 같은 상대 경로를 차단하고 절대 경로만 허용하도록 해야 한다. 사전에 허용된 경로가 아닌 곳으로 접근하는 것은 서버에서 차단해야 한다. ※ KISA DDoS 공격대응가이드[21] 참고 |
API Mashup을 통한 공격 |
비공식 외부 API를 통한 매쉬업 애플리케이션을 개발하여 배포할 경우 사용자와 매쉬업 애플리케이션 모두 보안 취약점을 갖게 되며, 매쉬업 애플리케이션에 악성 코드를 삽입하여 XSS, CSRF, DDoS 등을 포함하여 공격한다. |
인가된 API key 값을 사전에 확인해야 하며, API 취약점 정보를 모니터링하고, 기술적 문제점을 보완해야 한다. ※ OpenAjax Alliance, Ajax and Mashup Security[22] 참고 |
HTML5 보안
앱 애플리케이션 개발 시 기존 HTML4.01 기반의 앱 애플리케이션 보안 대응 방안 이외에도
HTML5 신규 명세에 따른 다양한 구성 요소의 DOM 조합이나 CORS(cross-origin resource sharing),
localStorage, WebSocket, Web Worker와 같은 새로운 기술 도입에 따른 보안 문제에 대한 대응 방안을
같이 고려해야 한다.
HTML5 보안 취약점
취약 요소 |
공격 방법 |
대응 방안 |
CORS, CSRF 공격 |
서로 다른 도메인간 데이터를 주고받을 수 있는 CORS의 부적절한 설정으로 인해 비 인가된 네트워크의 콘텐츠에 접근하도록 유도한다. |
Access-Control-Allow-Origin 헤더의 값에 Asterisk(*) 를 사용하지 말고 허용하는 도메인을 명확하게 지정해야 하며, 공격자는 Origin 헤더를 조작하여 요청을 발생 시킬 수 있기 때문에 해당 헤더에만 의존한 접근 제어는 피해야 한다. ※ HTML5 Top 10 Attacks, A1[23] 참고 |
클릭재킹과 피싱공격 (ClickJacking & Phishing by mixing |
사용자의 정상적인 인터렉션을 이용, 인라인 프레임(iframe)에 숨어 있는 더미를 통해 클릭을 가로채기하거나 다른 페이지로 접속 등 비정상적인 동작을 유도 |
서버측에서 X-Frame-Options의 적절한 설정값을 지정하거나 CORS등을 이용한 제3자의 스크립트 실행을 허용하지 않도록 한다. ※ HTML5 Top 10 Attacks, A2[23] 참고 |
SQL 인젝션을 통한 웹스토리지 공격 |
클라이언트 SQL 인젝션 공격 등을 통해 WebStorage에 저장된 주요 정보 탈취할 수 있다. |
가능한 CORS를 허용하지 않는 정책을 유지한다. ※ HTML5 Top 10 Attacks, A4, A5[23] 참고 |
웹스토리지와 글로벌 변수에서 정보 추출 |
사용자가 로컬 스토리지에 저장되어 있는 데이터의 접근 여부를 확인 하거나 제어할 수 없으며, CORS등을 통해 변조된 자바스크립트만 실행 가능하면 로컬 스토리지에 저장되어 있는 데이터에 대한 접근 및 조작이 가능하다. |
세션 구분자를 쿠키에 보관하거나, 로컬 스토리지에는 가급적 사용자의 민감한 정보들을 보관하지 말고 서버 측에 보관할 수 있도록 구현한다. ※ HTML5 Top 10 Attacks, A4[23] 참고
|
HTML5 태그 악용 |
media, target, autofocus 등 HTML5 신규 속성 등을 악용하여 XSS, CSRF등 기존 웹 공격의 범위를 확장할 수 있다. |
새롭게 추가된 속성 및 태그를 이용한 패턴에 대한 지속적인 모니터링 및 필터링 목록 작성이 필요하다. ※ HTML5 Top 10 Attacks, A3[23] 참고 |
HTML5와 DOM 호출에 의한 XSS 및 리다이렉트 |
여러 HTML5 태그와 속성이 DOM 호출에 의해 제어되는 것을 이용해 다른 공격의 진입점을 만들기 위한 외부 페이지 요청을 수행한다. |
기존 사용되었던 속성과 태그의 블랙리스트 필터링 목록의 보강이 필요하다. ※ HTML5 Top 10 Attacks, A7[23] 참고 |
DOM 인젝션과 |
HTML5 태그와 속성이 광범위하게 DOM을 동적으로 사용하는 것을 이용하여 XHR호출을 통해 DOM을 조작하여 데이터 추출, 변수 조작, 우회 정보 열기 같은 기능을 수행하도록 한다. |
기존 사용되었던 속성과 태그 중 블랙리스트 필터링 목록의 보강이 필요하며, 자동 점검 도구나 서비스를 통한 정기적인 점검이 필요하다. ※ HTML5 Top 10 Attacks, A7[23] 참고 |
클라이언트 자바스크립트 기능 악용 (Abusing thick client features) |
HTML5 UI 기능을 수행하기 위한 자바스크립트를 이용하여 데이터 추출, 변수 조작, 우회 정보 열기 같은 기능을 수행하도록 한다. |
중요한 비즈니스 로직을 자바스크립트에 구현해두지 않으며, 자바스크립트에 대한 무결성 검증이나 난독화하여 대응 ※ HTML5 Top 10 Attacks, A10[23] 참고 |
WebSocket을 이용한 공격 |
사용자에게 허가 받지 않고 WebSocket 을 이용한 Cross-Domain 요청 및 연결을 수행할 수 있다.
|
서버 측에서 메시지 암호화 및 XSS 취약점을 차단해야 하며, 사설 네트워크 접근을 차단해야 한다. ※ HTML5 Top 10 Attacks, A9[23] 참고 |
Web Worker 기능을 악용 |
‘메인 페이지를 처리하는 쓰레드에 독립적이며 백그라운드 형태로 실행된다’ 는 웹 워커의 특징은 DDoS 공격 같은 다양한 방식으로 악용될 수 있다 |
Web Worker를 사용하는 동안에는 가능한 CORS를 허용하지 않는 정책을 유지한다. ※ HTML5 Top 10 Attacks, A6[23] 참고 |
HTML5 Top Attacks : https://media.blackhat.com/bh-eu-12/shah/bh-eu-12-Shah_HTML5_Top_10-WP.pdf
A1 - CORS Attacks & CSRF
A2 - ClickJacking, CORJacking and UI exploits
A3 - XSS with HTML5 tags, attributes and events
A4 - Web Storage and DOM information extraction
A5 - SQLi & Blind Enumeration
A6 - Web Messaging and Web Workers injections
A7 - DOM based XSS with HTML5 & Messaging
A8 - Third party/Offline HTML Widgets and Gadgets
A9 - Web Sockets and Attacks
A10 - Protocol/Schema/APIs attacks with HTML5
HTML5 기반의 액티브X 대체 지침 : http://rra.go.kr/board/kcs/view.jsp?nb_seq=1391&cpage=1&nb_type=6&searchCon=nb_name&searchTxt=HTML5&sortOrder=
'IT Tech > Application' 카테고리의 다른 글
Cloaking 기능 (0) | 2015.10.07 |
---|---|
[용어] SSL (0) | 2015.10.04 |
Apache Structs 취약점이란? (0) | 2015.07.11 |
HTML5의 트렌드는? (0) | 2015.07.10 |
HTTP 상태 코드 (0) | 2015.04.23 |