Irakurtzeko soilik diren fitxategiak hondatzea ahalbidetzen duen Linux nukleoan ahultasuna

Linux nukleoan (CVE-2022-0847) ahultasun bat identifikatu da, orriaren cachearen edukia edozein fitxategitan gainidaztea ahalbidetzen duena, irakurtzeko moduan daudenak barne, O_RDONLY banderarekin irekitakoak edo fitxategi-sistemetan kokatutakoak barne. irakurtzeko soilik moduan muntatua. Termino praktikoetan, ahultasuna prozesu arbitrarioetan kodea sartzeko edo irekitako fitxategietan datuak hondatzeko erabil liteke. Adibidez, authorized_keys fitxategiaren edukia alda dezakezu sshd prozesurako. Explotazioaren prototipo bat eskuragarri dago probak egiteko.

Arazoari Dirty Pipe izena jarri diote, Dirty COW 2016an identifikatutako ahultasun kritikoaren antzekoa. Kontuan izan da arrisku-mailari dagokionez, Dirty Pipe Dirty COW-ren maila berean dagoela, baina askoz errazagoa dela funtzionatzen. Ahultasuna erregistro-zerbitzari batetik artxibo konprimituak deskargatzen dituen sistema batean sarean deskargatutako fitxategien aldizkako ustelkeriari buruzko kexak aztertzean identifikatu zen (37 ustelkeria 3 hilabetean kargatutako sistema batean), eta horien prestaketan splice() eragiketa erabili zuen. eta izenik gabeko hodiak.

Ahultasuna 5.8ko abuztuan kaleratutako Linux kernel 2020tik hasita agertzen da, hau da. Debian 11n dago, baina ez dio oinarrizko nukleoari eragiten Ubuntu 20.04 LTS-n. RHEL 8.x eta openSUSE/SUSE 15 nukleoak hasiera batean adar zaharretan oinarritzen dira, baina baliteke arazoa eragiten duen aldaketa haietan atzera eraman izana (oraindik ez dago datu zehatzik). Paketeen eguneratzeak banaketak orrialde hauetan jarraitu ditzakezu: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Ahultasunerako konponketa bat proposatu zen 5.16.11, 5.15.25 eta 5.10.102 bertsioetan. Konponketa Android plataforman erabiltzen den nukleoan ere sartzen da.

Ahultasuna copy_page_to_iter_pipe() eta push_pipe() funtzioen kodean β€œbuf->flags” balioaren hasierako ezak eragiten du, nahiz eta memoria garbitu ez den egitura bat esleitzean eta manipulazio jakin batzuetan. izenik gabeko hodiak, beste eragiketa bateko balio bat. Ezaugarri hau erabiliz, tokiko erabiltzaile pribilegiorik gabeko batek PIPE_BUF_FLAG_CAN_MERGE balioaren agerpena lor dezake banderan, eta horri esker orriaren cachean datuen gainidazketa antola dezakezu datu berriak bereziki prestatutako kanalizazio batean idatziz.

Eraso bat izateko, xede-fitxategia irakurgarria izan behar da, eta sarbide-eskubideak ez direnez kanalean idaztean egiaztatzen, orrialdearen cachean ordezkatu daiteke irakurtzeko soilik muntatutako partizioetan kokatutako fitxategietarako (adibidez, c CD- fitxategietarako). ROM). Orriaren cacheko informazioa ordezkatu ondoren, fitxategi bateko datuak irakurtzean, prozesuak ez ditu benetako datuak jasoko, ordezkaturiko datuak baizik.

Funtzionamendua izenik gabeko kanal bat sortzea eta datu arbitrarioz betetzea da, PIPE_BUF_FLAG_CAN_MERGE bandera harekin lotutako eraztun-egitura guztietan ezarrita dagoela ziurtatzeko. Ondoren, datuak kanaletik irakurtzen dira, baina pipe_inode_info eraztun egituretako pipe_buffer egituraren instantzia guztietan ezarrita geratzen da bandera. Ondoren, splice()-ra dei bat egiten da xede-fitxategiko datuak izenik gabeko kanalizazio batera irakurtzeko, nahi den desplazamendutik hasita. Izenik gabeko kanalizazio honetan datuak idaztean, PIPE_BUF_FLAG_CAN_MERGE bandera ezarrita dagoenez, orriaren cacheko datuak gainidatziko dira pipe_buffer egituraren instantzia berri bat sortu beharrean.

Iturria: opennet.ru

Gehitu iruzkin berria