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 Π²ΠΊΠ»ΡΡΠ²Π° ΠΈ Π΄Π²Π΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ (CVE-2022-41974, CVE-2022-41973) , ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠ°Π²ΠΎΠΌΠΎΡΠΈΡ ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π² snap-confine Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ° must_mkdir_and_open_with_perms(), Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° /tmp/snap.$SNAP_NAME ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π½Π° Π²ΡΡΠ·ΠΊΠ° ΡΠ»Π΅Π΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ°, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π² Π½Π΅Π³ΠΎ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ 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 Ρ root 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() Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅-ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π΅ΠΌΠ°ΡΠ° ΡΠ΅Π°Π»Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /tmp ΠΊΡΠΌ Π²ΡΡΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ mount() ΡΠ»Π΅Π΄Π²Π° ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅. Π’Π°ΠΊΠΎΠ²Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΎ ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° AppArmor, Π½ΠΎ Π·Π° Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ ΡΠΎΠ·ΠΈ Π±Π»ΠΎΠΊ, Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π²Π΅ ΡΠΏΠΎΠΌΠ°Π³Π°ΡΠ΅Π»Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² multipathd.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru