Qualys๋ SUID ๋ฃจํธ ํ๋๊ทธ์ ํจ๊ป ์ ๊ณต๋๊ณ ์์ฒด ํฌํจ ํจํค์ง์ ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์คํ ๊ฐ๋ฅ ํ๊ฒฝ์ ์์ฑํ๊ธฐ ์ํด snapd ํ๋ก์ธ์ค์์ ํธ์ถ๋๋ snap-confine ์ ํธ๋ฆฌํฐ์์ ์ฌํด ์ธ ๋ฒ์งธ ์ํํ ์ทจ์ฝ์ (CVE-2022-3328)์ ์๋ณํ์ต๋๋ค. ์ค๋ ํ์์ผ๋ก. ์ด ์ทจ์ฝ์ ์ผ๋ก ์ธํด ๊ถํ์ด ์๋ ๋ก์ปฌ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ Ubuntu ๊ตฌ์ฑ์์ ๋ฃจํธ๋ก ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ snapd 2.57.6 ๋ฆด๋ฆฌ์ค์์ ํด๊ฒฐ๋์์ต๋๋ค. ์ง์๋๋ ๋ชจ๋ Ubuntu ๋ถ๊ธฐ์ ๋ํ ํจํค์ง ์ ๋ฐ์ดํธ๊ฐ ์ถ์๋์์ต๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ๋ฌธ์ ์ ์ทจ์ฝ์ ์ ์ ์ฌํ 22.04์ snap-confine ์ทจ์ฝ์ ์ ์์ ํ๋ ๊ณผ์ ์์ ๋์ ๋์์ต๋๋ค. ์ฐ๊ตฌ์๋ค์ Ubuntu Server 2022์ ๋ํ ๋ฃจํธ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ์๋ ๊ฐ๋ฅํ ์ต์คํ๋ก์์ ์ค๋นํ ์ ์์์ต๋๋ค. ์ด ์ต์คํ๋ก์์๋ snap-confine์ ์ทจ์ฝ์ ์ธ์๋ ๋ค์ค ๊ฒฝ๋ก ํ๋ก์ธ์ค์ ๋ ๊ฐ์ง ์ทจ์ฝ์ (CVE-41974-2022, CVE-41973-XNUMX)๋ ํฌํจ๋์ด ์์ต๋๋ค. , ๊ถํ ์๋ ๋ช ๋ น์ ์ ์กํ ๋ ๊ถํ ๊ฒ์ฌ๋ฅผ ์ฐํํ๊ณ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ์ง ์์ ์์ ๊ณผ ๊ด๋ จ๋ฉ๋๋ค.
snap-confine์ ์ทจ์ฝ์ ์ ์์ ์๋ฅผ ํ์ธํ ํ ๋ง์ดํธ ์์คํ ์ ํธ์ถํ๊ธฐ ์ ์ /tmp/snap.$SNAP_NAME ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ก ๋์ฒดํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ถ๊ฐ๋ must_mkdir_and_open_with_perms() ํจ์์ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ์ค๋ ํ์์ ํจํค์ง์ ๋ํ ๋ฐ์ธ๋ ๋ง์ดํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ํธ์ถํฉ๋๋ค. ์ถ๊ฐ๋ ๋ณดํธ ๊ธฐ๋ฅ์ /tmp/snap.$SNAP_NAME ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ๊ณ ๋ฃจํธ๊ฐ ์์ ํ์ง ์์ ๊ฒฝ์ฐ ์์์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ /tmp์ ์๋ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ค.
์ฐ๊ตฌ์๋ค์ /tmp/snap.$SNAP_NAME ๋๋ ํฐ๋ฆฌ ์ด๋ฆ ๋ณ๊ฒฝ ์์ ์ ํ์ฉํ ๋ snap-confine์ด snap ํจํค์ง ์ฝํ ์ธ ์ ๋ฃจํธ์ ๋ํ /tmp/snap.rootfs_XXXXXX ๋๋ ํฐ๋ฆฌ๋ ์์ฑํ๋ค๋ ์ฌ์ค์ ํ์ฉํ์ต๋๋ค. ์ด๋ฆ์ "XXXXXX" ๋ถ๋ถ์ mkdtemp()์ ์ํด ๋ฌด์์๋ก ์ ํ๋์ง๋ง "rootfs_XXXXXX"๋ผ๋ ํจํค์ง๋ sc_instance_name_validate ํจ์์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ์ ์์ต๋๋ค(์ฆ, $SNAP_NAME์ด "rootfs_XXXXXX"๋ก ์ค์ ๋๊ณ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์์ ์ด ์ํ๋๋ค๋ ์์ด๋์ด์ ๋๋ค) ๊ฒฐ๊ณผ์ ์ผ๋ก /tmp/snap.rootfs_XXXXXX ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฃจํธ ์ค๋ ์ผ๋ก ๋ฎ์ด์ฐ๊ฒ ๋ฉ๋๋ค.
/tmp/snap.rootfs_XXXXXX๋ฅผ ๋์์ ์ฌ์ฉํ๊ณ /tmp/snap.$SNAP_NAME ์ด๋ฆ์ ๋ฐ๊พธ๊ธฐ ์ํด ๋ ๊ฐ์ snap-confine ์ธ์คํด์ค๊ฐ ์์๋์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ธ์คํด์ค๊ฐ /tmp/snap.rootfs_XXXXXX๋ฅผ ์์ฑํ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ฐจ๋จ๋๊ณ ๋ ๋ฒ์งธ ์ธ์คํด์ค๊ฐ ํจํค์ง ์ด๋ฆ rootfs_XXXXXX๋ก ์์๋์ด ๋ ๋ฒ์งธ ์ธ์คํด์ค์ ์์ ๋๋ ํฐ๋ฆฌ /tmp/snap.$SNAP_NAME์ด ๋ฃจํธ ๋๋ ํฐ๋ฆฌ /tmp/snap์ด ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ์ .rootfs_XXXXXX. ์ด๋ฆ ๋ณ๊ฒฝ์ด ์๋ฃ๋ ์งํ ๋ ๋ฒ์งธ ์ธ์คํด์ค๊ฐ ์ถฉ๋ํ๊ณ XNUMX์ ์ทจ์ฝ์ ์ ์ ์ฉํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก /tmp/snap.rootfs_XXXXXX๊ฐ ๊ฒฝ์ ์กฐ๊ฑด ์กฐ์์ผ๋ก ๋์ฒด๋์์ต๋๋ค. ๋์ฒด ํ ์ฒซ ๋ฒ์งธ ์ธ์คํด์ค์์ ์คํ ์ ๊ธ์ด ์ ๊ฑฐ๋์๊ณ ๊ณต๊ฒฉ์๋ ์ค๋ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ๋ํ ๋ชจ๋ ๊ถํ์ ์ป์์ต๋๋ค.
๋ง์ง๋ง ๋จ๊ณ๋ sc_bootstrap_mount_namespace() ํจ์๊ฐ ์ฐ๊ธฐ ๊ฐ๋ฅํ ์ค์ ๋๋ ํ ๋ฆฌ /tmp๋ฅผ ํ์ผ ์์คํ
์ ์์ ๋๋ ํ ๋ฆฌ์ ๋ฐ์ธ๋ ๋ง์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ /tmp/snap.rootfs_XXXXXX/tmp๋ฅผ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ๋ง์ดํธํ๊ธฐ ์ ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ฆ
๋๋ค. ์ด๋ฌํ ๋ง์ดํธ๋ AppArmor ์ ํ ์ฌํญ์ ์ํด ์ฐจ๋จ๋์ง๋ง ์ด ์ฐจ๋จ์ ์ฐํํ๊ธฐ ์ํด ์ต์คํ๋ก์์ multipathd์ ๋ ๊ฐ์ง ๋ณด์กฐ ์ทจ์ฝ์ ์ ์ฌ์ฉํ์ต๋๋ค.
์ถ์ฒ : opennet.ru