Dirty Pipe: una vulnerabilitat que permet sobreescriure dades

Fa poc es va donar a conèixer la notícia que va ser identificada una vulnerabilitat al kernel de Linux i la qual ja està catalogada sota CVE-2022-0847 ia la qual han anomenat com Dirty Pipe.

Aquesta vulnerabilitat batejada com a «Dirty Pipe»permet sobreescriure el contingut de la memòria cau de la pàgina per a qualsevol fitxer, inclosos aquells en mode de només lectura, oberts amb l'indicador O_RDONLY o ubicats en sistemes de fitxers muntats en mode de només lectura.

En l'aspecte pràctic, la vulnerabilitat podria utilitzar-se per injectar codi en processos arbitraris o danyar dades en fitxers oberts. Per exemple, podeu canviar el contingut del fitxer authorized_keys per al procés sshd.

Sobre Dirty Pipe

És similar a la vulnerabilitat crítica Dirty COW identificada el 2016 i s'esmenta que Dirty Pipe està al mateix nivell que Dirty COW en termes de perill, però aquesta és molt més fàcil d'operar.

Dirty Pipe es va identificar durant l'anàlisi de queixes sobre danys periòdics a fitxers descarregats a través de la xarxa en un sistema que descarrega fitxers comprimits d'un servidor de registre (37 danys en 3 mesos en un sistema carregat), que es van preparar utilitzant l'operació splice() i pipes sense nom.

la vulnerabilitat s'ha estat manifestant des de la versio del kernel de Linux 5.8, llançat a l'agost de 2020.

Vist d'una altra manera podem dir que és present a Debian 11 però no afecta el kernel base a Ubuntu 20.04 LTS, mentre que per als nuclis RHEL 8.xi openSUSE/SUSE 15 que es basen originalment en branques antigues, però és possible que el canvi que causa el problema s'hi hagi transferit (encara no hi ha dades exactes).

La vulnerabilitat es deu a la manca d'inicialització del valor buf->flags en el codi de les funcions copy_page_to_iter_pipe() i push_pipe(), malgrat que la memòria no s'esborra quan s'assigna l'estructura, i amb certes manipulacions amb conductes sense nom, buf->flags pot contenir un valor d'una altra operació. Amb aquesta característica, un usuari local sense privilegis pot aconseguir l'aparença del valor PIPE_BUF_FLAG_CAN_MERGE a la bandera, cosa que li permet sobreescriure dades a la memòria cau de la pàgina simplement escrivint noves dades en una canonada sense nom especialment preparada (pipe).

Perquè un atac pugui ser realitzat, es necessita un arxiu de destinació que ha de ser llegible i atès que els drets d'accés no es verifiquen en escriure en una canalització, es pot realitzar un reemplaçament a la memòria cau de la pàgina, fins i tot per a fitxers ubicats en particions de només lectura (per exemple, per a fitxers c CD-ROM).

Amb això, després de reemplaçar la informació a la memòria cau de la pàgina, el procés, en llegir les dades del fitxer, no rebrà les dades reals, sinó les reemplaçades.

S'esmenta que l'operació de Dirty Pipe es redueix a crear una canonada sense nom i omplir-la amb dades arbitràries per aconseguir la configuració de la bandera PIPE_BUF_FLAG_CAN_MERGE a totes les estructures d'anell associades amb ella.

A continuació, les dades es llegeixen de la canonada, però l'indicador roman establert a totes les instàncies de l'estructura pipe_buffer a les estructures d'anell pipe_inode_info. Després, es realitza una crida a splice() per llegir les dades del fitxer de destinació en una canonada sense nom, començant al desplaçament requerit. En escriure dades en aquesta canonada sense nom, l'indicador PIPE_BUF_FLAG_CAN_MERGE sobreescriurà les dades a la memòria cau de la pàgina en lloc de crear una nova instància de l'estructura pipe_buffer.

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

A més, si estàs interessat en poder seguir o conèixer sobre la publicació d'actualitzacions de paquets a les principals distribucions, pots fer-ho des d'aquestes pàgines: DebianSUSEUbuntuRHELFedoraGentooArchLinux.

S'esmenta que la correcció de vulnerabilitat proposada, aquesta disponible a les versions del Kernel de Linux 5.16.11, 5.15.25 i 5.10.102 i la solució també està inclosa al kernel utilitzat a la plataforma Android.


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ó.