ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ 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
