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