ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ 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 Π΄Π»Ρ bind-ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π½Π΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ 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