
VMware Aria Operations < 4.18.5 e VMware Tools - Escalatazione locale dei privilegi
VMware Aria Operations < 4.18.5 e VMware Tools - Escalatazione dei privilegi locali
Si prega di leggere l'articolo elencato nei riferimenti per ottenere una spiegazione più completa e dettagliata della vulnerabilità.
In breve
Uno script shell all'interno di VMware Tools chiamato get-versions.sh utilizza un pattern regex a corrispondenza ampia (\S) per identificare i processi in esecuzione con socket in ascolto. Sui processi corrispondenti, esegue il processo con il rispettivo flag di versione (-v, --version, ecc.) per recuperare la versione in esecuzione del servizio.
Estratto da get-versions.sh (righe 18-26):
get_version() {
PATTERN=$1
VERSION_OPTION=$2
for p in $space_separated_pids
do
COMMAND=$(get_command_line $p | grep -Eo "$PATTERN")
[ ! -z "$COMMAND" ] && echo VERSIONSTART "$p" "$("${COMMAND%%[[:space:]]*}" $VERSION_OPTION 2>&1)" VERSIONEND
done
}
Estratto da get-versions.sh (righe 119-124):
get_version "/\S+/(httpd-prefork|httpd|httpd2-prefork)($|\s)" -v
get_version "/usr/(bin|sbin)/apache\S*" -v
get_version "/\S+/mysqld($|\s)" -V
get_version "\.?/\S*nginx($|\s)" -v
get_version "/\S+/srm/bin/vmware-dr($|\s)" --version
get_version "/\S+/dataserver($|\s)" -v
La riga principale /\S+/httpd($|\s) è progettata per corrispondere al percorso di installazione corretto, come /usr/bin/httpd. Tuttavia, se un utente non privilegiato crea uno script in /tmp/httpd, una directory scrivibile a livello globale, e avvia il processo, finché questo ha un socket in ascolto (su qualsiasi interfaccia - anche localhost), verrà eseguito in un contesto elevato dallo script di VMware Tools - ottenendo così un'escalatazione dei privilegi locali. Ciò potrebbe consentire a un utente malintenzionato di eseguire una reverse shell, creare un utente root o, in definitiva, qualsiasi azione elevata a sua scelta.
Uno script golang viene eseguito per creare un socket in ascolto. Quando lo script get-versions.sh corrisponde all'espressione regex di /tmp/[SERVICE], eseguirà lo script in un contesto elevato. Quando lo script viene eseguito in un contesto elevato, invece di creare un socket in ascolto, eseguirà un comando arbitrario (ad es., /bin/bash -i), ottenendo l'escalatazione dei privilegi.