KOROMOON

착한 사마리아인이 되고 싶습니다.

7/26/2022

[CVE-2022-33891] Apache Spark Shell 명령어 삽입 취약점 (Apache Spark Shell Command Injection)


( 1 ) 취약점 정보


2022년 07월 18일 아파치 게시판에 [CVE-2022-33891] Apache Spark Shell 명령어 삽입 취약점을 공지함.

보안 연구원 Kostya Kortchinsky (Databricks) 에 의해 이 결함을 보고한 것으로 확인됨.


참고로 Spark 제품은 대규모 데이터 처리를 위한 통합 분석 엔진으로 Scala, Java, Python, R 등의 고수준 API 와 데이터 분석을 위한 일반 연산 그래프를 지원하는 최적화된 엔진을 제공함.


취약한 버전은 아래와 같음.

- Apache Spark 3.0.3 및 이전 버전

- Apache Spark 3.1.1 ~ 3.1.2

- Apache Spark 3.2.0 ~ 3.2.1


취약한 Apache Spark 제품의 기본 설정에 영향을 받지 않으나 UI 인증을 활성화한 경우에 영향을 받음.

- Apache Spark 제품의 UI(WebUI) 이용할 경우

- Apache Spark 설정(spark-defaults.conf)에서 spark.acls.enable 사용으로 설정된 경우




( 2 ) 취약점 분석


아래 취약점의 수정을 보면 비교적 이해하기 쉬움.

링크 : 

https://github.com/apache/spark/pull/36315/files#diff-96652ee6dcef30babdeff0aed66ced6839364ea4b22b7b5fdbedc82eb655eeb5L41


< CVE-2022-33891 소스 코드 수정 부분 41행 >


수정 전에 수신한 매개 변수인 username을 bash 에서 실행하는 형식으로 전달하며 다음과 같은 커맨드가 실행됨.


bash -c id -Gn <username>


여기 username 이 GET 방식의 파라미터로부터 그대로 건네받을 수 있는 점을 악용해 명령어 치환을 이용한 임의의 코드 실행이 가능함.

Bash 명령어 치환 관련 링크 : 

http://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html?_fsi=HeqySF2w


예를 들어, username 에 `:>/haver_CVE-2022-33891` 문자열을 넣어서 명령어를 입력함.


bash -c id -Gn `:>/have_CVE-2022-33891`


`:> /have_CVE-2022-33891` 문자열은 명령어로 치환되고 서버에서 :>/have_CVE-2022-33891 로 작동하여 빈 파일이 생성됨.

인증 시도에는 실패하기 때문에 응답값은 403 이 출력됨.


< CVE-2022-33891 취약점을 악용한 요청 시도 >


< CVE-2022-33891 취약점을 악용한 요청 시도 후 파일 생성 >




( 3 ) 취약점 방어


1. 최신 버전으로 업그레이드함.

Apache Spark 3.1.3 버전 업그레이드

Apache Spark 3.2.2 또는 3.3.0 이상 버전 업그레이드


2. 아래와 같이 보안장비에 Snort 패턴을 등록하여 모니터링 및 대응함.

현재 공개된 PoC 를 분석한 결과, 아래와 같이 doAs 파라미터에 악의적인 코드 삽입을 확인함.

해당 doAs 파라미터와 명령어 치환 기호(`)가 포함된 경우 탐지하는 패턴을 등록함.


PoC 예제 : 

http://localhost:8080/?doAs=`[command injection here]`

http://localhost:8080/?doAs=`echo%20%22c2xlZXAgMTAK%22%20|%20base64%20-d%20|%20bash`


alert tcp any any -> any any (msg:"KOROMOON_Apache_Spark_Shell_Command_Injection_Detected"; content:"?doAs=`";)




참고 사이트 : 

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%8A%A4%ED%8C%8C%ED%81%AC

https://nvd.nist.gov/vuln/detail/CVE-2022-33891

https://lists.apache.org/thread/p847l3kopoo5bjtmxrcwk21xp6tjxqlc

https://github.com/west-wind/CVE-2022-33891

https://github.com/W01fh4cker/cve-2022-33891/blob/main/cve_2022_33891_poc.py

https://gmo-cybersecurity.com/blog/apachespark_oscommandinjection_cve-2022-33891/



댓글 없음:

댓글 쓰기