Wortel kwesbaarheid in Snap pakket bestuur toolkit

Qualys het vanjaar die derde gevaarlike kwesbaarheid (CVE-2022-3328) in die snap-confine-hulpprogram geïdentifiseer, wat saam met die SUID-wortelvlag kom en deur die snapd-proses geroep word om 'n uitvoerbare omgewing te skep vir toepassings wat in selfstandige pakkette versprei word in die snap-formaat. Die kwesbaarheid laat 'n plaaslike onbevoorregte gebruiker toe om kode-uitvoering as wortel in die standaard Ubuntu-konfigurasie te verkry. Die probleem is opgelos in snapd 2.57.6-vrystelling. Pakketopdaterings is vrygestel vir alle ondersteunde takke van Ubuntu.

Interessant genoeg is die betrokke kwesbaarheid bekendgestel tydens die proses om 'n soortgelyke Februarie-kwesbaarheid in snap-confine reg te stel. Navorsers was in staat om 'n werkende ontginning voor te berei wat worteltoegang tot Ubuntu Server 22.04 bied, wat, benewens die kwesbaarheid in snap-confine, ook twee kwesbaarhede in die multipathd-proses behels (CVE-2022-41974, CVE-2022-41973) , wat verband hou met die omseil van die gesagskontrole wanneer die oordrag van bevoorregte opdragte en onveilige werk met simboliese skakels.

Die kwesbaarheid in snap-confine word veroorsaak deur 'n rastoestand in die must_mkdir_and_open_with_perms()-funksie, bygevoeg om te beskerm teen die vervanging van die /tmp/snap.$SNAP_NAME-gids met 'n simboliese skakel nadat die eienaar nagegaan is, maar voordat die bergstelsel geroep is. oproep om dopgehou te bind-berg daarin vir 'n pakket in snap-formaat. Die bykomende beskerming was om die /tmp/snap.$SNAP_NAME-gids te hernoem na 'n ander gids in /tmp met 'n ewekansige naam as dit bestaan ​​en nie deur root besit word nie.

Toe hulle die /tmp/snap.$SNAP_NAME-gidshernoembewerking ontgin het, het die navorsers voordeel getrek uit die feit dat snap-confine ook 'n /tmp/snap.rootfs_XXXXXX-gids vir die wortel van die snap-pakket se inhoud skep. Die "XXXXXX" deel van die naam word lukraak gekies deur mkdtemp(), maar 'n pakket met die naam "rootfs_XXXXXX" kan bekragtig word in die sc_instance_name_validate funksie (d.w.s. die idee is dat $SNAP_NAME gestel sal word op "rootfs_XXXXXX" en dan die hernoem bewerking sal lei tot die oorskryf van die /tmp/snap.rootfs_XXXXXX gids met die root snap).

Om gelyktydige gebruik van /tmp/snap.rootfs_XXXXXX en die hernoeming van /tmp/snap.$SNAP_NAME te verkry, is twee gevalle van snap-confine geloods. Sodra die eerste instansie /tmp/snap.rootfs_XXXXXX geskep het, sal die proses blokkeer en 'n tweede instansie sal begin met die pakketnaam rootfs_XXXXXX, wat veroorsaak dat die tweede instansie se tydelike gids /tmp/snap.$SNAP_NAME die wortelgids /tmp/snap word .rootfs_XXXXXX van die eerste. Onmiddellik nadat die hernoeming voltooi is, het die tweede geval neergestort, en /tmp/snap.rootfs_XXXXXX is vervang met rastoestandmanipulasie, soos wanneer die Februarie-kwesbaarheid uitgebuit is. Na die vervanging is die uitvoeringslot uit die eerste instansie verwyder en die aanvallers het volle beheer oor die snap-wortelgids verkry.

Die laaste stap was om 'n simskakel /tmp/snap.rootfs_XXXXXX/tmp te skep, wat gebruik is deur die sc_bootstrap_mount_namespace() funksie om die skryfbare regte gids /tmp aan enige gids in die lêerstelsel te bind-mount, aangesien die mount() oproep volg simbole voor montering. Sulke montering word geblokkeer deur AppArmor-beperkings, maar om hierdie blok te omseil, het die uitbuiting twee hulpkwesbaarhede in multipathd gebruik.

Bron: opennet.ru

Voeg 'n opmerking