Root-sÄrbarhet i paketverktyget Snap

Företaget Qualys har upptÀckt en tredje allvarlig sÄrbarhet (CVE-2022-3328) i verktyget snap-confine, som levereras med SUID-rootflagga och anropas av processen snapd för att skapa en körmiljö för applikationer distribuerade i sjÀlvgÄende paket i snap-format. SÄrbarheten gör det möjligt för en lokal icke-privilegierad anvÀndare att utföra kod med root-rÀttigheter i standardkonfigurationen av Ubuntu. Problemet har ÄtgÀrdats i version 2.57.6 av snapd. Paketuppdateringar har slÀppts för alla stödda versioner av Ubuntu.

Intressant nog kom den aktuella sÄrbarheten till under en korrigering av en liknande sÄrbarhet i snap-confine i februari. Forskare har lyckats ta fram en fungerande exploit som ger rootÄtkomst i Ubuntu Server 22.04, dÀr förutom sÄrbarheten i snap-confine ocksÄ tvÄ sÄrbarheter i multipathd-processen (CVE-2022-41974, CVE-2022-41973) Àr involverade, relaterade till obehörig överföring av privilegierade kommandon och osÀker hantering av symboliska lÀnkar.

SÄrbarheten i snap-confine orsakas av en kapplöpning i funktionen must_mkdir_and_open_with_perms(), som lades till för att skydda mot att katalogen /tmp/snap.$SNAP_NAME byts ut mot en symbolisk lÀnk efter Àgarverifieringen, men innan systemanropet mount görs för att bind-montera katalogerna för snap-paketet. Den tillagda skyddsmekanismen bestod av att döpa om katalogen /tmp/snap.$SNAP_NAME till en annan katalog i /tmp med ett slumpmÀssigt namn, om den finns och inte tillhör anvÀndaren root.

Vid utnyttjande av omdöpningsoperationen av katalogen /tmp/snap.$SNAP_NAME anvÀnde forskarna det faktum att snap-confine ocksÄ skapar katalogen /tmp/snap.rootfs_XXXXXX för roten av snap-paketets innehÄll. Delen "XXXXXX" i namnet vÀljs slumpmÀssigt med mkdtemp(), men ett paket med namnet "rootfs_XXXXXX" kan klara kontrollen i funktionen sc_instance_name_validate (d.v.s. idén Àr att namnet $SNAP_NAME ska anta vÀrdet "rootfs_XXXXXX" och dÀrmed kommer omdöpningsoperationen att leda till att katalogen /tmp/snap.rootfs_XXXXXX skrivs över med roten av snap).

För att Ästadkomma samtidig anvÀndning av /tmp/snap.rootfs_XXXXXX och omdöpning av /tmp/snap.$SNAP_NAME kördes tvÄ instanser av snap-confine. SÄ snart den första instansen skapade /tmp/snap.rootfs_XXXXXX blockerades processen och den andra instansen med paketnamnet rootfs_XXXXXX startades, vilket ledde till att den temporÀra katalogen /tmp/snap.$SNAP_NAME för den andra instansen blev rotkatalogen /tmp/snap.rootfs_XXXXXX för den första. Direkt efter omdöpningen avslutades den andra instansen ovÀntat, och /tmp/snap.rootfs_XXXXXX byttes ut med en timingattack, som utnyttjade sÄrbarheten frÄn februari. Efter bytet togs blockeringen för den första instansen bort och angriparna fick full kontroll över rotkatalogen snap.

I det sista steget skapades en symbolisk lÀnk /tmp/snap.rootfs_XXXXXX/tmp, som anvÀndes av funktionen sc_bootstrap_mount_namespace() för bindmontering av den skrivbara verkliga katalogen /tmp i vilken filsystemskatalog som helst, eftersom anropet mount() följer symboliska lÀnkar före montering. SÄdan montering blockeras av AppArmor-begrÀnsningar, men för att kringgÄ denna blockering utnyttjades tvÄ assistanssÄrbarheter i multipathd i exploitet.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster