Dirty Pipe: o vulnerabilitate care permite suprascrierea datelor

Recent s-a dat vestea asta a fost identificată o vulnerabilitate în nucleul Linux și care este deja catalogat sub CVE-2022-0847 și pe care l-au numit ca „Pipe murdare”.

Această vulnerabilitate numită „Dirty Pipe”permite suprascrierea conținutului cache-ului a paginii pentru orice fișier, inclusiv pe cele setate doar în citire, deschise cu indicatorul O_RDONLY sau situate pe sisteme de fișiere montate doar în citire.

Din punct de vedere practic, vulnerabilitatea ar putea fi folosit pentru a injecta cod în procese arbitrare sau date corupte din fișierele deschise. De exemplu, puteți modifica conținutul fișierului authorized_keys pentru procesul sshd.

Despre Dirty Pipe

Este similar cu vulnerabilitatea critică Dirty COW identificat în 2016 și Dirty Pipe este menționat ca fiind la același nivel cu Dirty COW în ceea ce privește pericolul, dar că acesta este mult mai ușor de operat.

Dirty Pipe a fost identificat în timpul analizei reclamațiilor privind deteriorarea periodică a arhivelor descărcat prin rețea pe un sistem care descarcă fișiere comprimate de pe un server de logare (37 de daune în 3 luni pe un sistem încărcat), care au fost pregătite folosind operația splice() și conducte fără nume.

Vulnerabilitate se manifestă de la versiunea 5.8 a nucleului Linux, lansat în august 2020.

Văzut în alt mod, putem spune că este prezent în Debian 11 dar nu afectează nucleul de bază în Ubuntu 20.04 LTS, în timp ce pentru nucleele RHEL 8.x și openSUSE/SUSE 15 care se bazează inițial pe ramuri vechi, dar este posibil că modificarea care provoacă problema le-a fost transferată (încă nu există date exacte).

Vulnerabilitatea se datorează lipsei de inițializare a valorii „buf->flags” în codul funcțiilor copy_page_to_iter_pipe() și push_pipe(), în ciuda faptului că memoria nu a fost ștersă atunci când structura este alocată, și cu anumite manipulări cu unnamed. pipe, "buf->flags" poate conține o valoare dintr-o altă operațiune. Cu această caracteristică, un utilizator local neprivilegiat poate obține apariția valorii PIPE_BUF_FLAG_CAN_MERGE în steag, permițându-i să suprascrie datele din memoria cache a paginii prin simpla scriere a datelor noi într-o conductă fără nume special pregătită.

pentru un atac se poate face, aveți nevoie de un fișier țintă care trebuie să fie lizibil și din moment ce drepturile de acces nu sunt verificate atunci când scrieți într-o conductă, o înlocuire poate fi efectuată în memoria cache a paginii, chiar și pentru fișierele situate pe partiții numai pentru citire (de exemplu, pentru fișierele c CD-ROM).

Cu aceasta, după înlocuirea informațiilor din memoria cache a paginii, procesul, la citirea datelor din fișier, nu va primi datele reale, ci cele înlocuite.

Se menționează că operațiunea Dirty Pipe se rezumă la crearea unei conducte fără nume și completarea acesteia cu date arbitrare pentru a realiza setarea steagului PIPE_BUF_FLAG_CAN_MERGE pe toate structurile de inel asociate cu acesta.

Datele sunt apoi citite din conductă, dar indicatorul rămâne setat pe toate instanțele structurii pipe_buffer din structurile inelare pipe_inode_info. Se face apoi un apel la splice() pentru a citi datele din fișierul destinație într-o conductă fără nume, începând cu offset-ul necesar. Când scrieți date în această conductă fără nume, indicatorul PIPE_BUF_FLAG_CAN_MERGE va suprascrie datele din memoria cache a paginii în loc să creeze o nouă instanță a structurii pipe_buffer.

În cele din urmă Dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile în nota originală În următorul link.

De asemenea, dacă sunteți interesat să poată urmări sau ști despre publicarea actualizărilor de pachete din distribuțiile principale, o puteți face din aceste pagini: DebianSUSEUbuntuRHELFedoraGentooArchLinux.

Se menționează că soluția de vulnerabilitate propusă este disponibilă în versiunile Linux Kernel 5.16.11, 5.15.25 și 5.10.102, iar remedierea este inclusă și în kernel-ul utilizat pe platforma Android.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.