๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ์์ ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋๊ตฌ ๋ฆด๋ฆฌ์ค Bubblewrap 0.8์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๊ถํ์ด ์๋ ์ฌ์ฉ์์ ๊ฐ๋ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค์ ๋ก Bubblewrap์ Flatpak ํ๋ก์ ํธ์์ ํจํค์ง์์ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌํ๋ ๋ ์ด์ด๋ก ์ฌ์ฉ๋ฉ๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ LGPLv2+ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
๊ฒฉ๋ฆฌ๋ฅผ ์ํด cgroup, ๋ค์์คํ์ด์ค, Seccomp ๋ฐ SELinux ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ธฐ์กด Linux ์ปจํ ์ด๋ ๊ฐ์ํ ๊ธฐ์ ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ถํ ์๋ ์์ ์ ์ํํ๊ธฐ ์ํด Bubblewrap์ ๋ฃจํธ ๊ถํ(suid ํ๋๊ทธ๊ฐ ์๋ ์คํ ํ์ผ)์ผ๋ก ์์๋ ๋ค์ ์ปจํ ์ด๋๊ฐ ์ด๊ธฐํ๋ ํ ๊ถํ์ ์ฌ์ค์ ํฉ๋๋ค.
์ปจํ ์ด๋์์ ์์ ๋ง์ ๋ณ๋ ์๋ณ์ ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ค์์คํ์ด์ค ์์คํ ์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ํ์ฑํ๋ ์์ ์ ํ์ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ๋ง์ ๋ฐฐํฌํ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค(Bubblewrap์ ์ ํ๋ suid ๊ตฌํ์ผ๋ก ์์นํฉ๋๋ค). ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ ํ์ ์งํฉ - ํ์ฌ ํ๊ฒฝ์ ์ ์ธํ ๋ชจ๋ ์ฌ์ฉ์ ๋ฐ ํ๋ก์ธ์ค ์๋ณ์๋ฅผ ํ๊ฒฝ์์ ์ ์ธํ๋ ค๋ฉด CLONE_NEWUSER ๋ฐ CLONE_NEWPID ๋ชจ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ถ๊ฐ ๋ณดํธ๋ฅผ ์ํด Bubblewrap์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ PR_SET_NO_NEW_PRIVS ๋ชจ๋์์ ์คํ๋ฉ๋๋ค. ์ด๋ ์๋ฅผ ๋ค์ด setuid ํ๋๊ทธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ๊ถํ ํ๋์ ๊ธ์งํฉ๋๋ค.
ํ์ผ ์์คํ ์์ค์ ๊ฒฉ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก tmpfs๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฃจํธ ํํฐ์ ์ด ์์ฑ๋๋ ์๋ก์ด ๋ง์ดํธ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ์ฌ ์ํ๋ฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ธ๋ถ FS ํํฐ์ ์ด "mount โbind" ๋ชจ๋์์ ์ด ํํฐ์ ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "bwrap โro-bind /usr /usr" ์ต์ ์ผ๋ก ์์ํ๋ฉด /usr ํํฐ์ ์ด ๊ธฐ๋ณธ ์์คํ ์์ ์ ๋ฌ๋ฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋์์). ๋คํธ์ํฌ ๊ธฐ๋ฅ์ CLONE_NEWNET ๋ฐ CLONE_NEWUTS ํ๋๊ทธ๋ฅผ ํตํ ๋คํธ์ํฌ ์คํ ๊ฒฉ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค์ ๋ํ ์ก์ธ์ค๋ก ์ ํ๋ฉ๋๋ค.
setuid ์์ ๋ชจ๋ธ๋ ์ฌ์ฉํ๋ ์ ์ฌํ Firejail ํ๋ก์ ํธ์์ ์ฃผ์ ์ฐจ์ด์ ์ Bubblewrap์ ์ปจํ ์ด๋ ์์ฑ ๊ณ์ธต์๋ ํ์ํ ์ต์ ๊ธฐ๋ฅ๋ง ํฌํจ๋์ด ์์ผ๋ฉฐ ๊ทธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์ ์คํ, ๋ฐ์คํฌํฑ๊ณผ ์ํธ ์์ฉ ๋ฐ ์์ฒญ ํํฐ๋ง์ ํ์ํ ๋ชจ๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค. Pulseaudio๋ก, Flatpak ์ธก์ผ๋ก ์ ์ก๋์ด ๊ถํ์ด ์ฌ์ค์ ๋ ํ ์คํ๋ฉ๋๋ค. ๋ฐ๋ฉด Firejail์ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ๋์ ์คํ ํ์ผ์ ๊ฒฐํฉํ๋ฏ๋ก ์ ์ ํ ์์ค์ ๋ณด์์ ๊ฐ์ฌํ๊ณ ์ ์งํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์:
- ์๋๋ฐ์ค ํ๊ฒฝ์์ ์์ฒด ์ค์ฒฉ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ์์ฑ์ ๋นํ์ฑํํ๋ "--disable-userns" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- "--disable-userns" ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ์ฌ์ฉ์ ID ๊ณต๊ฐ์ ์ฌ์ฉํ๋์ง ํ์ธํ๊ธฐ ์ํด "--assert-userns-disabled" ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ปค๋์ CONFIG_SECCOMP ๋ฐ CONFIG_SECCOMP_FILTER ์ค์ ๋นํ์ฑํ์ ๊ด๋ จ๋ ์ค๋ฅ ๋ฉ์์ง์ ์ ๋ณด ๋ด์ฉ์ด ์ฆ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru