3ํ•™๋…„ (2025)/์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ (๊ทธ๋ฃน์Šคํ„ฐ๋””) 22

[์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ] ํ€ด์ฆˆ: 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(์นด๋‚˜๋ฆฌ)๋ผ ๋ถˆ๋ฆฌ๋Š” ์ž„์˜์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค.ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ, ์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€..

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

Q1.LD_PRELOAD ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ๊ด€๋ จํ•˜์—ฌ ์˜ณ์ง€ ์•Š์€ ์„ค๋ช…์€?1) ์‹คํ–‰ ์‹œ ์šฐ์„ ์ ์œผ๋กœ ์ง€์ •๋œ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋„๋ก ๋ง์ปค์— ์ง€์‹œํ•œ๋‹ค.2) Set-UID ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ LD_PRELOAD๋Š” ํ•ญ์ƒ ์ ์šฉ๋œ๋‹ค.3) ๊ณต๊ฒฉ์ž๊ฐ€ ๋งŒ๋“  ๊ฐ€์งœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.4) libc์˜ ๊ธฐ๋ณธ ํ•จ์ˆ˜(sleep ๋“ฑ)๋ฅผ ์šฐํšŒํ•˜๊ฑฐ๋‚˜ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”๋ณด๊ธฐ์ •๋‹ต: (2)ํ•ด์„ค:(1) ๋งž๋Š” ์„ค๋ช…. LD_PRELOAD๋Š” ๋ง์ปค๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋กœ๋“œํ•  ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ.(2) B: ํ‹€๋ฆผ. Set-UID ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” RUID์™€ EUID๊ฐ€ ๋‹ค๋ฅด๋ฉด LD_PRELOAD๋Š” ๋ณด์•ˆ์ƒ ๋ฌด์‹œ๋จ. ์ด๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ธฐ๋ฐ˜ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌ๋ˆ…์Šค์˜ ๋ณด์•ˆ ์ •์ฑ…์ž„.(3) C: ๋งž์Œ. ๊ณต๊ฒฉ์ž๊ฐ€ ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ LD_PRELOAD..

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

Q1. ๋‹ค์Œ ๊ทธ๋ฆผ์€ umask ๊ฐ’์„ ์ ์šฉํ•ด ์ตœ์ข… ํŒŒ์ผ ๊ถŒํ•œ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค€๋‹ค.1, 2, 3์— ๋“ค์–ด๊ฐˆ ์•Œ๋งž์€ ๊ฐ’์„ ๊ฐ๊ฐ 8์ง„์ˆ˜/2์ง„์ˆ˜/2์ง„์ˆ˜ ํ˜•์‹์œผ๋กœ ์“ฐ์‹œ์˜ค. ๋”๋ณด๊ธฐํ•ญ๋ชฉ ๋‚ด์šฉโ‘  0022 (umask ๊ฐ’ 8์ง„์ˆ˜)โ‘ก 000 010 010 (umask์˜ ์ด์ง„์ˆ˜ ํ‘œํ˜„)โ‘ข 110 100 100 (์ตœ์ข… ๊ถŒํ•œ์˜ ์ด์ง„์ˆ˜)→ ์ด์ง„์ˆ˜ 110 100 100์€ 8์ง„์ˆ˜๋กœ 0644, ์ฆ‰ rw- r-- r--์ž„. Q2. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ Set-UID๋กœ ์„ค์ •๋œ ๋ฃจํŠธ ์†Œ์œ  ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ์•„๋ž˜ ์ค‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค๋ช…๋œ ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€? (1) RUID๋Š” root๊ฐ€ ๋˜๊ณ  EUID๋Š” ์‚ฌ์šฉ์ž์˜ ID๊ฐ€ ๋œ๋‹ค.(2) RUID์™€ EUID ๋ชจ๋‘ ์‚ฌ์šฉ์ž์˜ ID๋กœ ์œ ์ง€๋œ๋‹ค.(3) RUID๋Š” ์‚ฌ์šฉ์ž์˜ ID, EUID๋Š” ํ”„๋กœ๊ทธ๋žจ ์†Œ์œ ์ž์˜ ..