CSIRTCV

Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es

26/08/2013

Elevació de privilegis en Debian i distribucions derivades

Tavis Ormandi, conegut investigador de seguretat de l’equip de seguretat de Google, ha publicat en el seu blog una interessant prova de concepte sobre un problema de seguretat que afecta Debian i distribucions derivades com Ubuntu.

Risc: Alt

Des de la publicació de Debian Squeeze al febrer de 2011 els desenvolupadors van canviar l’intèrpret de comandos per defecte, que era bash, per dash (Debien Almquist Shell), creat per Herbert Xu. Este canvi suposava una millora en la grandària, les dependències i, suposadament, segons Debien, millora la velocitat d’execució dels shell scripts. Com a contrapartida, dash perdia certes funcionalitats respecte a bash. Tampoc van faltar els problemes de compatibilitat en executar scripts que en principi estaven dissenyats per a executar-se en bash.

Ormandy va observar que dash té un comportament diferent de bash quan ha de relaxar els permisos amb què corre quan detecta que està sent invocada com a “sh”.

Normalment, bash invocarà la funció “disable_priv_mode” si detecta que el UID de l’usuari és diferent de l’UID efectiu.

La funció “disable_priv_mode” està definida de la manera següent:

void disable_priv_mode ()
{
setuid (current_user.uid);
setgid (current_user.gid);
current_user.euid = current_user.uid;
current_user.egid = current_user.gid;
}

És a dir, a tots els efectes, l’UID efectiu serà el de l’usuari (i no un privilegiat) i el mateix procés rebaixarà els seus privilegis (per mitjà de la crida a setuid i setgid) als de l’usuari igualment.

Açò és una mesura efectiva per a minimitzar el risc de vulnerabilitats en aquells executables que tenen el bit setuid activat i que, per tant, adquiriran els privilegis del propietari de l’arxiu quan es convertisquen en un procés.

Ormandy fa una senzilla prova de concepte amb un executable privilegiat pertanyent a les utilitats de VMware que invoca “lsb_release” per a obtindre informació del sistema:

cc -xc - -olsb_release<<<'main(){system(“sh>`tty` 2>&1”);}';PATH=.:$PATH vmware-mount

Este tros de codi compila un executable amb nom “lsb_release” i afig el directori actual “.” a la variable d’entorn PATH. Quan s’execute el programa de les utilitats de VMware, vmware-mount, este obrirà un procés amb la crida al sistema “pope” cridant l’executable “lsb-release”. Com el nostre directori de treball o “.” està abans en la variable PATH, l’executable que utilitzarà serà el codi que acabem de compilar.

Respecte al codi de l’executable, este conté una crida a “system”, on executem “sh”. En bash este codi no suposaria una shell amb privilegis d’arrel, ja que en executar “sh” es rebaixarien els privilegis gràcies al “privmode”; no obstant això, en dash no hi ha un mecanisme que previnga esta situació i se’ns obrirà una shell amb els màxims privilegis.

Curiosament, segons comenta Ormandi, Debien ja va rebutjar el “privmode”, que impedia este problema, perquè trencava la compatibilitat amb UUCP (Unix to Unix CoPy) un programa, pràcticament ja en desús, per a transferir arxius entre sistemes UNIX de manera remota.

Tavis ha enviat un pedaç als desenvolupadors de dash per a agregar el “privmode”. Podem veure la conversació en la llista d’oss-security des d’ací.

Sistemes Afectats:

De moment, totes les màquines virtuals Debian (a partir de Squeeze) amb el script de VMware mencionat són vulnerables a elevació de privilegis. Encara que no sols es restringix al dit component, si existira un programa en el sistema amb la mateixa funcionalitat i amb el bit setuid activat tindríem el mateix problema i, per descomptat, no cal que siga una màquina virtual.

Referències:

CVE-2013-1662.

Solució:

VMware ja ha publicat un pedaç que soluciona esta vulnerabilitat d’elevació de privilegis, a la qual s’ha sigut assignat el CVE-2013-1662.

Notes:
Security Debianisms
http://blog.cmpxchg8b.com/2013/08/security-debianisms.html
Font: Hispasec una-al-día

CSIRT-CV