Qualys๋ SUID ๋ฃจํธ ํ๋๊ทธ์ ํจ๊ป ์ ๊ณต๋๊ณ snapd ํ๋ก์ธ์ค์์ ํธ์ถ๋์ด ์์ฒด ํฌํจ ํจํค์ง๋ก ์ ๊ณต๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์คํ ๊ฐ๋ฅ ํ๊ฒฝ์ ์์ฑํ๋ snap-confine ์ ํธ๋ฆฌํฐ์์ ๋ ๊ฐ์ง ์ทจ์ฝ์ (CVE-2021-44731, CVE-2021-44730)์ ์๋ณํ์ต๋๋ค. ์ค๋ ํ์์ผ๋ก. ์ด ์ทจ์ฝ์ ์ผ๋ก ์ธํด ๊ถํ์ด ์๋ ๋ก์ปฌ ์ฌ์ฉ์๊ฐ ์์คํ ์์ ๋ฃจํธ ๊ถํ์ผ๋ก ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ค๋ Ubuntu 21.10, 20.04 ๋ฐ 18.04์ฉ snapd ํจํค์ง ์ ๋ฐ์ดํธ์์ ํด๊ฒฐ๋์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์ทจ์ฝ์ (CVE-2021-44730)์ ํ๋ ๋งํฌ ์กฐ์์ ํตํ ๊ณต๊ฒฉ์ ํ์ฉํ์ง๋ง ์์คํ ํ๋ ๋งํฌ ๋ณดํธ๋ฅผ ๋นํ์ฑํํด์ผ ํฉ๋๋ค(sysctl fs.protected_hardlinks๋ฅผ 0์ผ๋ก ์ค์ ). ์ด ๋ฌธ์ ๋ ๋ฃจํธ๋ก ์คํ๋๋ snap-update-ns ๋ฐ snap-discard-ns ๋์ฐ๋ฏธ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ ์์น๋ฅผ ์๋ชป ํ์ธํ์ฌ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ํ์ผ์ ๊ฒฝ๋ก๋ /proc/self/exe์ ์์ฒด ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก sc_open_snapd_tool() ํจ์์์ ๊ณ์ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋๋ ํฐ๋ฆฌ์ ์ค๋ ์ ํ์ ์ํ ํ๋ ๋งํฌ๋ฅผ ์์ฑํ๊ณ ์์ ๋ง์ ์ค๋ ๋ฒ์ ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ์ด ๋๋ ํ ๋ฆฌ์ update-ns ๋ฐ snap- ์ ํธ๋ฆฌํฐ๋ Discard-ns์ ๋๋ค. ํ๋ ๋งํฌ๋ฅผ ํตํด ์คํํ ํ ๋ฃจํธ ๊ถํ์ผ๋ก snap-confine์ ๊ณต๊ฒฉ์๊ฐ ๋์ฒดํ๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ์์ snap-update-ns ๋ฐ snap-discard-ns ํ์ผ์ ์์ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ทจ์ฝ์ ์ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ธํด ๋ฐ์ํ๋ฉฐ ๊ธฐ๋ณธ Ubuntu ๋ฐ์คํฌํ ๊ตฌ์ฑ์์ ์ ์ฉ๋ ์ ์์ต๋๋ค. Ubuntu Server์์ ์ต์คํ๋ก์์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋ ค๋ฉด ์ค์น ์ "์ถ์ฒ ์๋ฒ ์ค๋ " ์น์ ์์ ํจํค์ง ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ๊ฒฝ์ ์กฐ๊ฑด์ snap ํจํค์ง์ ๋ํ ๋ง์ดํธ ์ง์ ๋ค์์คํ์ด์ค๋ฅผ ์ค๋นํ๋ ๋์ ํธ์ถ๋๋ setup_private_mount() ํจ์์์ ๋ถ๋ช ํ๊ฒ ๋ํ๋ฉ๋๋ค. ์ด ํจ์๋ ์์ ๋๋ ํฐ๋ฆฌ "/tmp/snap.$SNAP_NAME/tmp"๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ํจํค์ง์ฉ ๋๋ ํฐ๋ฆฌ๋ฅผ ํด๋น ๋๋ ํฐ๋ฆฌ์ ๋ฐ์ธ๋ฉํฉ๋๋ค.
์์ ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ ์์ธก ๊ฐ๋ฅํ๋ฏ๋ก ๊ณต๊ฒฉ์๋ ์์ ์๋ฅผ ํ์ธํ ํ mount ์์คํ ํธ์ถ์ ํธ์ถํ๊ธฐ ์ ์ ํด๋น ๋ด์ฉ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ /tmp/snap.lxd ๋๋ ํ ๋ฆฌ์ "/tmp/snap.lxd/tmp" ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, mount()์ ๋ํ ํธ์ถ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง์ดํธํฉ๋๋ค. ์ค๋ ๋ค์์คํ์ด์ค. ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก /var/lib์ ์ฝํ ์ธ ๋ฅผ ๋ง์ดํธํ๊ณ /var/lib/snapd/mount/snap.snap-store.user-fstab์ ๋์ฒดํ์ฌ /etc ๋๋ ํ ๋ฆฌ์ ๋ง์ดํธ๋ฅผ ๋ค์ ๋ค์์คํ์ด์ค์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. /etc/ld.so.preload๋ฅผ ๋์ฒดํ์ฌ ๋ฃจํธ ๊ถํ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก๋ฉ์ ๊ตฌ์ฑํ๋ ์ค๋ ํจํค์ง์ ๋๋ค.
snap-confine ์ ํธ๋ฆฌํฐ๋ ๋ณด์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ Go๋ก ์์ฑ๋๊ณ , AppArmor ํ๋กํ์ ๊ธฐ๋ฐ์ผ๋ก ๋ณดํธํ๊ณ , seccomp ๋ฉ์ปค๋์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์์คํ
ํธ์ถ์ ํํฐ๋งํ๊ณ , ๊ฒฉ๋ฆฌ๋ฅผ ์ํ ๋ง์ดํธ ๋ค์์คํ์ด์ค์
๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๊ตฌ์๋ค์ ์์คํ
์ ๋ํ ๋ฃจํธ ๊ถํ์ ์ป๊ธฐ ์ํด ์๋ํ๋ ์ต์คํ๋ก์์ ์ค๋นํ ์ ์์์ต๋๋ค. ์ต์คํ๋ก์ ์ฝ๋๋ ์ฌ์ฉ์๊ฐ ์ ๊ณต๋ ์
๋ฐ์ดํธ๋ฅผ ์ค์นํ ํ ๋ช ์ฃผ ํ์ ๊ณต๊ฐ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru