상세 컨텐츠

본문 제목

Java AMF3 원격코드실행 취약점 주의!

국내외 보안동향

by 알약(Alyac) 2017. 4. 7. 17:03

본문

Java AMF3 원격코드실행 취약점 주의!


최근 Java AMF3에서 원격코드실행 취약점이 발견되었습니다. 공격자는 원격에서 스푸핑 혹은 C&C 서버 연결 등의 방식을 이용하여 AMF3 역직렬화 동작 시 임의코드를 실행할 수 있습니다. 


AMF3은 Adobe Action Message Format의 최신 버전입니다. AMF는 2001년 Flash Player6에서 처음 등장하였고, AMF3은 Flash Player9에서 처음 공개되었습니다.


* 직렬화 : 객체를 메모리나 파일 중에 저장 혹은 전달하기 위하여 한개의 객체를 바이트스트림으로 전환하는 과정

* 역직렬화 : 직렬화된 데이터를 다시 객체상태로 만드는 과정



취약점 개요 


Java AMF3기능에 안전하지 않은 역직렬화와 XML외부 엔티티 인젝션 취약점이 존재하여, 여러 프로그램에 영향을 주는 취약점입니다.

자세히보기 



취약점 상세내용


신뢰할 수 없는 데이터의 역직렬화 취약점


일부 Java AMF3 deserialization는 일반적으로 AMF에서 추천하는 flash.utils.IExternalizable이 아닌, Java.io.Externalizable중의 인스턴스를 사용합니다. 그렇기 때문에 원격 공격자는 자바 객체 직렬화에 사용되는 RMI 서버 연결을 스푸핑 하거나 제어하는 방식을 이용하여 직렬화 객체를 전송할 수 있습니다. 이는 역직렬화 시 임의의 코드가 실행되도록 허용합니다.


영향받는 제품과 CVE 번호는 다음과 같습니다. 


Atlassian JIRA, 4.2.4~6.3.0버전 (CVE-2017-5983)

Flamingo amf-serializer by Exadel, 2.2.0버전 (CVE-2017-3201)

GraniteDS, 3.1.1.GA버전 (CVE-2017-3199)

Pivotal/Spring spring-flex  (CVE-2017-3203)

WebORB for Java by Midnight Coders, 5.1.1.0버전 (CVE-2017-3207)



Dynamically-Managed Code Resources의 잘못된 컨트롤 취약점


일부 Java AMF3 deserialization는 공개된 parameter-less구조 함수를 통하여 임의 클래스의 인스턴스화 혹은 임의 Java Beans setter 메소드 콜을 허용합니다. 이런 취약점 악용 능력은 사용하는 클래스 경로의 클래스 가용성에 따라 달라집니다. 원격 공격자는 스푸핑이나 컨트롤을 통해 사전에 설정된 직렬화 java 객체를 전송하여 역직렬화 동작 시 임의의 코드가 실행되도록 허용합니다. 


영향받는 제품과 CVE 번호는 다음과 같습니다. 


Flamingo amf-serializer by Exadel, 2.2.0버전 (CVE-2017-3202)

Flex BlazeDS , 4.6.0.23207버전 및 4.7.2버전 (CVE-2017-5641)

GraniteDS, 3.1.1.GA버전 (CVE-2017-3200)



XML External Entity ('XXE') 참조에 대한 잘못된 제한 취약점(XXE 취약점)


일부 Java AMF3 deserialization은 AMF3의 메세지에 포함된 XML 문서의 외부 엔티티 참조(XXE)를 허용합니다. 만약 XML 파싱이 잘못된다면 민감한 데이터가 서버에서 유출될 가능성이 있으며, 동시에 DDoS, SSRF 와 같은 공격들이 발생할 수도 있습니다. 


영향받는 제품과 CVE 번호는 다음과 같습니다. 


Flex BlazeDS , 4.6.0.23207버전 ( CVE-2015-3269)

GraniteDS, 3.1.1.GA버전 (CVE-2016-2340)

WebORB for Java by Midnight Coders, 5.1.1.0버전 (CVE-2017-3208)



취약점 영향


공격자는 스푸핑 혹은 서버연결 제어를 통해 직렬화 java 객체를 전송, 역직렬화 과정에서 임의의 코드를 실행시킬 수 있습니다. 



해결방법


- 사용중인 프로그램 최신 버전으로 업데이트

- 프로그램 개발자는 사용중인 JDK를 최신으로 업데이트

- 출처가 불분명한 역직렬화 데이터에 대한 보안 강화

- 방화벽 룰 혹은 파일시스템 접근제어 설정



영향받는 제품


<이미지 출처 : https://www.kb.cert.org/vuls/id/307983>







출처 :

https://www.kb.cert.org/vuls/id/307983

관련글 더보기

댓글 영역