보안정보

글로벌 정보보안 리더 윈스

[CVE-2020-1956] Apache Kylin REST API migrateCube

침해사고분석팀 2020.12.18

Apache Kylin | Analytical Data Warehouse for Big Data

 

 

Apache Kylin에 원격 코드 실행 취약점이 존재합니다.

 

Apache Kylin은 매우 큰 데이터 세트를 지원하는 Hadoop 및 Alluxio에 대한 SQL 인터페이스 및 다차원 분석을 제공하도록 설계된 오픈 소스 분산 분석 엔진입니다.

 

해당 취약점은 REST API의 잘못된 유효성 검사로 인해 발생합니다. 인증된 원격의 공격자는 취약한 REST API를 이용해 악의적인 요청을 보내 공격할 수 있으며, 공격 성공 시 임의 코드가 실행될 수 있습니다.

 

 

 

취약점 설명

 

NVD - CVE-2020-1956

CVSS v2.0 Severity and Metrics:

Base Score: 9.0 HIGH

 

 

[그림1. NVD 내역]

 

 

 

 

취약점 분석

 

 

사용자가 "/kylin/api/cubes/cube-name/project-name/migrate"로 HTTP POST 요청을 보내는 경우 Java 클래스 CubeController에서 migrateCube() 함수를 호출합니다.

 

migrateCube()함수는 Request-URI로부터 project-name을 추출하여 맵 데이터 구조에서 큐브 정보를 가져옵니다. 

 

이 때 속성으로 셸 명령을 만들어 실행하게 되는데, project-name으로 전달되는 값에 명령 주입 문자가 있는지 확인하지 않기 때문에 명령 주입 취약점이 발생하게 됩니다.

 

 

공격 분석

 

 

CVE-2020-1956은 다음과 같은 형태로 공격이 이루어집니다.

 

 

[그림2. 공격 패킷]

 

learn_kylin값 뒤에는 ; | & 등과 같이 다중 명령어 및 파이프 문자를 이용한 명령어 삽입 공격이 이루어지게 됩니다.

 

 

취약점 대응 방안

 

 

1. 최신 버전 사용

 

해당 벤더사의 홈페이지를 참고하여 최신의 버전으로 업데이트 합니다.

 

https://kylin.apache.org/docs/security.html

 

 

2. WINS Sniper 제품군 대응 방안

 

Apache Kylin REST API migrateCube RCE