Athari katika PAM na libblockdev ambayo inaruhusu haki za mizizi kupatikana katika mfumo

Qualys ametambua uwezekano wa kuathiriwa (CVE-2025-6019) katika maktaba ya libblockdev ambayo inaruhusu marupurupu ya mizizi kupatikana katika mfumo kupitia upotoshaji na mchakato wa usuli wa udisks. Mfano wa unyonyaji umeonyeshwa katika Ubuntu, Debian, Fedora, na openSUSE Leap 15.

Mchakato wa udisks hutumiwa na karibu usambazaji wote wa Linux na hutoa kiolesura cha D-Bus kwa ajili ya kutekeleza shughuli za uhifadhi kama vile kuweka na kuumbiza. Ili kutekeleza vitendo kwenye vifaa vya kuhifadhi, udisks huita vitendaji vya maktaba ya libblockdev. Kwa chaguo-msingi, udisks zinapatikana tu kwa watumiaji wanaoendesha katika muktadha wa "allow_active", yaani, wale walio na ufikiaji wa kimwili kwa kompyuta na waliounganishwa kupitia kiweko cha ndani au kuendesha kipindi cha picha. Watumiaji wanaounganisha kwa mbali, kwa mfano kupitia ssh, hawaanguki katika muktadha huu na hawawezi kutumia moja kwa moja uwezekano wa kuathiriwa.

Ili kukwepa kizuizi hiki, unaweza kutumia hila inayokuruhusu kuinua kiwango cha uthibitishaji hadi "allow_active" kwa kudanganya uzinduzi wa huduma ya mtumiaji na matumizi ya systemctl, ambayo polkitd itaona kama ishara ya kipindi cha ndani. Kiini cha njia ni kwamba polkitd huamua uwepo wa ufikiaji wa kimwili na inapeana kiwango cha "allow_active" kulingana na ishara zisizo za moja kwa moja zinazoweza kuathiriwa. Vikwazo vya njia ni kwamba kudanganya polkitd, ni muhimu kwamba kipindi cha mtumiaji wa ndani na ufikiaji wa kimwili tayari kinatumika katika mfumo.

Mbinu ya pili ya kupata haki za "allow_active" ni kutumia uwezekano wa kuathiriwa (CVE-2025-6018) katika PAM (Moduli za Uthibitishaji Zinazoweza Kuchomekwa), ambazo watafiti wa Qualys waligundua walipokuwa wakichanganua uwezekano wa kuathiriwa katika libblockdev. Athari hii inamruhusu mtumiaji yeyote, ikiwa ni pamoja na aliyeunganishwa kupitia SSH, kutekeleza shughuli katika muktadha wa "allow_active". Suala hili ni mahususi kwa mipangilio ya PAM katika openSUSE Leap 15 na SUSE Linux Enterprise 15, na inajidhihirisha tu katika usambazaji huu.

Sehemu ya pam_env katika openSUSE na SUSE ina ~/.pam_environment usomaji wa faili umewezeshwa kwa chaguomsingi. Kupitia faili hii, mtumiaji anaweza kuweka vigezo vya mazingira XDG_SEAT=seat0 na XDG_VTNR=1, ambavyo vitatafsiriwa kama ishara ya uwepo wa mtumiaji wakati wa uchakataji zaidi, hata kama kuingia kulitekelezwa kupitia SSH. Moduli ya pam_env pia inaitwa wakati wa kuunganishwa kupitia ssh katika Debian 12 na Ubuntu 24.04 (imezimwa katika Debian 13 na Ubuntu 24.10+), lakini mipangilio ya vigeu vya mazingira katika usambazaji huu haiwezi kutumika kuongeza kiwango cha ufikiaji hadi "allow_active", kwani pam_env inaitwa katika hatua ya mwisho baada ya kupakia parameta ya mazingira iliyowekwa na haiwezi kuathiri vigezo vya mazingira ya pam_systemd.

Kuhusu uwezekano wa kuathirika katika libblockdev, mshambulizi anaweza kuweka picha ya mfumo wa faili kiholela katika hali ya kitanzi, akiweka faili inayoweza kutekelezeka na bendera ya mizizi ya SUID au kifaa maalum (/dev/mem) kwa ufikiaji wa kiwango cha chini wa diski au kumbukumbu katika picha hii. Ili kuzuia mashambulizi hayo, picha za FS huwekwa na mfumo na bendera za nosuid na nodev, lakini udhaifu katika libblockdev hufanya iwezekanavyo kuweka picha bila nosuid na nodev bendera. Kiini cha athari ni kwamba udisk huruhusu mtumiaji aliye na kiwango cha ufikiaji cha "allow_active" kubadilisha saizi ya mifumo yao ya faili, na libblockdev huweka FS kwa muda bila kuweka bendera za nosuid na nodev wakati wa operesheni hii.

Kwa hivyo, shambulio hilo linakuja kuunda kifaa cha kitanzi kulingana na picha ya mfumo wa faili ya XFS ambayo ina faili ya mizizi ya suid, kuanzisha operesheni ya kubadilisha saizi ya kifaa cha kitanzi, na kufuatilia wakati kimewekwa kwenye saraka ya /tmp/blockdev*: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksetxftl — udisksetupsfile loop. —no-user-interaction Faili iliyopangwa ./xfs.image kama /dev/loop0. mwathirika> wakati kweli; fanya /tmp/blockdev*/bash -c 'lala 10; ls -l /tmp/blockdev*/bash' && break; kufanyika 2>/dev/null & victim> gdbus call —system —dest org.freedesktop.UDisks2 —object-path /org/freedesktop/UDisks2/block_devices/loop0 —njia org.freedesktop.UDisks2.Filesystem.Resize 0 '{}' Hitilafu: GDBus.Error:org.freedesktop.UDisks2.Error.Imeshindwa: Hitilafu katika kubadilisha ukubwa wa mfumo wa faili kwenye /dev/loop0: Imeshindwa kuteremsha '/dev/loop0' baada ya kubadilisha ukubwa wake: lengo lina shughuli nyingi -r-sr-xr-x. 1 mzizi 1406608 Jun 18 09:42 /tmp/blockdev.RSM429/bash mwathirika> /tmp/blockdev*/bash -p mwathirika# id uid=65534(hakuna) gid=65534(hakuna) euid=0(mizizi65534 vikundi(nobody)

Athari katika libblockdev imebanwa tu hadi sasa. Unaweza kuangalia hali ya toleo jipya la kifurushi au utayarishaji wa kurekebisha katika usambazaji kwenye kurasa zifuatazo (ikiwa ukurasa haupatikani, inamaanisha kwamba watengenezaji wa usambazaji bado hawajaanza kuzingatia tatizo): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo na Arch (1, 2). Kama suluhu ya kuzuia uwezekano wa kuathiriwa, unaweza kubadilisha kanuni ya ufikiaji ya operesheni "org.freedesktop.udisks2.modify-device" katika polkit kwa kubadilisha thamani ya kigezo "allow_active" kutoka "ndiyo" hadi "auth_admin" katika faili /usr/share/polkit-1/actions.cydesktop.Usfree.

Zaidi ya hayo, uwezekano wa kuathiriwa (CVE-2025-6020) katika kifurushi cha linux-pam, ambacho kilifichuliwa saa chache zilizopita, huruhusu mtumiaji wa ndani kupata haki za msingi. Moduli ya pam_namespace haikukagua ipasavyo njia za faili zinazodhibitiwa na mtumiaji, ambayo iliruhusu faili zilizobahatika katika mfumo kuandikwa upya kupitia upotoshaji na viungo vya ishara na kufikia hali ya mbio. Athari hii ilirekebishwa katika toleo la linux-pam 1.7.1. Unaweza kuangalia hali ya toleo jipya la kifurushi au utayarishaji wa kurekebisha katika usambazaji kwenye kurasa zifuatazo: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo na Arch (1, 2).

Chanzo: opennet.ru

Kuongeza maoni