Dirty Pipe: isang kahinaan na nagpapahintulot sa data na ma-overwrite

Kamakailan-lamang na ang balita ay sinira iyon may natukoy na kahinaan sa Linux kernel at kung saan ay nakatala na sa ilalim ng CVE-2022-0847 at kung saan sila ay pinangalanan bilang "Dirty Pipe".

Ang kahinaang ito ay tinawag na "Dirty Pipe"nagbibigay-daan upang ma-overwrite ang mga nilalaman ng cache ng page para sa anumang file, kabilang ang mga nakatakda sa read-only, binuksan gamit ang O_RDONLY flag, o matatagpuan sa mga file system na naka-mount read-only.

Sa praktikal na bahagi, ang kahinaan ay maaaring magamit upang mag-inject ng code sa mga arbitrary na proseso o sira na data sa mga bukas na file. Halimbawa, maaari mong baguhin ang nilalaman ng authorized_keys file para sa proseso ng sshd.

Tungkol sa Dirty Pipe

Ito ay katulad ng kritikal na kahinaan na Dirty COW natukoy noong 2016 at ang Dirty Pipe ay binanggit na nasa parehong antas ng Dirty COW sa mga tuntunin ng panganib, ngunit ang isang ito ay mas madaling patakbuhin.

Natukoy ang Dirty Pipe sa pagsusuri ng mga reklamo tungkol sa pana-panahong pinsala sa mga archive na-download sa network sa isang system na nagda-download ng mga naka-compress na file mula sa isang logging server (37 pinsala sa loob ng 3 buwan sa isang load system), na inihanda gamit ang splice() na operasyon at mga hindi pinangalanang pipe.

Kakayahang mangyari ay nagpapakita na mula noong bersyon 5.8 ng kernel ng Linux, inilabas noong Agosto 2020.

Nakita ang isa pang paraan na maaari nating sabihin na ito ay naroroon sa Debian 11 ngunit hindi ito nakakaapekto sa base kernel sa Ubuntu 20.04 LTS, habang para sa RHEL 8.x at openSUSE/SUSE 15 kernels na orihinal na nakabatay sa mga lumang sangay, ngunit posible na ang pagbabagong nagdudulot ng problema ay nailipat sa kanila (wala pang eksaktong data).

Ang kahinaan ay dahil sa kakulangan ng pagsisimula ng halagang "buf->flags" sa code ng mga function na copy_page_to_iter_pipe() at push_pipe(), sa kabila ng hindi na-clear ang memorya kapag ang istraktura ay inilalaan, at may ilang mga manipulasyon na walang pangalan. pipe, "buf->flags" ay maaaring maglaman ng isang halaga mula sa isa pang operasyon. Gamit ang tampok na ito, ang isang walang pribilehiyong lokal na gumagamit ay maaaring makamit ang hitsura ng PIPE_BUF_FLAG_CAN_MERGE na halaga sa bandila, na nagpapahintulot sa kanila na i-overwrite ang data sa cache ng pahina sa pamamagitan lamang ng pagsusulat ng bagong data sa isang espesyal na inihandang hindi pinangalanang pipe.

para sa isang atake maaaring gawin, kailangan mo ng isang target na file na dapat mabasa at dahil hindi sinusuri ang mga karapatan sa pag-access kapag sumusulat sa isang pipe, maaaring magsagawa ng kapalit sa cache ng pahina, kahit na para sa mga file na matatagpuan sa mga read-only na partisyon (halimbawa, para sa mga c CD-ROM file).

Gamit ito, pagkatapos palitan ang impormasyon sa cache ng pahina, ang proseso, kapag binabasa ang data mula sa file, ay hindi makakatanggap ng totoong data, ngunit ang mga pinalitan.

Nabanggit na ang operasyon ng Dirty Pipe ay bumubuo sa paglikha ng isang hindi pinangalanang pipe at pinupunan ito ng arbitrary na data upang makamit ang pagtatakda ng PIPE_BUF_FLAG_CAN_MERGE na bandila sa lahat ng istruktura ng singsing na nauugnay dito.

Ang data ay pagkatapos ay basahin mula sa pipe, ngunit ang bandila ay nananatiling nakatakda sa lahat ng mga pagkakataon ng pipe_buffer structure sa pipe_inode_info ring structures. Ang isang tawag sa splice() ay ginawa upang basahin ang data mula sa patutunguhang file sa isang hindi pinangalanang pipe, simula sa kinakailangang offset. Kapag nagsusulat ng data sa hindi pinangalanang pipe na ito, ang PIPE_BUF_FLAG_CAN_MERGE na flag ay i-overwrite ang data sa cache ng page sa halip na gumawa ng bagong instance ng pipe_buffer structure.

Sa wakas Kung interesado kang malaman ang tungkol dito, maaari mong suriin ang mga detalye sa orihinal na tala Sa sumusunod na link.

Gayundin, kung ikaw ay interesado sa masubaybayan o malaman ang tungkol sa paglalathala ng mga update ng mga pakete sa pangunahing distribusyon, magagawa mo ito mula sa mga pahinang ito: DebianSUSEUbuntuRHELFedoraGentooArchLinux.

Nabanggit na ang iminungkahing pag-aayos ng kahinaan ay magagamit sa mga bersyon ng Linux Kernel 5.16.11, 5.15.25 at 5.10.102 at ang pag-aayos ay kasama rin sa kernel na ginamit sa Android platform.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.