์ปจํ…Œ์ด๋„ˆ์—์„œ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” Docker์˜ ์ทจ์•ฝ์ 

๊ฒฉ๋ฆฌ๋œ Linux Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท ํ™•์ธ๋จ ์ทจ์•ฝ์ (CVE-2018-15664), ํŠน์ • ์ƒํ™ฉ์—์„œ ์‹œ์Šคํ…œ์—์„œ ์ž์ฒด ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋ชจ๋“  ๋ฒ„์ „์˜ Docker์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ์•ˆ๋˜์—ˆ์ง€๋งŒ ์•„์ง ์Šน์ธ๋˜์ง€ ์•Š์Œ, ํŒจ์น˜, FS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์ปจํ…Œ์ด๋„ˆ์˜ ์ž‘์—…์„ ์ผ์‹œ ์ค‘๋‹จํ•˜๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜๋ฉด "docker cp" ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ FS์˜ ์ž„์˜์˜ ๋ถ€๋ถ„์œผ๋กœ ํŒŒ์ผ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ถ”์ถœ์€ ๋ฃจํŠธ ๊ถŒํ•œ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด, /etc/shadow๋ฅผ ๋‹ค์‹œ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

๊ณต๊ฒฉ์€ ๊ด€๋ฆฌ์ž๊ฐ€ "docker cp" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ๋•Œ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” Docker ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์–ด๋–ป๊ฒŒ๋“  ํ™•์‹ ์‹œํ‚ค๊ณ  ๋ณต์‚ฌ ์ค‘์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์˜ˆ์ธกํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๊ฐ€ "docker cp" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์ปจํ…Œ์ด๋„ˆ์— ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ ์šฉ์— ๊ฒฐํ•จ์ด ์žˆ์–ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. FollowSymlinkInScope์ปจํ…Œ์ด๋„ˆ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๊ณ ๋ คํ•˜์—ฌ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ FS์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. "docker cp" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์ž ์‹œ ๋ฉˆ์ถค ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์Ÿ ์กฐ๊ฑด, ๊ฒฝ๋กœ๋Š” ์ด๋ฏธ ํ™•์ธ๋˜์—ˆ์ง€๋งŒ, ์ž‘์—…์€ ์•„์ง ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ์ฃผ FS ์ปจํ…์ŠคํŠธ์—์„œ ๋ณต์‚ฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์ง€์ •๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋งํฌ๋ฅผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊พธ๊ณ  ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ž„์˜์˜ ์œ„์น˜์— ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ์Ÿ ์กฐ๊ฑด์ด ์ž์ฒด์ ์œผ๋กœ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„ ์ฐฝ์ด ์ค€๋น„๋œ ์ƒํƒœ์—์„œ๋Š” ๋งค์šฐ ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํ† ํƒ€์ž…์„ ์•…์šฉํ•˜๋‹ค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ณต์‚ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ณต์‚ฌ ์ž‘์—…์— ์‚ฌ์šฉ๋œ ๊ฒฝ๋กœ์— ์žˆ๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ 1% ๋ฏธ๋งŒ์˜ ์‚ฌ๋ก€์—์„œ ์„ฑ๊ณต์ ์ธ ๊ณต๊ฒฉ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค("docker cp" ๋ช…๋ น์œผ๋กœ ๋ฃจํ”„์—์„œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ ค๊ณ  ๊ณ„์† ์‹œ๋„ํ•œ ํ›„ ์•ฝ 10์ดˆ ํ›„์— ์„ฑ๊ณต์ ์ธ ๊ณต๊ฒฉ์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

์ปจํ…Œ์ด๋„ˆ์— ๋ณต์‚ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋‹จ ๋ช‡ ๋ฒˆ์˜ ๋ฐ˜๋ณต๋งŒ์œผ๋กœ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ ๊ณต๊ฒฉ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋ณต์‚ฌํ•  ๋•Œ "chrootarchive"๋ผ๋Š” ๊ฐœ๋…์ด ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐœ๋…์— ๋”ฐ๋ฅด๋ฉด archive.go ํ”„๋กœ์„ธ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ฃจํŠธ์˜ chroot๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋Œ€์ƒ ๊ฒฝ๋กœ์˜ ๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ์˜ chroot์— ์•„์นด์ด๋ธŒ๋ฅผ ์ถ”์ถœํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์ค‘์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(chroot๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ์•…์šฉํ•˜๊ธฐ ์œ„ํ•œ ์‹ ํ˜ธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค).

์ถœ์ฒ˜ : opennet.ru

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