Van detectar una fallada al recol·lector d'elements no utilitzats de Linux que podia conduir a una escalada de privilegis 

systemd vulnerabilitat

Fa pocs dies Jann Horn de l'equip de Google Project Zero, que prèviament va identificar les vulnerabilitats de Spectre i Meltdown, va donar a conèixer una tècnica per explotar una vulnerabilitat que va trobar al recol·lector d'elements no utilitzats del kernel de Linux (CVE-2021-4083).

la vulnerabilitat és causada per una condició de carrera quan es netegen els descriptors de fitxer de socket de Unix i potencialment permet que un usuari local sense privilegis executi el seu codi al nivell del nucli.

el problema és interessant perquè la finestra de temps durant la qual ocorre la condició de carrera es va avaluar com a massa petita per crear vulnerabilitats reals, però l'autor de l'estudi va demostrar que fins i tot les vulnerabilitats inicialment escèptiques es poden convertir en una font d'atacs reals si el creador de la vulnerabilitat té les habilitats i el temps necessaris.

Yann Horn va mostrar com, amb l'ajuda de manipulacions de filigrana, és possible reduir la condició de cursa que passa quan s'anomena les funcions close() i fget() alhora a una vulnerabilitat de classe use-after-free totalment explotada i aconseguir accés a una estructura de dades ja alliberada dins del kernel.

Es produeix una condició de carrera durant el procés de tancar un descriptor de fitxer mentre s'anomena les funcions close() i fget() alhora. La trucada a close() es pot executar abans que s'executi fget(), cosa que confondrà al recol·lector d'elements no utilitzats perquè, segons refcount, l'estructura del fitxer no tindrà referències externes, però romandrà adjunta al descriptor de l'arxiu, és a dir, el recol·lector d'elements no utilitzats suposarà que té accés exclusiu a l'estructura, però de fet, durant un breu període de temps temps, l'entrada restant a la taula de descriptors de fitxers seguirà indicant que l'estructura s'està alliberant.

Per augmentar la probabilitat d'entrar a una condició de carrera, es van utilitzar diversos trucs que van permetre augmentar la probabilitat dèxit de l'explotació al 30% en fer optimitzacions específiques del sistema. Per exemple, per augmentar el temps d'accés a una estructura amb descriptors d'arxiu en diversos centenars de nanosegons, les dades es van expulsar de la memòria cau del processador en contaminar la memòria cau amb activitat en un altre nucli de CPU, cosa que va fer possible tornar l'estructura de la memòria i no de la memòria cau ràpida de la CPU.

La segona característica important va ser l'ús d'interrupcions generades per un temporitzador de maquinari per augmentar el temps de carrera. El moment es va triar perquè el controlador d'interrupcions es disparés durant l'ocurrència de la condició de carrera i interrompés l'execució del codi durant un temps. Per endarrerir encara més el retorn del control, epoll va generar al voltant de 50 mil entrades a la cua d'espera, cosa que requeria una iteració al controlador d'interrupcions.

la tècnica d'explotació de la vulnerabilitat es va revelar després d'un període de no divulgació de 90 dies. el problema

i es va solucionar a principis de desembre. La solució es va incloure al kernel 5.16 i també es va traslladar a les branques LTS del kernel i els paquets amb el kernel subministrat a les distribucions. Cal assenyalar que la vulnerabilitat es va identificar durant l'anàlisi d'un problema similar CVE-2021-0920, que es manifesta al recol·lector d'escombraries en processar l'indicador MSG_PEEK.

Una altra vulnerabilitat que va ser trobada fa poc al nucli de Linux, va ser la CVE-2022-0742 que pot esgotar la memòria disponible i provocar de manera remota una denegació de servei mitjançant l'enviament de paquets icmp6 dissenyats especialment. El problema està relacionat amb una fuita de memòria que passa en processar missatges ICMPv6 amb tipus 130 o 131.

El problema ha estat present des del nucli 5.13 i es va solucionar a les versions 5.16.13 i 5.15.27. El problema no va afectar Debian, SUSE, Ubuntu LTS (18.04, 20.04) i les branques estables de RHEL, es va solucionar a Arch Linux.

Finalment si estàs interessat en poder conèixer més a l'respecte de la nota, pots consultar els detalls a el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.