Qualys-ը libblockdev գրադարանում հայտնաբերել է խոցելիություն (CVE-2025-6019), որը թույլ է տալիս root արտոնություններ ստանալ udisks-ի ֆոնային գործընթացը մանիպուլյացիայի ենթարկելով։ Նախատիպի շահագործումը ցուցադրվել է Ubuntu, Debian, Fedora և openSUSE Leap 15:
Udisks գործընթացը օգտագործվում է գրեթե բոլոր բաշխումներում։ Linux և ապահովում է D-Bus ինտերֆեյս՝ պահեստավորման գործողություններ կատարելու համար, ինչպիսիք են միացումը և ձևաչափումը: Պահեստավորման գործողություններ կատարելու համար udisks-ը կանչում է libblockdev գրադարանի ֆունկցիաները: Ըստ լռելյայնի, udisks-ներին մուտքը հասանելի է միայն «allow_active» համատեքստում աշխատող օգտատերերին, այսինքն՝ նրանց, ովքեր ունեն համակարգչին ֆիզիկական մուտք և միացված են տեղական կոնսոլի կամ գրաֆիկական սեսիայի միջոցով: Հեռակա միացող օգտատերերը, օրինակ՝ SSH-ի միջոցով, չեն նշանակվում այս համատեքստին և չեն կարող ուղղակիորեն շահագործել խոցելիությունը:
Այս սահմանափակումը շրջանցելու համար կարող եք օգտագործել մի հնարք, որը թույլ է տալիս բարձրացնել նույնականացման մակարդակը մինչև «allow_active»՝ մանիպուլյացիաներ կատարելով օգտատիրոջ ծառայության մեկնարկի վրա systemctl օգտակար ծրագրի միջոցով, որը polkitd-ը կընկալի որպես տեղական սեսիայի նշան: Մեթոդի էությունն այն է, որ polkitd-ը որոշում է ֆիզիկական մուտքի առկայությունը և նշանակում է «allow_active» մակարդակը՝ հիմնվելով անուղղակի նշանների վրա, որոնց վրա կարելի է ազդել: Մեթոդի սահմանափակումներն այն են, որ polkitd-ին խաբելու համար անհրաժեշտ է, որ համակարգում արդեն ակտիվ լինի ֆիզիկական մուտք ունեցող տեղական օգտատիրոջ սեսիա:
«allow_active» արտոնություններ ստանալու երկրորդ մեթոդը PAM-ում (Pluggable Authentication Modules) խոցելիության (CVE-2025-6018) շահագործումն է, որը Qualys-ի հետազոտողները հայտնաբերել են libblockdev-ում խոցելիության վերլուծության ընթացքում: Խոցելիությունը թույլ է տալիս ցանկացած օգտատիրոջ, այդ թվում՝ SSH-ի միջոցով միացվածներին, կատարել գործողություններ «allow_active» համատեքստում: Խնդիրը բնորոշ է openSUSE Leap 15-ի և SUSE-ի PAM կարգավորումներին: Linux Enterprise 15-ը և հայտնվում է միայն այս բաշխումներում։
openSUSE-ում և SUSE-ում pam_env մոդուլը լռելյայնորեն թույլատրված է կարդալ ~/.pam_environment ֆայլը: Այս ֆայլը թույլ է տալիս օգտատիրոջը սահմանել XDG_SEAT=seat0 և XDG_VTNR=1 միջավայրի փոփոխականները, որոնք կմշակվեն որպես օգտատիրոջ ֆիզիկական ներկայության ապացույց, նույնիսկ եթե օգտատերը իրականում մուտք է գործել SSH-ի միջոցով: pam_env մոդուլը կանչվում է նաև SSH-ի միջոցով միանալու ժամանակ: Debian 12 եւ Ubuntu 24.04 (դյույմ) Debian 13 եւ Ubuntu 24.10+ տարբերակում այն անջատված է), սակայն այս բաշխումներում միջավայրի փոփոխականներ սահմանելը չի կարող օգտագործվել մուտքի մակարդակը «allow_active»-ի բարձրացնելու համար, քանի որ pam_env-ն կանչվում է pam_systemd մոդուլը բեռնելուց հետո վերջին փուլում, և միջավայրի սահմանված փոփոխականները չեն կարող ազդել սեսիայի պարամետրերի վրա։
Ինչ վերաբերում է libblockdev-ի խոցելիությանը, հարձակվողը կարող է կամայական ֆայլային համակարգի պատկերը միացնել ցիկլային ռեժիմով՝ տեղադրելով SUID root դրոշակով կատարվող ֆայլ կամ հատուկ սարք (/dev/mem) սկավառակներին կամ հիշողությանը ցածր մակարդակի մուտք գործելու համար այս պատկերում: Նման հարձակումները կանխելու համար, FS պատկերները համակարգը միացնում է nosuid և nodev դրոշներով, բայց libblockdev-ի խոցելիությունը հնարավորություն է տալիս պատկերը միացնել առանց nosuid և nodev դրոշների: Խոցելիության էությունն այն է, որ udisks-ը թույլ է տալիս «allow_active» մուտքի մակարդակ ունեցող օգտատիրոջը փոխել իր ֆայլային համակարգերի չափը, և libblockdev-ը ժամանակավորապես միացնում է FS-ն՝ առանց nosuid և nodev դրոշները սահմանելու այս գործողության ընթացքում:
Այսպիսով, հարձակումը հանգում է XFS ֆայլային համակարգի պատկերի վրա հիմնված ցիկլային սարքի ստեղծմանը, որը պարունակում է suid root ֆայլ, ցիկլային սարքի չափը փոխելու գործողության մեկնարկին և /tmp/blockdev* գրացուցակում դրա միացման պահի մոնիթորինգին. victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup —file ./xfs.image —no-user-interaction Mapped file ./xfs.image as /dev/loop0. victim> while true; do /tmp/blockdev*/bash -c 'sleep 10; ls -l /tmp/blockdev*/bash' && break; done 2>/dev/null & victim> gdbus call —system —dest org.freedesktop.UDisks2 —object-path /org/freedesktop/UDisks2/block_devices/loop0 —method org.freedesktop.UDisks2.Filesystem.Resize 0 '{}' Սխալ՝ GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Սխալ ֆայլային համակարգի չափսերի փոփոխման ժամանակ /dev/loop0-ում. Չհաջողվեց ապամոնտաժել '/dev/loop0'-ը չափսերի փոփոխումից հետո. թիրախը զբաղված է -r-sr-xr-x. 1 արմատ root 1406608 Հունիս 18 09:42 /tmp/blockdev.RSM429/bash victim> /tmp/blockdev*/bash -p victim# id uid=65534(nobody) gid=65534(nobody) euid=0(root) groups=65534(nobody)
Libblockdev-ի խոցելիությունը մինչ այժմ միայն թարմացվել է։ Դուք կարող եք ստուգել նոր փաթեթի տարբերակի կարգավիճակը կամ ձեր բաշխումների համար թարմացման պատրաստման գործընթացը հետևյալ էջերում (եթե էջը հասանելի չէ, բաշխման մշակողները դեռ չեն սկսել խնդրի ուսումնասիրությունը): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo և Arch (1, 2): Որպես խոցելիությունը արգելափակելու շրջանցիկ միջոց, դուք կարող եք փոփոխել polkit-ում «org.freedesktop.udisks2.modify-device» գործողության մուտքի կանոնը՝ /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy ֆայլում «allow_active» պարամետրը «այո»-ից փոխելով «auth_admin»-ի:
Բացի այդ, linux-pam փաթեթում առկա խոցելիությունը (CVE-2025-6020), որը բացահայտվել է մի քանի ժամ առաջ, թույլ է տալիս տեղական օգտատիրոջը ստանալ root արտոնություններ: pam_namespace մոդուլը պատշաճ կերպով չի ստուգել օգտատիրոջ կողմից կառավարվող ֆայլերի ուղիները՝ թույլ տալով համակարգում վերագրել արտոնյալ ֆայլերը սիմվոլիկ հղումների մանիպուլյացիայի և մրցավազքի պայմանների միջոցով: Խոցելիությունը շտկվել է linux-pam 1.7.1-ում: Դուք կարող եք ստուգել փաթեթի նոր տարբերակի կամ բաշխումների համար պատրաստվող թարմացման կարգավիճակը հետևյալ էջերում. Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo և Arch (1, 2):
Source: opennet.ru
