Осебпазирӣ дар ядрои Linux, ки метавонад файлҳои танҳо барои хонданро вайрон кунад

Дар ядрои Linux (CVE-2022-0847) осебпазирӣ муайян карда шудааст, ки имкон медиҳад, ки мундариҷаи кэши саҳифа барои ҳама гуна файлҳо, аз ҷумла онҳое, ки дар ҳолати танҳо барои хондан, бо парчами O_RDONLY кушода ё дар системаҳои файлии дар режими танҳо барои хондан. Аз ҷониби амалӣ, осебпазирӣ метавонад барои ворид кардани код ба равандҳои худсарона ё вайрон кардани маълумот дар файлҳои кушода истифода шавад. Масалан, шумо метавонед мундариҷаи файли authorized_keys-ро барои раванди sshd тағир диҳед. Истифодаи прототип барои озмоиш дастрас аст.

Мушкилот бо шабеҳи осебпазирии муҳими Dirty COW, ки соли 2016 муайян шудааст, номи рамзии Dirty Pipe дода шудааст. Қайд карда мешавад, ки қубури Dirty Pipe аз нигоҳи хатар дар як сатҳ бо Dirty COW қарор дорад, аммо кораш хеле осонтар аст. осебпазирӣ ҳангоми таҳлили шикоятҳо дар бораи осеби даврии файлҳои аз шабака зеркашидашуда дар системае, ки архивҳои фишурдашударо аз сервери лог (37 зарар дар 3 моҳ дар системаи пурборшуда) зеркашӣ мекунад, ки бо истифода аз амалиёти splice() таҳия шудаанд, муайян карда шуд. ва кубурхои бе ном.

Осебият пас аз ядрои Linux 5.8, ки моҳи августи соли 2020 бароварда шудааст, зоҳир мешавад, яъне. дар Debian 11 мавҷуд аст, аммо ба ядрои асосӣ дар Ubuntu 20.04 LTS таъсир намерасонад. Ядроҳои RHEL 8.x ва openSUSE/SUSE 15 аслан ба шохаҳои кӯҳна асос ёфтаанд, аммо эҳтимол дорад, ки тағироте, ки боиси мушкилот ба вуҷуд омадааст, ба онҳо интиқол дода шудааст (ҳанӯз маълумоти дақиқ нест). Шумо метавонед нашри навсозиҳои бастаҳоро дар дистрибюторҳо дар ин саҳифаҳо пайгирӣ кунед: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Ислоҳи осебпазирӣ дар релизҳои 5.16.11, 5.15.25 ва 5.10.102 пешниҳод шудааст. Ислоҳ инчунин ба ядрое, ки дар платформаи Android истифода мешавад, дохил карда шудааст.

осебпазирӣ аз сабаби набудани инициализатсияи арзиши "buf->flags" дар коди функсияҳои copy_page_to_iter_pipe() ва push_pipe(), сарфи назар аз он, ки хотира ҳангоми ҷудо кардани сохтор тоза карда намешавад ва бо муайян. манипуляцияҳо бо қубурҳои беном, "buf-> flags" метавонад арзиши амалиёти дигарро дар бар гирад. Бо истифода аз ин хусусият, як корбари маҳаллӣ беимтиёз метавонад пайдоиши арзиши PIPE_BUF_FLAG_CAN_MERGE дар парчам ба даст орад, ки ба шумо имкон медиҳад, ки маълумотро дар кэши саҳифа тавассути навиштани маълумоти нав ба қубури (қубури) махсус омодашудаи номнамуд.

Барои ҳамла файли мавриди ҳадаф бояд хондашаванда бошад ва азбаски ҳангоми навиштан ба қубур ҳуқуқи дастрасӣ тафтиш карда намешавад, иваз кардани кэши саҳифа мумкин аст, аз ҷумла барои файлҳое, ки дар қисмҳои танҳо барои хондан ҷойгир шудаанд (масалан, барои файлҳои c CD-ROM). Пас аз иваз кардани маълумот дар кэши саҳифа, раванд ҳангоми хондани маълумот аз файл на воқеиро, балки маълумоти ивазшударо мегирад.

Амалиёт ба эҷоди қубури номашом ва пур кардани он бо маълумоти худсарона барои ноил шудан ба танзими парчами PIPE_BUF_FLAG_CAN_MERGE дар ҳама сохторҳои ҳалқаи бо он алоқаманд аст. Баъдан, маълумот аз қубур хонда мешавад, аммо парчам дар ҳама ҳолатҳои сохтори pipe_buffer дар сохторҳои ҳалқаи pipe_inode_info гузошта мешавад. Сипас занги splice() барои хондани маълумот аз файли мавриди ҳадаф ба қубури номношуда аз ҷуброни зарурӣ оғоз карда мешавад. Вақте ки маълумот ба ин қубури беном навишта мешавад, парчами PIPE_BUF_FLAG_CAN_MERGE ба ҷои сохтани як мисоли нави сохтори pipe_buffer маълумотро дар кэши саҳифа аз нав менависад.

Манбаъ: opennet.ru

Илова Эзоҳ