осебпазирии реша дар абзори идоракунии бастаи Snap

Qualys осебпазирии сеюми хатарнокро дар соли равон муайян кард (CVE-2022-3328) дар утилитаи snap-confine, ки бо парчами решаи SUID меояд ва аз ҷониби раванди snapd барои эҷоди муҳити иҷрошаванда барои замимаҳои дар бастаҳои мустақил паҳншуда даъват карда мешавад. дар формати snap. Ин осебпазирӣ ба корбари беимтиёзи маҳаллӣ имкон медиҳад, ки иҷрои кодро ҳамчун реша дар конфигуратсияи пешфарзи Ubuntu ба даст орад. Масъала дар версияи snapd 2.57.6 ҳал карда шудааст. Навсозиҳои бастаҳо барои ҳамаи шохаҳои дастгирӣшавандаи Ubuntu бароварда шудаанд.

Ҷолиб он аст, ки осебпазирии мавриди назар дар ҷараёни ислоҳи осебпазирии шабеҳи моҳи феврал дар snap-confine ҷорӣ шудааст. Тадқиқотчиён тавонистанд як эксплоити кориро омода созанд, ки дастрасии решаро ба Ubuntu Server 22.04 таъмин кунад, ки ба ғайр аз осебпазирӣ дар snap-confine, инчунин ду осебпазириро дар раванди multipathd дар бар мегирад (CVE-2022-41974, CVE-2022-41973) , ки бо гузаштан аз санҷиши ваколатҳо ҳангоми интиқоли фармонҳои имтиёзнок ва кори хатарнок бо истинодҳои рамзӣ алоқаманд аст.

Осебпазирӣ дар snap-confine аз сабаби ҳолати мусобиқа дар функсияи must_mkdir_and_open_with_perms() ба вуҷуд омадааст, ки барои муҳофизат аз иваз кардани директорияи /tmp/snap.$SNAP_NAME бо истиноди рамзӣ пас аз тафтиши соҳиб, вале пеш аз занг задан ба системаи монтаж илова карда шудааст. занг занед, ки директорияҳоро ба он барои бастаи формати фаврӣ пайваст кунед. Муҳофизати иловагӣ аз он иборат буд, ки директорияи /tmp/snap.$SNAP_NAME ба директорияи дигар дар /tmp бо номи тасодуфӣ, агар он мавҷуд бошад ва ба реша тааллуқ надошта бошад.

Ҳангоми истифодаи амалиёти тағир додани номи директорияи /tmp/snap.$SNAP_NAME, муҳаққиқон аз он истифода бурданд, ки snap-confine инчунин директорияи /tmp/snap.rootfs_XXXXXX барои решаи мундариҷаи бастаи snap эҷод мекунад. Қисми "XXXXXX"-и ном аз ҷониби mkdtemp() ба таври тасодуфӣ интихоб карда мешавад, аммо бастаи бо номи "rootfs_XXXXXX" метавонад дар функсияи sc_instance_name_validate тасдиқ карда шавад (яъне идея ин аст, ки $SNAP_NAME ба "rootfs_XXXXXX" ва пас аз тағири номгузорӣ таъин карда мешавад. боиси аз нав навиштани феҳристи /tmp/snap.rootfs_XXXXXX бо решаи реша).

Барои ноил шудан ба истифодаи ҳамзамон /tmp/snap.rootfs_XXXXXX ва тағир додани номи /tmp/snap.$SNAP_NAME, ду мисоли snap-confine оғоз карда шуданд. Пас аз он ки намунаи аввал /tmp/snap.rootfs_XXXXXX эҷод шуд, раванд баста мешавад ва намунаи дуюм бо номи бастаи rootfs_XXXXXX оғоз мешавад ва боиси он мегардад, ки директорияи муваққатии намунаи дуюм /tmp/snap.$SNAP_NAME ба директорияи решавӣ /tmp/snap табдил ёбад. .rootfs_XXXXXX аз аввал. Дарҳол пас аз ба итмом расидани ном, нусхаи дуюм шикаст хӯрд ва /tmp/snap.rootfs_XXXXXX бо коркарди ҳолати мусобиқа иваз карда шуд, ба мисли ҳангоми истифода аз осебпазирии моҳи феврал. Пас аз ивазкунӣ, қулфи иҷро аз марҳилаи аввал хориҷ карда шуд ва ҳамлагарон бар феҳристи решаи фаврӣ назорати пурра гирифтанд.

Қадами охирин сохтани пайванди симои /tmp/snap.rootfs_XXXXXX/tmp буд, ки онро функсияи sc_bootstrap_mount_namespace() барои пайваст кардани директорияи воқеии навишташавандаи /tmp ба ягон директорияи системаи файлӣ истифода мебурд, зеро занги mount() пеш аз васлшавӣ ба аломатҳои зерин пайравӣ мекунад. Чунин васлкунӣ бо маҳдудиятҳои AppArmor баста мешавад, аммо барои гузаштан аз ин блок, эксплоит ду осебпазирии ёрирасонро дар multipathd истифода бурд.

Манбаъ: opennet.ru

Илова Эзоҳ