[CVE-2020-1956] Apache Kylin REST API migrateCube 침해사고분석팀 2020.12.18 |
|
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
|