Erro ahultasuna Snap Package Management Toolkit-en

Qualys-ek aurten hirugarren ahultasun arriskutsua identifikatu du (CVE-2022-3328) snap-confine utilitatean, SUID root banderarekin datorrena eta snapd prozesuak deitzen duena pakete autonomoetan banatutako aplikazioetarako ingurune exekutagarri bat sortzeko. snap formatuan. Zaurgarritasunari esker, pribilegiorik gabeko tokiko erabiltzaileari kodea exekutatzeko root gisa Ubuntu konfigurazio lehenetsian. Arazoa snapd 2.57.6 bertsioan konpondu da. Pakete-eguneratzeak kaleratu dira Ubuntu-ren onartzen diren adar guztietarako.

Interesgarria da ahultasuna snap-confine-n otsaileko antzeko ahultasun bat konpontzeko prozesuan sartu zen. Ikertzaileek Ubuntu Server 22.04-rako root sarbidea eskaintzen duen lan-explotazioa prestatu ahal izan zuten, eta horrek, snap-confine-ko ahultasunaz gain, bide anitzeko prozesuan bi ahultasun ere inplikatzen ditu (CVE-2022-41974, CVE-2022-41973). , aginte-egiaztapena saihestuarekin lotutako komando pribilegiatuak transmititzean eta esteka sinbolikoekin lan ez segurua.

Snap-confine-n ahultasuna must_mkdir_and_open_with_perms() funtzioko lasterketa-baldintza batek eragiten du, /tmp/snap.$SNAP_NAME direktorioaren ordezkapenetik babesteko gehitutakoa jabea egiaztatu ondoren, baina muntaketa-sistemara deitu aurretik. deitu snap formatuan pakete baterako direktorioetara muntatzeko. Gehitutako babesa /tmp/snap.$SNAP_NAME direktorioari /tmp-ko beste direktorio batera izendatzea izan zen ausazko izen batekin, baldin badago eta root-aren jabetzakoa ez bada.

/tmp/snap.$SNAP_NAME direktorioaren izena aldatzeko eragiketa ustiatzean, ikertzaileek snap-confine-k /tmp/snap.rootfs_XXXXXX direktorio bat ere sortzen duela snap paketearen edukiaren errorako aprobetxatu zuten. Izenaren "XXXXXX" zatia ausaz aukeratzen du mkdtemp(k), baina "rootfs_XXXXXX" izeneko pakete bat balioztatu daiteke sc_instance_name_validate funtzioan (hau da, ideia da $SNAP_NAME "rootfs_XXXXXX" gisa ezarriko dela eta ondoren izena aldatzeko eragiketa) /tmp/snap.rootfs_XXXXXX direktorioa root snap-arekin gainidatziko du).

/tmp/snap.rootfs_XXXXXX aldi berean erabiltzeko eta /tmp/snap.$SNAP_NAME izena aldatzeko, snap-confine-ren bi instantzia abiarazi ziren. Lehen instantzia /tmp/snap.rootfs_XXXXXX sortu ondoren, prozesua blokeatu egingo litzateke eta bigarren instantzia bat rootfs_XXXXXX pakete izenarekin hasiko da, bigarren instantziako aldi baterako /tmp/snap.$SNAP_NAME /tmp/snap direktorio bihurtuko delarik. Lehenengoaren .rootfs_XXXXXX. Izena aldatu eta berehala, bigarren instantzia huts egin zuen eta /tmp/snap.rootfs_XXXXXX lasterketa-baldintzen manipulazioarekin ordezkatu zen, otsaileko ahultasuna ustiatzean bezala. Ordezkapenaren ondoren, exekuzio blokeoa lehen instantziatik kendu zen eta erasotzaileek snap root direktorioaren kontrol osoa lortu zuten.

Azken urratsa /tmp/snap.rootfs_XXXXXX/tmp esteka sinbolikoa sortzea izan zen, sc_bootstrap_mount_namespace() funtzioak /tmp benetako direktorio idazgarria fitxategi-sistemako edozein direktoriotara lotzeko erabiltzen zuena, mount() deia geroztik. esteka sinbolikoak jarraitzen ditu muntatu aurretik. Muntatze hori AppArmor murrizketek blokeatzen dute, baina bloke hori saihesteko, ustiapenak bi ahultasun laguntzaile erabili zituen multipathd-en.

Iturria: opennet.ru

Gehitu iruzkin berria