Enradikiga vundebleco en Snap-paka administra ilaro

Qualys identigis la trian danĝeran vundeblecon ĉi-jare (CVE-2022-3328) en la snap-confine ilo, kiu venas kun la SUID radika flago kaj estas vokita de la snapd-procezo por krei ruleblan medion por aplikoj distribuitaj en memstara klako. pakoj. La vundebleco permesas lokan senprivilegian uzanton atingi kodan ekzekuton kiel radiko en la defaŭlta Ubuntu-agordo. La problemo estas riparita en snapd 2.57.6 eldono. Pakaj ĝisdatigoj estis publikigitaj por ĉiuj subtenataj branĉoj de Ubuntu.

Kurioze, la koncerna vundebleco estis enkondukita dum la procezo de ripari similan februaran vundeblecon en rapida limigo. Esploristoj povis prepari funkciantan ekspluatadon, kiu provizas radikan aliron al Ubuntu-Servilo 22.04, kiu, krom la vundebleco en snap-limigo, ankaŭ implikas du vundeblecojn en la multipathd-procezo (CVE-2022-41974, CVE-2022-41973). , asociita kun preterpasi la aŭtoritatan kontrolon kiam transdono de privilegiaj komandoj kaj nesekura laboro kun simbolaj ligiloj.

La vundebleco en snap-confine estas kaŭzita de raskondiĉo en la funkcio must_mkdir_and_open_with_perms(), aldonita por protekti kontraŭ la anstataŭigo de la dosierujo /tmp/snap.$SNAP_NAME kun simbola ligilo post kontrolo de la posedanto, sed antaŭ vokado de la munta sistemo. voku por ligi-munti dosierujojn en ĝin por pakaĵo en klakformato. La aldonita protekto estis renomi la dosierujon /tmp/snap.$SNAP_NAME al alia dosierujo en /tmp kun hazarda nomo se ĝi ekzistas kaj ne estas posedata de radiko.

Ekspluatante la operacion de renomo de dosierujo /tmp/snap.$SNAP_NAME, la esploristoj profitis la fakton, ke snap-confine ankaŭ kreas dosierujon /tmp/snap.rootfs_XXXXXX por la radiko de la enhavo de la klakpako. La "XXXXXX" parto de la nomo estas elektita hazarde de mkdtemp(), sed pako nomita "rootfs_XXXXXX" povas esti validigita en la sc_instance_name_validate funkcio (t.e. la ideo estas ke $SNAP_NAME estos agordita al "rootfs_XXXXXX" kaj poste la renomooperacio rezultigos anstataŭigi la dosierujon /tmp/snap.rootfs_XXXXXX per la radika klako).

Por atingi samtempan uzon de /tmp/snap.rootfs_XXXXXX kaj renomadon /tmp/snap.$SNAP_NAME, du okazoj de snap-confine estis lanĉitaj. Post kiam la unua kazo kreis /tmp/snap.rootfs_XXXXXX, la procezo blokus kaj dua okazo komenciĝus kun la paknomo rootfs_XXXXXX, igante la provizoran dosierujon de la dua kazo /tmp/snap.$SNAP_NAME fariĝi la radika dosierujo /tmp/snap. .rootfs_XXXXXX de la unua. Tuj post kiam la renomo estis kompletigita, la dua okazo kraŝis, kaj /tmp/snap.rootfs_XXXXXX estis anstataŭigita per raskondiĉa manipulado, kiel dum ekspluatado de la februara vundebleco. Post la anstataŭigo, la ekzekutseruro estis forigita de la unua kazo kaj la atakantoj akiris plenan kontrolon de la klaka radika dosierujo.

La lasta paŝo estis krei simbolligon /tmp/snap.rootfs_XXXXXX/tmp, kiu estis uzata de la funkcio sc_bootstrap_mount_namespace() por ligi-munti la skribeblan realan dosierujon /tmp al iu ajn dosierujo en la dosiersistemo, ekde la alvoko mount(). sekvas simbolligojn antaŭ muntado. Tia muntado estas blokita de AppArmor-limigoj, sed por preteriri ĉi tiun blokon, la ekspluato uzis du helpajn vundeblecojn en multipathd.

fonto: opennet.ru

Aldoni komenton