Vietējās saknes ievainojamības Snap pakotņu pārvaldības rīkkopā

Qualys ir identificējis divas ievainojamības (CVE-2021-44731, CVE-2021-44730) snap-confine utilītprogrammā, kas tiek piegādāta kopā ar SUID saknes karogu un ko izsauc snapd process, lai izveidotu izpildāmu vidi lietojumprogrammām, kas tiek piegādātas autonomās pakotnēs. snap formātā. Ievainojamības ļauj vietējam nepievilinātam lietotājam sistēmā izpildīt kodu ar root tiesībām. Problēmas ir atrisinātas šodienas snapd pakotnes atjauninājumā Ubuntu 21.10, 20.04 un 18.04.

Pirmā ievainojamība (CVE-2021-44730) pieļauj uzbrukumu, izmantojot cietās saites manipulācijas, taču ir jāatspējo sistēmas cietās saites aizsardzība (iestatot sysctl fs.protected_hardlinks uz 0). Problēmu izraisa nepareiza palīgprogrammu snap-update-ns un snap-discard-ns izpildāmo failu atrašanās vietas pārbaude, kas darbojas kā root. Ceļš uz šiem failiem tika aprēķināts funkcijā sc_open_snapd_tool(), pamatojoties uz tās paša ceļu no /proc/self/exe, kas ļauj izveidot cieto saiti, lai savā direktorijā snap-confine un ievietotu savas snap- versijas. update-ns un papildprogrammas šajā direktorijā. Discard-ns. Pēc palaišanas, izmantojot cieto saiti, snap-confine ar saknes tiesībām palaiž snap-update-ns un snap-discard-ns failus no pašreizējā direktorija, ko aizvietos uzbrucējs.

Otro ievainojamību izraisa sacensību stāvoklis, un to var izmantot noklusējuma Ubuntu darbvirsmas konfigurācijā. Lai ekspluatācija veiksmīgi darbotos Ubuntu serverī, instalēšanas laikā ir jāatlasa viena no pakotnēm sadaļā “Featured Server Snaps”. Sacensību nosacījums ir redzams funkcijā setup_private_mount(), kas tiek izsaukta pievienošanas punkta nosaukumvietas sagatavošanas laikā snap pakotnei. Šī funkcija izveido pagaidu direktoriju “/tmp/snap.$SNAP_NAME/tmp” vai izmanto esošu direktoriju, lai tajā piesaistītu pievienošanas direktorijus, lai pievienotu pakotni.

Tā kā pagaidu direktorija nosaukums ir paredzams, uzbrucējs pēc īpašnieka pārbaudes, bet pirms mount sistēmas izsaukuma izsaukšanas var aizstāt tā saturu ar simbolisku saiti. Piemēram, direktorijā /tmp/snap.lxd varat izveidot saiti "/tmp/snap.lxd/tmp", kas norāda uz patvaļīgu direktoriju, un izsaukums mount() sekos simbolsaitei un pievienos direktoriju snap nosaukumvieta. Līdzīgā veidā varat pievienot saturu mapē /var/lib un, aizstājot /var/lib/snapd/mount/snap.snap-store.user-fstab, organizēt direktorijas /etc pievienošanu nosaukumvietā snap pakotne, lai organizētu bibliotēkas ielādi no saknes tiesībām, aizstājot /etc/ld.so.preload.

Tiek atzīmēts, ka ekspluatācijas izveide izrādījās nenozīmīgs uzdevums, jo snap-confine utilīta ir rakstīta Go, izmantojot drošas programmēšanas metodes, tai ir aizsardzība, kuras pamatā ir AppArmor profili, filtrē sistēmas zvanus, pamatojoties uz seccomp mehānismu, un izmanto mount nosaukumvieta izolācijai. Tomēr pētnieki varēja sagatavot darba izmantošanu, lai iegūtu sistēmas saknes tiesības. Ekspluatācijas kods tiks publicēts dažu nedēļu laikā pēc tam, kad lietotāji instalēs nodrošinātos atjauninājumus.

Avots: opennet.ru

Pievieno komentāru