๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๋๊ตฌ์ธ Bubblewrap์ ์ ๋ฒ์ 0.12์ด ์ถ์๋์์ต๋๋ค. Bubblewrap์ ๊ถํ์ด ์๋ ์ฌ์ฉ์์ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทผ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค์ ๋ก Flatpak ํ๋ก์ ํธ์์๋ ํจํค์ง์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌํ๋ ๊ณ์ธต์ผ๋ก Bubblewrap์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋ชฉ์ ์ ์ํด ๊ธฐ์กด์ ๊ฒฉ๋ฆฌ ๋ฐฉ๋ฒ๋ค์ด ํ์ฉ๋๊ณ ์์ต๋๋ค. Linux cgroups, ๋ค์์คํ์ด์ค, Seccomp ๋ฐ SE๋ฅผ ํ์ฉํ ์ปจํ ์ด๋ ๊ฐ์ํ ๊ธฐ์ Linux์ด ํ๋ก์ ํธ ์ฝ๋๋ C ์ธ์ด๋ก ์์ฑ๋์์ผ๋ฉฐ LGPLv2.1+ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
ํ์ผ ์์คํ ์์ค์ ๊ฒฉ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก tmpfs๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฃจํธ ํํฐ์ ์ด ์์ฑ๋๋ ์๋ก์ด ๋ง์ดํธ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ์ฌ ์ํ๋ฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ธ๋ถ FS ํํฐ์ ์ด "mount โbind" ๋ชจ๋์์ ์ด ํํฐ์ ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "bwrap โro-bind /usr /usr" ์ต์ ์ผ๋ก ์์ํ๋ฉด /usr ํํฐ์ ์ด ๊ธฐ๋ณธ ์์คํ ์์ ์ ๋ฌ๋ฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋์์). ๋คํธ์ํฌ ๊ธฐ๋ฅ์ CLONE_NEWNET ๋ฐ CLONE_NEWUTS ํ๋๊ทธ๋ฅผ ํตํ ๋คํธ์ํฌ ์คํ ๊ฒฉ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค์ ๋ํ ์ก์ธ์ค๋ก ์ ํ๋ฉ๋๋ค.
์์ฑ๋ ๊ฒฉ๋ฆฌ ํ๊ฒฝ์์ ๋ถํ์ํ ์ฌ์ฉ์ ๋ฐ ํ๋ก์ธ์ค ID๋ฅผ ๋ชจ๋ ์ ์ธํ๋ ค๋ฉด CLONE_NEWUSER(์ฌ์ฉ์ ๋ค์์คํ์ด์ค) ๋ฐ CLONE_NEWPID(PID ๋ค์์คํ์ด์ค) ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, PR_SET_NO_NEW_PRIVS ๋ชจ๋๋ ์๋ก์ด ๊ถํ ํ๋์ ๋ฐฉ์งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. "์ฌ์ฉ์ ๋ค์์คํ์ด์ค"๋ ํ์ํ ๊ถํ์ ํ๋ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์:
- ์ฝ๋ ๋ผ์ด์ ์ค๊ฐ LGPL 2.0+์์ LGPL 2.1+๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
- suid ๋ฃจํธ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ๊ถํ์ ์ป๋ ์คํ ํ์ผ ๋น๋์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค. ์ด์ "์ฌ์ฉ์ ๋ค์์คํ์ด์ค" ์ง์์ด ํ์์ ๋๋ค. ๊ทธ ์ด์ ๋ ๋ฐฐํฌํ์์ "์ฌ์ฉ์ ๋ค์์คํ์ด์ค"๊ฐ ๋๋ฆฌ ์ง์๋จ์ ๋ฐ๋ผ suid ํ๋๊ทธ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ณต์กํด์ก๊ธฐ ๋๋ฌธ์ ๋๋ค.
- "--not-a-security-boundary" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค. ์ด ์ต์ ์ ์ค์ ํ๋ฉด ํ์ ํค ์ฌ๋ง์ดํธ์ ๊ฐ์ ๊ฒฉ๋ฆฌ๋ ์๋๋ฐ์ค ํ๊ฒฝ ์ค์ ์ ๋ฐ์ํ๋ ํน์ ์ค๋ฅ๋ก ์ธํ ์ถฉ๋์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์ปค๋๊ณผ์ ํ์ ํธํ์ฑ์ ๋นํ์ฑํํ๋ ๋น๋ ์ต์ "assume_kernel"์ ์ถ๊ฐํ์ต๋๋ค. Linux์ง์ ๋ ๋ฒ์ ๋ณด๋ค ์ด์ ๋ฒ์ ์ด์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒ์ 5.6.0 ์ด์์ ์ง์ ํ๋ฉด "openat2(RESOLVE_IN_ROOT)" ๊ธฐ๋ฅ์ ๋์ฒด ๊ตฌํ์ด ์ ์ธ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru
