๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ์์ ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋๊ตฌ ๋ฆด๋ฆฌ์ค Bubblewrap 0.6์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๊ถํ์ด ์๋ ์ฌ์ฉ์์ ๊ฐ๋ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค์ ๋ก 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์ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ๋์ ์คํ ํ์ผ์ ๊ฒฐํฉํ๋ฏ๋ก ์ ์ ํ ์์ค์ ๋ณด์์ ๊ฐ์ฌํ๊ณ ์ ์งํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์:
- Meson ์กฐ๋ฆฝ ์์คํ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. Autotools๋ฅผ ์ฌ์ฉํ ๋น๋ ์ง์์ ํ์ฌ ์ ์ง๋์ง๋ง ํฅํ ๋ฆด๋ฆฌ์ค์์๋ ์ ๊ฑฐ๋ ์์ ์ ๋๋ค.
- ๋ ์ด์์ seccomp ํ๋ก๊ทธ๋จ์ ์ถ๊ฐํ๊ธฐ ์ํด "--add-seccomp" ์ต์ ์ ๊ตฌํํ์ต๋๋ค. "--seccomp" ์ต์ ์ ๋ค์ ์ง์ ํ๋ฉด ๋ง์ง๋ง ๋งค๊ฐ๋ณ์๋ง ์ ์ฉ๋๋ค๋ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- git ์ ์ฅ์์ master ๋ธ๋์น ์ด๋ฆ์ด main์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
- ๋ผ์ด์ผ์ค ๋ฐ ์ ์๊ถ ์ ๋ณด ์ง์ ํ๋ก์ธ์ค๋ฅผ ํตํฉํ๋ REUSE ์ฌ์์ ๋ํ ๋ถ๋ถ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ง์ ์ฝ๋ ํ์ผ์๋ SPDX-License-Identifier ํค๋๊ฐ ์ถ๊ฐ๋์ด ์์ต๋๋ค. REUSE ์ง์นจ์ ๋ฐ๋ฅด๋ฉด ์ด๋ค ๋ผ์ด์ ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ด๋ค ๋ถ๋ถ์ ์ ์ฉ๋๋์ง ์๋์ผ๋ก ์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
- ๋ช ๋ น์ค ์ธ์ ์นด์ดํฐ(argc)์ ๊ฐ ํ์ธ์ ์ถ๊ฐํ๊ณ ์นด์ดํฐ๊ฐ 2021์ธ ๊ฒฝ์ฐ ๋น์ ์ข ๋ฃ๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ด ๋ณ๊ฒฝ ์ฌํญ์ Polkit์ CVE-4034-XNUMX์ ๊ฐ์ด ์ ๋ฌ๋ ๋ช ๋ น์ค ์ธ์์ ์๋ชป๋ ์ฒ๋ฆฌ๋ก ์ธํด ๋ฐ์ํ๋ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ฐจ๋จํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru