Leochaileacht san eithne Linux atá in ann cur isteach ar chomhaid inléite amháin

Aithníodh leochaileacht san eithne Linux (CVE-2022-0847) a cheadaíonn inneachar an taisce leathanaigh a fhorscríobh d'aon chomhaid, lena n-áirítear iad siúd i mód inléite amháin, a osclaítear leis an mbratach O_RDONLY, nó atá suite ar chórais comhad gléasta i mód inléite amháin. I dtéarmaí praiticiúla, d'fhéadfaí an leochaileacht a úsáid chun cód a instealladh isteach i bpróisis treallach nó sonraí truaillithe i gcomhaid oscailte. Mar shampla, is féidir leat inneachar an chomhaid údaraithe_keys a athrú don phróiseas sshd. Tá fréamhshamhail den shaothrú ar fáil lena thástáil.

Ainmníodh an fhadhb mar Píob Salach, cosúil leis an leochaileacht chriticiúil Salach COW a aithníodh in 2016. Tugtar faoi deara, i dtéarmaí leibhéal contúirte, go bhfuil Píob Salach ar an leibhéal céanna le Dirty COW, ach tá sé i bhfad níos éasca a oibriú. Aithníodh an leochaileacht le linn na hanailíse ar ghearáin faoi éilliú tréimhsiúil na gcomhad a íoslódáiltear thar an líonra i gcóras a íoslódálann cartlanna comhbhrúite ó fhreastalaí loga (37 éilliú i 3 mhí ar chóras luchtaithe), ar baineadh úsáid as an oibríocht splice() lena n-ullmhú. agus píopaí gan ainm.

Is cosúil go bhfuil an leochaileacht ag tosú leis an eithne Linux 5.8, a eisíodh i mí Lúnasa 2020, i.e. i láthair i Debian 11, ach ní dhéanann sé difear don eithne bonn i Ubuntu 20.04 LTS. Tá na heithne RHEL 8.x agus openSUSE/SUSE 15 bunaithe ar shean-bhrainsí ar dtús, ach d’fhéadfadh gur cuireadh an t-athrú ba chúis leis an bhfadhb siar orthu (níl aon sonraí cruinne ann fós). Is féidir leat foilsiú nuashonruithe pacáiste a rianú i dáiltí ar na leathanaigh seo: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Moladh réiteach don leochaileacht in eisiúintí 5.16.11, 5.15.25 agus 5.10.102. Tá an tsocrú san áireamh freisin san eithne a úsáidtear san ardán Android.

Is é is cúis leis an leochaileacht ná easpa tosaithe an luach “buf->flags” i gcód na bhfeidhmeanna copy_page_to_iter_pipe() agus push_pipe(), in ainneoin nach bhfuil an chuimhne glanta agus struchtúr á leithdháileadh agus le linn ionramhálacha áirithe le píopaí gan ainm, luach ó oibríocht eile. Trí úsáid a bhaint as an ngné seo, is féidir le húsáideoir áitiúil neamhphríobháideach cuma an luacha PIPE_BUF_FLAG_CAN_MERGE sa bhratach a bhaint amach, rud a ligeann duit forscríobh sonraí a eagrú i dtaisce an leathanaigh trí shonraí nua a scríobh chuig píopa gan ainm a ullmhaíodh go speisialta.

Le haghaidh ionsaí, ní mór an spriocchomhad a bheith inléite, agus ós rud é nach ndéantar cearta rochtana a sheiceáil agus tú ag scríobh chuig an bpíobán, is féidir athsholáthar sa taisce leathanaigh a dhéanamh freisin do chomhaid atá suite i ndeighiltí inléite amháin (mar shampla, do chomhaid c CD- ROM). Tar éis an fhaisnéis a athsholáthar sa taisce leathanach, nuair a bheidh sonraí ó chomhad á léamh, ní bhfaighidh an próiseas na sonraí iarbhír, ach na sonraí athsholáthair.

Is éard atá i gceist le hoibríocht ná cainéal gan ainm a chruthú agus é a líonadh le sonraí treallach lena chinntiú go bhfuil an bhratach PIPE_BUF_FLAG_CAN_MERGE socraithe i ngach struchtúr fáinne a bhaineann leis. Ansin, léitear na sonraí ón gcainéal, ach tá an bhratach fós socraithe i ngach cás den struchtúr pipe_buffer sna struchtúir fáinne pipe_inode_info. Déantar glao ar splice() ansin chun sonraí ón spriocchomhad a léamh isteach i bpíobán gan ainm, ag tosú leis an bhfritháireamh atá ag teastáil. Agus sonraí á scríobh chuig an bpíopa gan ainm seo, de bharr bratach PIPE_BUF_FLAG_CAN_MERGE a bheith socraithe, déanfar na sonraí sa taisce leathanaigh a fhorscríobh in ionad sampla nua den struchtúr pipe_buffer a chruthú.

Foinse: oscailtenet.ru

Add a comment