Snap ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ํˆดํ‚ท์˜ ๋ฃจํŠธ ์ทจ์•ฝ์ 

Qualys๋Š” SUID ๋ฃจํŠธ ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๊ณ  ์ž์ฒด ํฌํ•จ ํŒจํ‚ค์ง€์— ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด snapd ํ”„๋กœ์„ธ์Šค์—์„œ ํ˜ธ์ถœ๋˜๋Š” snap-confine ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ ์˜ฌํ•ด ์„ธ ๋ฒˆ์งธ ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์ (CVE-2022-3328)์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ƒ… ํ˜•์‹์œผ๋กœ. ์ด ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๊ถŒํ•œ์ด ์—†๋Š” ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋ณธ Ubuntu ๊ตฌ์„ฑ์—์„œ ๋ฃจํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” snapd 2.57.6 ๋ฆด๋ฆฌ์Šค์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ชจ๋“  Ubuntu ๋ถ„๊ธฐ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๋ฌธ์ œ์˜ ์ทจ์•ฝ์ ์€ ์œ ์‚ฌํ•œ 22.04์›” snap-confine ์ทจ์•ฝ์ ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์›๋“ค์€ Ubuntu Server 2022์— ๋Œ€ํ•œ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ž‘๋™ ๊ฐ€๋Šฅํ•œ ์ต์Šคํ”Œ๋กœ์ž‡์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ต์Šคํ”Œ๋กœ์ž‡์—๋Š” snap-confine์˜ ์ทจ์•ฝ์  ์™ธ์—๋„ ๋‹ค์ค‘ ๊ฒฝ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ๋‘ ๊ฐ€์ง€ ์ทจ์•ฝ์ (CVE-41974-2022, CVE-41973-XNUMX)๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. , ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น์„ ์ „์†กํ•  ๋•Œ ๊ถŒํ•œ ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•˜๊ณ  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ž‘์—…๊ณผ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค.

snap-confine์˜ ์ทจ์•ฝ์ ์€ ์†Œ์œ ์ž๋ฅผ ํ™•์ธํ•œ ํ›„ ๋งˆ์šดํŠธ ์‹œ์Šคํ…œ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— /tmp/snap.$SNAP_NAME ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ must_mkdir_and_open_with_perms() ํ•จ์ˆ˜์˜ ๊ฒฝ์Ÿ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ƒ… ํ˜•์‹์˜ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์€ /tmp/snap.$SNAP_NAME ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๊ณ  ๋ฃจํŠธ๊ฐ€ ์†Œ์œ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ž„์˜์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ /tmp์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฐ๊ตฌ์›๋“ค์€ /tmp/snap.$SNAP_NAME ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ž‘์—…์„ ํ™œ์šฉํ•  ๋•Œ snap-confine์ด snap ํŒจํ‚ค์ง€ ์ฝ˜ํ…์ธ ์˜ ๋ฃจํŠธ์— ๋Œ€ํ•œ /tmp/snap.rootfs_XXXXXX ๋””๋ ‰ํ„ฐ๋ฆฌ๋„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์˜ "XXXXXX" ๋ถ€๋ถ„์€ mkdtemp()์— ์˜ํ•ด ๋ฌด์ž‘์œ„๋กœ ์„ ํƒ๋˜์ง€๋งŒ "rootfs_XXXXXX"๋ผ๋Š” ํŒจํ‚ค์ง€๋Š” sc_instance_name_validate ํ•จ์ˆ˜์—์„œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, $SNAP_NAME์ด "rootfs_XXXXXX"๋กœ ์„ค์ •๋˜๊ณ  ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ ์ž‘์—…์ด ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค) ๊ฒฐ๊ณผ์ ์œผ๋กœ /tmp/snap.rootfs_XXXXXX ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฃจํŠธ ์Šค๋ƒ…์œผ๋กœ ๋ฎ์–ด์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

/tmp/snap.rootfs_XXXXXX๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๊ณ  /tmp/snap.$SNAP_NAME ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ snap-confine ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค๊ฐ€ /tmp/snap.rootfs_XXXXXX๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฐจ๋‹จ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค๊ฐ€ ํŒจํ‚ค์ง€ ์ด๋ฆ„ rootfs_XXXXXX๋กœ ์‹œ์ž‘๋˜์–ด ๋‘ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค์˜ ์ž„์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ /tmp/snap.$SNAP_NAME์ด ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ /tmp/snap์ด ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ์˜ .rootfs_XXXXXX. ์ด๋ฆ„ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋œ ์งํ›„ ๋‘ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ถฉ๋Œํ•˜๊ณ  XNUMX์›” ์ทจ์•ฝ์ ์„ ์•…์šฉํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ /tmp/snap.rootfs_XXXXXX๊ฐ€ ๊ฒฝ์Ÿ ์กฐ๊ฑด ์กฐ์ž‘์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด ํ›„ ์ฒซ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰ ์ž ๊ธˆ์ด ์ œ๊ฑฐ๋˜์—ˆ๊ณ  ๊ณต๊ฒฉ์ž๋Š” ์Šค๋ƒ… ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” sc_bootstrap_mount_namespace() ํ•จ์ˆ˜๊ฐ€ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ์‹ค์ œ ๋””๋ ‰ํ† ๋ฆฌ /tmp๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ž„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ /tmp/snap.rootfs_XXXXXX/tmp๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์šดํŠธํ•˜๊ธฐ ์ „์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆ์šดํŠธ๋Š” AppArmor ์ œํ•œ ์‚ฌํ•ญ์— ์˜ํ•ด ์ฐจ๋‹จ๋˜์ง€๋งŒ ์ด ์ฐจ๋‹จ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์ต์Šคํ”Œ๋กœ์ž‡์€ multipathd์˜ ๋‘ ๊ฐ€์ง€ ๋ณด์กฐ ์ทจ์•ฝ์ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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