Основна уязвимост Π² инструмСнтариума Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Snap

Qualys ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° опасна уязвимост Ρ‚Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° (CVE-2022-3328) Π² ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° snap-confine, която ΠΈΠ΄Π²Π° с SUID root Ρ„Π»Π°Π³ ΠΈ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡ‚ процСса snapd Π·Π° създаванС Π½Π° изпълнима срСда Π·Π° прилоТСния, разпространявани Π² самостоятСлни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ snap. Уязвимостта позволява Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π΄Π° постигнС изпълнСниС Π½Π° ΠΊΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎ root Π² конфигурацията Π½Π° Ubuntu ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ във вСрсия snapd 2.57.6. ΠŸΠ°ΠΊΠ΅Ρ‚Π½ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ са пуснати Π·Π° всички ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° Ubuntu.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠ½Π°Ρ‚Π° уязвимост бСшС въвСдСна ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСса Π½Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° фСвруарска уязвимост Π² snap-confine. Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ успяха Π΄Π° подготвят Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Сксплойт, ΠΊΠΎΠΉΡ‚ΠΎ осигурява root Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ubuntu Server 22.04, ΠΊΠΎΠΉΡ‚ΠΎ Π² допълнСниС към уязвимостта Π² snap-confine Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈ Π΄Π²Π΅ уязвимости Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΡŠΡ‚Π½ΠΈΡ процСс (CVE-2022-41974, CVE-2022-41973) , ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с заобикалянС Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° правомощия ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ опасна Ρ€Π°Π±ΠΎΡ‚Π° със символни Π²Ρ€ΡŠΠ·ΠΊΠΈ.

Уязвимостта Π² snap-confine Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ условиС Π·Π° ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅ във функцията must_mkdir_and_open_with_perms(), Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу замСстванС Π½Π° дирСкторията /tmp/snap.$SNAP_NAME със символна Π²Ρ€ΡŠΠ·ΠΊΠ° слСд ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° собствСника, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° систСмата Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π² Π½Π΅Π³ΠΎ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ snap. Π”ΠΎΠ±Π°Π²Π΅Π½Π°Ρ‚Π° Π·Π°Ρ‰ΠΈΡ‚Π° бСшС Π΄Π° сС ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π° дирСкторията /tmp/snap.$SNAP_NAME Π² Π΄Ρ€ΡƒΠ³Π° дирСктория Π² /tmp с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΠΈΠΌΠ΅, Π°ΠΊΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ Π½Π΅ Π΅ собствСност Π½Π° root.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ опСрацията Π·Π° ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° дирСкторията /tmp/snap.$SNAP_NAME, изслСдоватСлитС сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ snap-confine ΡΡŠΡ‰ΠΎ създава дирСктория /tmp/snap.rootfs_XXXXXX Π·Π° ΠΊΠΎΡ€Π΅Π½Π° Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° snap. Частта "XXXXXX" ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ сС ΠΈΠ·Π±ΠΈΡ€Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΠΎΡ‚ mkdtemp(), Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΈΠΌΠ΅ "rootfs_XXXXXX" ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½ във функцията sc_instance_name_validate (Ρ‚.Π΅. идСята Π΅, Ρ‡Π΅ $SNAP_NAME Ρ‰Π΅ бъдС Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π½Π° "rootfs_XXXXXX" ΠΈ слСд Ρ‚ΠΎΠ²Π° опСрацията Π·Π° ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ прСзаписванС Π½Π° дирСкторията /tmp/snap.rootfs_XXXXXX с root snap).

Π—Π° Π΄Π° сС постигнС Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° /tmp/snap.rootfs_XXXXXX ΠΈ ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° /tmp/snap.$SNAP_NAME, бяха стартирани Π΄Π²Π° СкзСмпляра Π½Π° snap-confine. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ СкзСмпляр създадС /tmp/snap.rootfs_XXXXXX, ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Ρ‰Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΈ вторият СкзСмпляр Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ с ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° rootfs_XXXXXX, причинявайки Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° дирСктория /tmp/snap.$SNAP_NAME Π½Π° втория СкзСмпляр Π΄Π° станС основната дирСктория /tmp/snap .rootfs_XXXXXX Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ. Π’Π΅Π΄Π½Π°Π³Π° слСд Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ вторият СкзСмпляр сС срина ΠΈ /tmp/snap.rootfs_XXXXXX бСшС Π·Π°ΠΌΠ΅Π½Π΅Π½ с ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° условиСто Π·Π° ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ СксплоатиранС Π½Π° фСвруарската уязвимост. Π‘Π»Π΅Π΄ замяната Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ бСшС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ СкзСмпляр ΠΈ Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…Π° пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ основната дирСктория Π½Π° snap.

ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° бСшС Π΄Π° сС създадС символна Π²Ρ€ΡŠΠ·ΠΊΠ° /tmp/snap.rootfs_XXXXXX/tmp, която бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΎΡ‚ функцията sc_bootstrap_mount_namespace() Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅-ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° записваСмата Ρ€Π΅Π°Π»Π½Π° дирСктория /tmp към всяка дирСктория във Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ mount() слСдва символни Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅. Π’Π°ΠΊΠΎΠ²Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΎ ΠΎΡ‚ ограничСнията Π½Π° AppArmor, Π½ΠΎ Π·Π° Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ Ρ‚ΠΎΠ·ΠΈ Π±Π»ΠΎΠΊ, Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ‚ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π²Π΅ спомагатСлни уязвимости Π² multipathd.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€