
「💥」CVE-2022-33891 - Apache Spark 명령어 주입
Apache Spark UI는 구성 옵션 spark.acls.enable을 통해 ACL을 활성화할 수 있는 기능을 제공합니다. 인증 필터를 사용하면 사용자가 애플리케이션을 보거나 수정할 수 있는 액세스 권한이 있는지 확인합니다. ACL이 활성화된 경우 HttpSecurityFilter의 코드 경로를 통해 임의의 사용자 이름을 제공하여 가장(impersonation)을 수행할 수 있습니다. 악의적인 사용자는 입력을 기반으로 Unix 셸 명령을 구성한 후 실행하는 권한 확인 함수에 도달할 수 있습니다. 이로 인해 Spark가 현재 실행 중인 사용자 권한으로 임의의 셸 명령이 실행될 수 있습니다. 이는 Apache Spark 버전 3.0.3 이하, 3.1.13.1.2, 3.2.03.2.1에 영향을 줍니다.
private def getUnixGroups(username: String): Set[String] = {
val cmdSeq = Seq("bash", "-c", "id -Gn " + username)
// we need to get rid of the trailing "\n" from the result of command execution
Utils.executeAndGetOutput(cmdSeq).stripLineEnd.split(" ").toSet
}

pip install requests
git clone https://github.com/AmoloHT/CVE-2022-33891
cd CVE-2022-33891
python3 CVE-2022-33891.py -u http://TARGET.TLD