Bubblewrap 0.8 ์ถœ์‹œ, ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ ˆ์ด์–ด

๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์˜ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ๋ฆด๋ฆฌ์Šค 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€