๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 276

[์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ] ํ€ด์ฆˆ: Dirty COW ๊ฒฝ์Ÿ ์กฐ๊ฑด ๊ณต๊ฒฉ

1. Dirty COW(Copy-On-Write) ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์€ ๊ฒƒ์€?(1) ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๋ณธ์ด ์ƒ์„ฑ๋˜๋ฉฐ ๋ณดํ˜ธ๋œ๋‹ค.(2) MAP_SHARED๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ์‹œ ๊ฐœ์ธ ๋ณต์‚ฌ๋ณธ์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.(3) COW๋Š” A, B, C ๋‹จ๊ณ„๊ฐ€ atomicํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ race condition์ด ์—†๋‹ค.(4) madvise() ํ˜ธ์ถœ๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์›๋ž˜ ๋งคํ•‘๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”๋ณด๊ธฐ์ •๋‹ต: (4) madvise() ํ˜ธ์ถœ๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์›๋ž˜ ๋งคํ•‘๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.ํ•ด์„ค:(1) X ์“ฐ๊ธฐ ์ž‘์—… ์‹œ ์ฆ‰์‹œ ๋ณต์‚ฌ๋ณธ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ. ์“ฐ๊ธฐ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งŒ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๋ฉฐ, ์ด๋•Œ race condition์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.(2) X MAP_SHARED๋Š” ๋ฉ”๋ชจ๋ฆฌ..

[์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ] 9์ฃผ์ฐจ: ํ€ด์ฆˆzz

Q1. ๋‹ค์Œ ์ค‘ TOCTTOU(Time-Of-Check To Time-Of-Use) ๊ณต๊ฒฉ์„ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ณต๊ฒฉ์ž์˜ ์ „๋žต์œผ๋กœ ์˜ณ์€ ๊ฒƒ์€?1. ํŒŒ์ผ์„ ์—ด๊ธฐ ์ „์— ํŒŒ์ผ์˜ inode ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.2. ์ทจ์•ฝํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ํŒŒ์ผ์„ ์—ด๊ธฐ ์ „์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐ”๊พผ๋‹ค.3. ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ์„ root์—์„œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ๋ฐ”๊พผ๋‹ค.4. setuid() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋ณตํ˜ธํ™”ํ•œ๋‹ค. ๋”๋ณด๊ธฐ์ •๋‹ต: 2→ TOCTTOU ๊ณต๊ฒฉ์€ check()์™€ use() ์‚ฌ์ด์— ๋งํฌ ๋“ฑ์„ ๋ฐ”๊พธ๋Š” ํƒ€์ด๋ฐ ๊ณต๊ฒฉ์ž„. Q2. O/X ํ€ด์ฆˆ (1) Set-UID ํ”„๋กœ๊ทธ๋žจ์—์„œ access()์™€ open() ์‚ฌ์ด์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„, open()์€ ํ•ญ์ƒ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธ๋œ ํŒŒ์ผ๋งŒ ์—ฐ๋‹ค.(2) ๊ฒฝ์Ÿ ์กฐ๊ฑด(Race Condition)..

[์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ] 8์ฃผ์ฐจ: ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ํ€ด์ฆˆ

1. ๋‹ค์Œ ์ค‘ StackGuard์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์€ ๊ฒƒ์€?(1) Stack ์˜์—ญ์„ ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์ด๋‹ค.(2) ์Šคํƒ์— ์‚ฝ์ž…๋œ canary ๊ฐ’์„ ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ ๊ฒ€์‚ฌํ•˜์—ฌ ์Šคํƒ ๋ณ€์กฐ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.(3) getuid()๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ setuid ์šฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.(4) ์…ธ์ฝ”๋“œ ๋‚ด์—์„œ /bin/sh ๊ฒฝ๋กœ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ œ๊ณตํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋”๋ณด๊ธฐ์ •๋‹ต: (2) ์Šคํƒ์— ์‚ฝ์ž…๋œ canary ๊ฐ’์„ ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ ๊ฒ€์‚ฌํ•˜์—ฌ ์Šคํƒ ๋ณ€์กฐ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ๊ด€๋ จ ๋‚ด์šฉ:StackGuard๋Š” ์Šคํƒ ๊ธฐ๋ฐ˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ๊ธฐ๋ฒ•์ด๋‹ค.ํ•จ์ˆ˜ ์‹œ์ž‘ ์‹œ, ๋ฆฌํ„ด ์ฃผ์†Œ์™€ ๋ฒ„ํผ ์‚ฌ์ด์— canary(์นด๋‚˜๋ฆฌ)๋ผ ๋ถˆ๋ฆฌ๋Š” ์ž„์˜์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค.ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ, ์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€..