Root уязвимост Π² инструмСнти Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ 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 са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ ΠΈ Π΄Π²Π΅ уязвимости Π² процСса multipathd (CVE-2022-41974, CVE-2022-41973), ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с заобикалянСто Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€Π°Π²Π°Ρ‚Π° ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ нСбСзопасната Ρ€Π°Π±ΠΎΡ‚Π° с символични Π»ΠΈΠ½ΠΊΠΎΠ²Π΅.

Уязвимостта Π² snap-confine Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ ΡΡŠΡΡ‚Π΅Π·Π°Ρ‚Π΅Π»Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π² функцията must_mkdir_and_open_with_perms(), Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ подмяна Π½Π° дирСкторията /tmp/snap.$SNAP_NAME Π½Π° символична Π²Ρ€ΡŠΠ·ΠΊΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ слСд ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° собствСника, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмния ΠΏΠΎΠ²ΠΈΠΊ mount Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ 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 с основата Π½Π° 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() Π·Π° bind-ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈΡ Π·Π° запис истински ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /tmp Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° mount() слСдва символичнитС Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ ΠΏΡ€Π΅Π΄ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. Π’Π°ΠΊΠΎΠ²Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΎ ΠΎΡ‚ ограничСнията Π½Π° AppArmor, Π½ΠΎ Π·Π° заобикалянС Π½Π° Ρ‚Π°Π·ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π² Сксплоита бяха ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π΄Π²Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ уязвимости Π² multipathd.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster