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

Qualys ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Π΄Π²Π΅ уязвимости (CVE-2021-44731, CVE-2021-44730) Π² ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° snap-confine, снабдСна с SUID root Ρ„Π»Π°Π³ ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΡ‚ процСса snapd Π·Π° създаванС Π½Π° изпълнима срСда Π·Π° прилоТСния, доставСни Π² самостоятСлни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ snap. УязвимоститС позволяват Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π΄Π° изпълни ΠΊΠΎΠ΄ с root ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² систСмата. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ са Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π² Π΄Π½Π΅ΡˆΠ½Π°Ρ‚Π° актуализация Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ snapd Π·Π° Ubuntu 21.10, 20.04 ΠΈ 18.04.

ΠŸΡŠΡ€Π²Π°Ρ‚Π° уязвимост (CVE-2021-44730) позволява Π°Ρ‚Π°ΠΊΠ° Ρ‡Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π²ΡŠΡ€Π΄ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ, Π½ΠΎ изисква Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° Ρ‚Π²ΡŠΡ€Π΄ΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π° систСмата (Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° sysctl fs.protected_hardlinks Π½Π° 0). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ ΠΎΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° мСстополоТСниСто Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ snap-update-ns ΠΈ snap-discard-ns, изпълнявани ΠΊΠ°Ρ‚ΠΎ root. ΠŸΡŠΡ‚ΡΡ‚ Π΄ΠΎ Ρ‚Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ бСшС изчислСн във функцията sc_open_snapd_tool() въз основа Π½Π° нСйния собствСн ΠΏΡŠΡ‚ ΠΎΡ‚ /proc/self/exe, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ‚Π²ΡŠΡ€Π΄Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, която Π΄Π° Π·Π°Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π² дирСкторията си ΠΈ Π΄Π° поставитС свои собствСни вСрсии Π½Π° snap- update-ns ΠΈ snap- utilities Π² Ρ‚Π°Π·ΠΈ дирСктория discard-ns. Π‘Π»Π΅Π΄ стартиранС Ρ‡Ρ€Π΅Π· Ρ‚Π²ΡŠΡ€Π΄Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, snap-confine с root ΠΏΡ€Π°Π²Π° Ρ‰Π΅ стартира Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ snap-update-ns ΠΈ snap-discard-ns ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° дирСктория, Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΡ‚ нападатСля.

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° уязвимост Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² конфигурацията Π½Π° Ubuntu Desktop ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ‚ΡŠΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π² Ubuntu Server, трябва Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ сСкцията β€žΠ˜Π·Π±Ρ€Π°Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈβ€œ ΠΏΡ€ΠΈ инсталиранС. УсловиСто Π½Π° ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅ Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ във функцията setup_private_mount(), ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅. Π’Π°Π·ΠΈ функция създава Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π° дирСктория β€ž/tmp/snap.$SNAP_NAME/tmpβ€œ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π°, Π·Π° Π΄Π° ΠΎΠ±Π²ΡŠΡ€ΠΆΠ΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° snap ΠΏΠ°ΠΊΠ΅Ρ‚ Π² нСя.

Въй ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° дирСктория Π΅ прСдсказуСмо, атакуващият ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ със символна Π²Ρ€ΡŠΠ·ΠΊΠ°, слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ собствСника, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ° систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ символна Π²Ρ€ΡŠΠ·ΠΊΠ° "/tmp/snap.lxd/tmp" Π² дирСкторията /tmp/snap.lxd, сочСща към ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° дирСктория, ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° mount() Ρ‰Π΅ послСдва символната Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΈ Ρ‰Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° дирСкторията Π² snap namespace. По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π² /var/lib ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ /var/lib/snapd/mount/snap.snap-store.user-fstab, Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° дирСктория /etc Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ snap, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с root ΠΏΡ€Π°Π²Π°, ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ /etc/ld.so.preload.

ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Сксплойт сС ΠΎΠΊΠ°Π·Π° Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π° Π·Π°Π΄Π°Ρ‡Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° snap-confine Π΅ написана Π½Π° Go, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΈΠΌΠ° Π·Π°Ρ‰ΠΈΡ‚Π°, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° AppArmor, Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° систСмнитС повиквания въз основа Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° seccomp ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π·Π° изолация. Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΠΎΠ±Π°Ρ‡Π΅ успяха Π΄Π° подготвят Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Сксплойт Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° root ΠΏΡ€Π°Π²Π° Π² систСмата. Експлойт ΠΊΠΎΠ΄ΡŠΡ‚ Ρ‰Π΅ бъдС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ слСд няколко сСдмици, слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ инсталират прСдоставСнитС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

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

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