Fa'aletonu i le fatu Linux e mafai ai ona fa'aleagaina faila na'o le faitau

O se faʻafitauli ua faʻaalia i le Linux kernel (CVE-2022-0847) e faʻatagaina ai mea o loʻo i totonu o le itulau cache e faʻapipiʻiina mo soʻo se faila, e aofia ai i latou i le faitau-naʻo le auala, tatala i le O_RDONLY fuʻa, pe tuʻu i luga o faila faila. fa'apipi'i ile faiga na'o le faitau. I tulaga fa'atino, e mafai ona fa'aogaina le fa'aletonu e tui ai le code i faiga fa'aletonu po'o fa'amatalaga pi'opi'o i faila tatala. Mo se faʻataʻitaʻiga, e mafai ona e suia mea o loʻo i totonu o le faila faʻatagaina_keys mo le sshd process. O lo'o avanoa se fa'ata'ita'iga o le fa'aoga mo su'ega.

O le faʻafitauli ua faʻaigoaina Dirty Pipe, e tutusa ma le faʻafitauli matuia o le Dirty COW na faʻaalia i le 2016. Ua maitauina e tusa ai ma tulaga lamatia, o le Dirty Pipe o loʻo i luga o le tulaga tutusa ma le Dirty COW, ae sili atu ona faigofie le faʻaogaina. O le faʻafitauli na faʻaalia i le taimi o le auʻiliʻiliga o faitioga e uiga i faiga piʻopiʻo faʻavaitaimi o faila na sii mai i luga o le upega tafaʻilagi i se faiga e sii mai ai faʻamaumauga faʻapipiʻi mai se log server (37 corruptions i le 3 masina i luga o se faiga faʻapipiʻi), o le sauniuniga lea na faʻaogaina ai le splice() faʻagaioiga. ma paipa e le o ta’ua.

Ole faʻafitauli e aliali mai e amata ile Linux kernel 5.8, faʻasalalau ia Aokuso 2020, i.e. o loʻo iai i le Debian 11, ae e le afaina ai le fatu fatu i le Ubuntu 20.04 LTS. O le RHEL 8.x ma le openSUSE/SUSE 15 kernels o loʻo faʻavae muamua i luga o lala tuai, ae atonu o le suiga na mafua ai le faʻafitauli na tuʻuina atu i totonu ia i latou (e leai se faʻamatalaga saʻo). E mafai ona e siaki le faʻasalalauga o faʻafouga afifi i tufatufaga i luga o itulau nei: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. O se fofo mo le faʻafitauli na tuʻuina atu i faʻasalalauga 5.16.11, 5.15.25 ma le 5.10.102. O loʻo faʻapipiʻiina foi le faʻaogaina i le fatu o loʻo faʻaaogaina i le Android platform.

O le faʻafitauli e mafua mai i le leai o se amataga o le "buf-> flags" tau i le code of functions copy_page_to_iter_pipe() ma push_pipe(), e ui lava i le mea moni e le o faʻamamaina le manatua pe a tuʻufaʻatasia se fausaga ma i le taimi o nisi togafiti ma paipa e le o ta'ua, o se tau mai se isi gaioiga. I le faʻaaogaina o lenei faʻaaliga, e mafai e se tagata faʻaoga faʻapitonuʻu le faʻaogaina ona ausia le faʻaalia o le PIPE_BUF_FLAG_CAN_MERGE tau i le fuʻa, lea e mafai ai ona e faʻatulagaina le faʻauluina o faʻamatalaga i le itulau cache e ala i le na o le tusiaina o faʻamatalaga fou i se paipa e le o taʻua faʻapitoa.

Mo se osofaʻiga, e tatau ona mafai ona faitau le faila taulaʻi, ma talu ai e le o siakiina aia tatau pe a tusi i le paipa, e mafai foʻi ona fai le sui i le itulau cache mo faila o loʻo i totonu o vaeluaga o loʻo faʻapipiʻiina naʻo le faitau (mo se faʻataʻitaʻiga, mo faila c CD- ROM). A maeʻa ona sui le faʻamatalaga i le itulau cache, pe a faitau faʻamatalaga mai se faila, o le faagasologa o le a le mauaina faʻamatalaga moni, ae o faʻamatalaga suia.

O le fa'agaioiga e sau i lalo i le fatuina o se alaleo le ta'ua ma fa'atumuina i fa'amatalaga fa'apitoa ina ia mautinoa ai o le fu'a PIPE_BUF_FLAG_CAN_MERGE o lo'o tu'u i totonu o fausaga mama uma e feso'otai i ai. O le isi, o faʻamatalaga e faitau mai le alalaupapa, ae o le fuʻa e tumau pea ona seti i taimi uma o le pipe_buffer structure i le pipe_inode_info ring structures. Ole vala'au ile splice() e fai e faitau fa'amaumauga mai le faila fa'atatau ile paipa e le'i ta'ua, amata ile offset mana'omia. Pe a tusia faʻamatalaga i lenei paipa e le o taʻua, ona o le fuʻa PIPE_BUF_FLAG_CAN_MERGE o loʻo setiina, o faʻamaumauga i totonu o le itulau o loʻo faʻapipiʻiina nai lo le fatuina o se faʻataʻitaʻiga fou o le pipe_buffer structure.

puna: opennet.ru

Faaopoopo i ai se faamatalaga