L'any 2023, l'equip de Qualys va reportar una vulnerabilitat amb una alta criticitat que afectava una gran quantitat de versions de Linux. Aquesta consistia en una escalada de privilegis locals en aprofitar el desbordament del memòria intermèdia al carregador dinàmic de la biblioteca GNU C (glibc).
El carregador dinàmic en processar la variable d'entorn GLIBC_TUNABLES produeix aquest desbordament, i un agent maliciós podria utilitzar aquesta variable per iniciar fitxers binaris amb permisos de SUID, cosa que us permetria executar codi amb privilegis elevats.
Per replicar aquesta vulnerabilitat es va implementar un entorn de proves. En primer lloc, cal accedir a la màquina vulnerable:
Per fer lexplotació shan dentendre el POC que es proporciona.
El carregador dinàmic utilitza les variables d'entorn gclib_tunables, que permeten que els desenvolupadors alterin dinàmicament el comportament de la biblioteca en temps d'execució.
En aquest cas, el codi cerca qualsevol variable gclib_tunables a les variables d'entorn i les copia a una variable nova. La vulnerabilitat sorgeix quan la variable conté entrades inesperades, ja que no són manejades amb seguretat i provocant un desbordament del memòria intermèdia.
Com a requisit d'explotació cal comptar amb:
- Execució de codi amb privilegis limitats a un sistema vulnerable.
PoC
Després de comprovar que és vulnerable a Looney Tunables, amb l'ajuda del fitxer gen_libc.py, el qual en aquest cas ja es troba dins de la màquina, l'executem per generar l'exploit.
El pas següent és compilar l'exploit utilitzant GCC. El fitxer que cal compilar és l'exp.c
Després de l'execució de les dues ordres s'hauran generat dos arxius, les POC necessàries per a l'explotació de la vulnerabilitat:
Després de l'execució de l'arxiu que contenia l'exploit, després d'un període de temps breu es pot observar com l'explotació s'ha completat i s'ha aconseguit fer l'escalada de privilegis amb èxit.
Conclusió
Aquesta vulnerabilitat a la biblioteca GNU C (glibc) subratlla la importància d‟una gestió segura de les variables d‟entorn en sistemes Linux. Per mitigar concretament aquesta vulnerabilitat cal actualitzar el paquet glibc a les noves versions disponibles en conjunt. Cal comprovar que els canvis s'han aplicat satisfactòriament.