Vulnerabilitat a ld.so OpenBSD

Carregador dinàmic ld.so, inclòs amb OpenBSD, pot, sota determinades condicions, SUID/SGID- les aplicacions deixen la variable d'entorn LD_LIBRARY_PATH i permeten, per tant, carregar codi de tercers en el context d'un procés que s'executa amb privilegis elevats. Els pedaços que solucionen la vulnerabilitat estan disponibles per als llançaments 6.5 и 6.6. Pedaços binaris (syspatch) per a les plataformes amd64, i386 i arm64 ja estan en producció i haurien d'estar disponibles per a la seva baixada quan es publiqui aquesta notícia.

L'essència del problema: durant el funcionament, ld.so primer extreu el valor de la variable LD_LIBRARY_PATH de l'entorn i, utilitzant la funció _dl_split_path(), el converteix en una matriu de cadenes: camins als directoris. Si més tard resulta que el procés actual l'inicia una aplicació SUID/SGID, aleshores s'esborra la matriu creada i, de fet, la variable LD_LIBRARY_PATH. Al mateix temps, si _dl_split_path() es queda sense memòria (cosa difícil a causa del límit explícit de 256 kB sobre la mida de les variables d'entorn, però teòricament possible), aleshores la variable _dl_libpath rebrà el valor NULL i les comprovacions posteriors de el valor d'aquesta variable obligarà a saltar la crida a _dl_unsetenv("LD_LIBRARY_PATH").

Vulnerabilitat detectada pels experts Qualys, així com diverses revelades anteriorment problemes. Els investigadors de seguretat que van identificar la vulnerabilitat van observar la rapidesa amb què es va resoldre el problema: es va preparar un pegat i es van publicar actualitzacions en tres hores després que el projecte OpenBSD va rebre la notificació.

Addició: al problema se li ha assignat un número CVE-2019-19726. Fet a la llista de correu oss-security anunci oficial, incloent un prototip d'explotació que s'executa a les arquitectures OpenBSD 6.6, 6.5, 6.2 i 6.1
amd64 i i386 (l'explotació es pot adaptar per a altres arquitectures).
El problema es pot explotar a la instal·lació predeterminada i permet que un usuari local sense privilegis executi codi com a root mitjançant la substitució de la biblioteca quan s'executa les utilitats chpass o passwd suid. Per crear les condicions de poca memòria necessàries per al funcionament, establiu el límit RLIMIT_DATA mitjançant setrlimit.

Font: opennet.ru

Afegeix comentari