๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€TL; DR. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” 12.4๊ฐ€์ง€ ์ธ๊ธฐ Linux ๋ฐฐํฌํŒ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฐ•ํ™” ์ฒด๊ณ„๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ ์ปค๋„ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์™€ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ฒจ๋ถ€๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๋ณด์•ˆ ์ฒด๊ณ„๋ฅผ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋ ค๋˜๋Š” ๋ฐฐํฌํŒ์€ OpenSUSE 9, Debian 6.10, CentOS, RHEL 7 ๋ฐ 14.04๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Ubuntu 12.04, 18.04 ๋ฐ XNUMX LTS์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋Š” ์Šคํƒœํ‚น ์นด๋‚˜๋ฆฌ์•„ ๋ฐ ์œ„์น˜ ๋…๋ฆฝ์  ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ฐฉ์‹์กฐ์ฐจ ์•„์ง ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ฑ„ํƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธ์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ์ถœํŒ ํ›„ XNUMX์›”์— ์ฃผ๋ชฉ์„ ๋ฐ›์€ ์Šคํƒ ์ถฉ๋Œ๊ณผ ๊ฐ™์€ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ƒํ™ฉ์€ ๋”์šฑ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ •๋ณด. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์ ˆ๋ง์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ƒ๋‹น์ˆ˜์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๋ฉฐ ๊ทธ ์ˆ˜๋Š” ๋ฒ„์ „๋งˆ๋‹ค ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

๊ฒ€ํ†  ๊ฒฐ๊ณผ OS ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์—์„œ Ubuntu 18.04์— ๊ฐ€์žฅ ๋งŽ์€ ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์ด ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ Debian 9๊ฐ€ ๊ทธ ๋’ค๋ฅผ ์ž‡๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด OpenSUSE 12.4, CentOS 7 ๋ฐ RHEL 7๋„ ๊ธฐ๋ณธ ๋ณดํ˜ธ ์ฒด๊ณ„ ๋ฐ ์Šคํƒ ์ถฉ๋Œ ๋ฐฉ์ง€๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ›จ์”ฌ ๋” ์กฐ๋ฐ€ํ•œ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋” ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์†Œ๊ฐœ

๊ณ ํ’ˆ์งˆ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋ฐ ๋™์  ๋Ÿฐํƒ€์ž„ ๋ถ„์„์„ ์œ„ํ•œ ์ˆ˜๋งŽ์€ ๊ณ ๊ธ‰ ๋„๊ตฌ์™€ ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐœ๋ฐœ์˜ ์ƒ๋‹นํ•œ ์ง„์ „์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ตœ์‹  ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์—ฌ์ „ํžˆ ๊ณต๊ฒฉ์ž๊ฐ€ ์ง€์†์ ์œผ๋กœ ์•…์šฉํ•˜๋Š” ์ทจ์•ฝ์ ์œผ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒํƒœ๊ณ„์—์„œ๋Š” ์ƒํ™ฉ์ด ๋”์šฑ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๋Š” ์•…์šฉ ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š” ์˜์›ํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—„๊ฒฉํ•œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜ํ•ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ข…์ข… ์ œํ•œ์ ์ด๊ฑฐ๋‚˜ ๋” ๋‚˜์˜๊ฒŒ๋Š” ์ทจ์•ฝํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณดํ˜ธํ•˜๊ฑฐ๋‚˜ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์œ ํ˜•์˜ ์˜ค๋ฅ˜๋Š” ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์—†์ง€๋งŒ ์˜ˆ๋ฐฉํ•˜๊ฑฐ๋‚˜ ๋ฐฉ์ง€ํ•จ์œผ๋กœ์จ ๊ณต๊ฒฉ์ž์˜ ์‚ถ์„ ๋”์šฑ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ๋ถ€๋ถ„์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šด์˜ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜. ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ๋Š” ๋ชจ๋“  ์ตœ์‹  ์šด์˜ ์ฒด์ œ์—์„œ ์‚ฌ์šฉ๋˜์ง€๋งŒ ๋ฐฉ๋ฒ•์€ ๋ณต์žก์„ฑ, ํšจ์œจ์„ฑ ๋ฐ ์„ฑ๋Šฅ๋ฉด์—์„œ ํฌ๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ASLR ์™„์ „ํ•œ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด CFI ะธ ROP. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Linux ๋ฐฐํฌํŒ์—์„œ ์–ด๋–ค ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ๊ฐ ๋ฐฐํฌํŒ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋ฐฐํฌ๋˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์†์„ฑ๋„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

CVE ๋ฐ ๋ณด์•ˆ

์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ "์˜ฌํ•ด ๊ฐ€์žฅ ์ทจ์•ฝํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ" ๋˜๋Š” "๊ฐ€์žฅ ์ทจ์•ฝํ•œ ์šด์˜ ์ฒด์ œ"์™€ ๊ฐ™์€ ์ œ๋ชฉ์˜ ๊ธฐ์‚ฌ๋ฅผ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ด ๋ ˆ์ฝ”๋“œ ์ˆ˜์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CVE(๊ณตํ†ต ์ทจ์•ฝ์  ๋ฐ ๋…ธ์ถœ), ์—์„œ ์–ป์€ ๊ตญ๊ฐ€ ์ทจ์•ฝ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(NVD) ๋ถ€ํ„ฐ NIST ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค. ์ดํ›„ ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” OS๋Š” CVE ์ˆ˜์— ๋”ฐ๋ผ ์ˆœ์œ„๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ CVE๋Š” ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๊ณต๊ธ‰์—…์ฒด์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•˜์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‹ค์ œ ๋ณด์•ˆ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฑฐ์˜ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๋‚œ XNUMX๋…„ ๋™์•ˆ Linux ์ปค๋„๊ณผ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” XNUMX๊ฐ€์ง€ ์„œ๋ฒ„ ๋ฐฐํฌํŒ(Ubuntu, Debian, Red Hat Enterprise Linux ๋ฐ OpenSUSE)์— ๋Œ€ํ•œ ์ด CVE ์ˆ˜๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
๊ทธ๋ฆผ. 1

์ด ๊ทธ๋ž˜ํ”„๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌด์—‡์„ ๋งํ•ด์ฃผ๋Š”๊ฐ€? CVE ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ํ•œ ๋ฐฐํฌํŒ์ด ๋‹ค๋ฅธ ๋ฐฐํฌํŒ๋ณด๋‹ค ๋” ์ทจ์•ฝํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๋Œ€๋‹ต์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Debian์ด OpenSUSE ๋˜๋Š” RedHat Linux์— ๋น„ํ•ด ๋” ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ–๊ณ  ์žˆ์ง€๋งŒ Debian์—๋Š” ๋” ๋งŽ์€ CVE๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ๋ณด์•ˆ ์•ฝํ™”๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. CVE๊ฐ€ ์กด์žฌํ•˜๋”๋ผ๋„ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ฐฉ์ทจ๋‹นํ•˜๋‹ค. ์‹ฌ๊ฐ๋„ ์ ์ˆ˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋Ÿฌ๋‚˜ ๊ถ๊ทน์ ์œผ๋กœ ์•…์šฉ ๊ฐ€๋Šฅ์„ฑ์€ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ๋ณดํ˜ธ ๊ธฐ๋Šฅ๊ณผ ๊ณต๊ฒฉ์ž์˜ ๋ฆฌ์†Œ์Šค ๋ฐ ๋Šฅ๋ ฅ์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ CVE ๋ณด๊ณ ์„œ๊ฐ€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋‹ค๋ฅธ ๋ณด๊ณ ์„œ์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋“ฑ๋ก๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์•Œ ์ˆ˜ ์—†์Œ ์ทจ์•ฝ์ . CVE์˜ ์ฐจ์ด๋Š” ํ…Œ์ŠคํŠธ์— ํ• ๋‹น๋œ ๋ฆฌ์†Œ์Šค๋‚˜ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜ ๊ทœ๋ชจ ๋“ฑ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ์ด์™ธ์˜ ์š”์ธ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ Debian์˜ CVE ์ˆ˜๊ฐ€ ๋” ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ Debian์ด ๋” ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  CVE ์‹œ์Šคํ…œ์€ ์ ์ ˆํ•œ ๋ณดํ˜ธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํŒจ์˜ ์›์ธ์„ ๋” ์ž˜ ์ดํ•ดํ• ์ˆ˜๋ก ๊ฐ€๋Šฅํ•œ ์•…์šฉ ๋ฐฉ๋ฒ•์„ ์‹๋ณ„ํ•˜๊ณ  ์ ์ ˆํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ํƒ์ง€ ๋ฐ ๋Œ€์‘. ๊ทธ๋ฆผ์—์„œ. 2๋Š” ์ง€๋‚œ XNUMX๋…„ ๋™์•ˆ ๋ชจ๋“  ๋ฐฐํฌํŒ์˜ ์ทจ์•ฝ์  ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค(์ถœ์ฒ˜). ๋Œ€๋ถ€๋ถ„์˜ CVE๋Š” ์„œ๋น„์Šค ๊ฑฐ๋ถ€(DoS), ์ฝ”๋“œ ์‹คํ–‰, ์˜ค๋ฒ„ํ”Œ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ, ์ •๋ณด ์œ ์ถœ(ํƒˆ์ถœ) ๋ฐ ๊ถŒํ•œ ์ƒ์Šน๊ณผ ๊ฐ™์€ ๋ฒ”์ฃผ์— ์†ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ฆ‰์‹œ ๋ช…๋ฐฑํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ CVE๊ฐ€ ๋‹ค์–‘ํ•œ ๋ฒ”์ฃผ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ณ„์‚ฐ๋˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ํ•ด๋งˆ๋‹ค ์ง€์†๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์˜ ๋‹ค์Œ ๋ถ€๋ถ„์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์˜ ์•…์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ณดํ˜ธ ์ฒด๊ณ„์˜ ์‚ฌ์šฉ์„ ํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
๊ทธ๋ฆผ. 2

์ž‘์—…

์ด ๊ธฐ์‚ฌ์—์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค์–‘ํ•œ Linux ๋ฐฐํฌํŒ์˜ ๋ณด์•ˆ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ปค๋„ ๋ฐ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์–ด๋–ค ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?
  • ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ฐฐํฌ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ฑ„ํƒ์ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋‚˜์š”?
  • ๊ฐ ๋ฐฐํฌํŒ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ‰๊ท  ์ข…์†์„ฑ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ๊ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋Š” ์–ด๋–ค ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‚˜์š”?

๋ถ„ํฌ ์„ ํƒ

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ ์‹ค์ œ ์„ค์น˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ ์„ค์น˜์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ํ†ต๊ณ„๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์–ด๋ ค์šด ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Unix ๋ณ€์ข…์€ ์„œ๋ฒ„ ์‹œ์Šคํ…œ์˜ ๋Œ€๋ถ€๋ถ„์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค(์›น ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ 69,2%, ํ†ต๊ณ„ W3techs ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค), ์ ์œ ์œจ์€ ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ํ”Œ๋žซํผ์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐํฌํŒ์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. Google ํด๋ผ์šฐ๋“œ. ํŠนํžˆ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ OS๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ/๋ฒ„์ „
ํ•ต์‹ฌ
์ง“๋‹ค

OpenSUSE 12.4
4.12.14-95.3-๊ธฐ๋ณธ๊ฐ’
#1 SMP 5๋…„ 06์›” 00์ผ ์ˆ˜์š”์ผ 48:2018:63 UTC(8a29dXNUMX)

๋ฐ๋น„์•ˆ 9(ํ™•์žฅ)
4.9.0-8-amd64
#1 SMP ๋ฐ๋น„์•ˆ 4.9.130-2 (2018-10-27)

6.10 CentOS์—
2.6.32-754.10.1.el6.x86_64
#1 SMP 15๋…„ 17์›” 07์ผ ํ™”์š”์ผ 28:2019:XNUMX UTC

7 CentOS์—
3.10.0-957.5.1.el7.x86_64
#1 SMP 1๋…„ 14์›” 54์ผ ๊ธˆ์š”์ผ 57:2019:XNUMX UTC

Red Hat Enterprise Linux ์„œ๋ฒ„ 6.10(์‚ฐํ‹ฐ์•„๊ณ )
2.6.32-754.9.1.el6.x86_64
#1 SMP 21๋…„ 15์›” 08์ผ ์ˆ˜์š”์ผ 21:2018:XNUMX EST

Red Hat Enterprise Linux ์„œ๋ฒ„ 7.6(๋งˆ์ดํฌ)
3.10.0-957.1.3.el7.x86_64
#1 SMP 15๋…„ 17์›” 36์ผ ๋ชฉ์š”์ผ 42:2018:XNUMX UTC

์šฐ๋ถ„ํˆฌ 14.04(ํŠธ๋Ÿฌ์Šคํ‹ฐ ํƒ€๋ฅด)
4.4.0โ€“140-์ผ๋ฐ˜

#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20โ€ฆ

์šฐ๋ถ„ํˆฌ 16.04(์ œ๋‹ˆ์–ผ ์ œ๋ฃจ์Šค)
4.15.0โ€“1026-gcp
#27~16.04.1-Ubuntu SMP 7๋…„ 09์›” 59์ผ ๊ธˆ์š”์ผ 47:2018:XNUMX UTC

์šฐ๋ถ„ํˆฌ 18.04(๋ฐ”์ด์˜ค๋‹‰ ๋น„๋ฒ„)
4.15.0โ€“1026-gcp
#27-Ubuntu SMP 6๋…„ 18์›” 27์ผ ๋ชฉ์š”์ผ 01:2018:XNUMX UTC

ํ‘œ 1

๋ถ„์„

๊ธฐ๋ณธ ์ปค๋„ ๊ตฌ์„ฑ๊ณผ ๊ฐ ๋ฐฐํฌํŒ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€ ์†์„ฑ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋ถˆ์•ˆ์ •ํ•œ ์ €์žฅ์†Œ(์˜ˆ: Debian 'ํ…Œ์ŠคํŠธ' ๋ฏธ๋Ÿฌ)์˜ ํŒจํ‚ค์ง€์™€ ํƒ€์‚ฌ ํŒจํ‚ค์ง€(์˜ˆ: ํ‘œ์ค€ ๋ฏธ๋Ÿฌ์˜ Nvidia ํŒจํ‚ค์ง€)๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ฐ ๋ฐฐํฌํŒ์˜ ๊ธฐ๋ณธ ๋ฏธ๋Ÿฌ์˜ ํŒจํ‚ค์ง€๋งŒ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์ปค๋„ ์ปดํŒŒ์ผ์ด๋‚˜ ๋ณด์•ˆ ๊ฐ•ํ™” ๊ตฌ์„ฑ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ปค๋„ ๊ตฌ์„ฑ ๋ถ„์„

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„์„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ kconfig ๊ฒ€์‚ฌ๊ธฐ. ๋ช…๋ช…๋œ ๋ฐฐํฌํŒ์˜ ๊ธฐ๋ณธ ๋ณดํ˜ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ด๋ฅผ ๋‹ค์Œ ๋ชฉ๋ก๊ณผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ ์ž์œ„๋Œ€ ํ”„๋กœ์ ํŠธ (KSPP). ๊ฐ ๊ตฌ์„ฑ ์˜ต์…˜์— ๋Œ€ํ•ด ํ‘œ 2์—์„œ๋Š” ์›ํ•˜๋Š” ์„ค์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ๋ž€์€ KSSP ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ค€์ˆ˜ํ•˜๋Š” ๋ฐฐํฌํŒ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์šฉ์–ด ์„ค๋ช…์€ ๋‹ค์Œ ์ฐธ์กฐ). ์—ฌ๊ธฐ์—; ํ–ฅํ›„ ๊ธฐ์‚ฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ๋ฐฉ๋ฒ• ์ค‘ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐฉ๋ฒ•์ด ๋“ฑ์žฅํ–ˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ๋ฐฉ๋ฒ•์ด ์—†์„ ๋•Œ ์‹œ์Šคํ…œ์„ ํ•ดํ‚นํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€

์ผ๋ฐ˜์ ์œผ๋กœ ์ƒˆ ์ปค๋„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ์—„๊ฒฉํ•œ ์„ค์ •์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 6.10 ์ปค๋„์˜ CentOS 6.10 ๋ฐ RHEL 2.6.32์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ตœ์‹  ์ปค๋„์— ๊ตฌํ˜„๋œ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋Œ€๋ถ€๋ถ„ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. SMAP, ์—„๊ฒฉํ•œ RWX ๊ถŒํ•œ, ์ฃผ์†Œ ๋ฌด์ž‘์œ„ํ™” ๋˜๋Š” copy2usr ๋ณดํ˜ธ. ํ‘œ์— ์žˆ๋Š” ๋งŽ์€ ๊ตฌ์„ฑ ์˜ต์…˜์€ ์ด์ „ ๋ฒ„์ „์˜ ์ปค๋„์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์‹ค์ œ๋กœ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ ์ ˆํ•œ ๋ณดํ˜ธ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ์˜๋ฏธ๋กœ ํ‘œ์— ์—ฌ์ „ํžˆ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŠน์ • ๋ฒ„์ „์— ๊ตฌ์„ฑ ์˜ต์…˜์ด ์—†๊ณ  ๋ณด์•ˆ์ƒ ์˜ต์…˜์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๊ตฌ์„ฑ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋ฅผ ํ•ด์„ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ์‚ฌํ•ญ: ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์ผ๋ถ€ ์ปค๋„ ๊ตฌ์„ฑ์€ ๋ณด์•ˆ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ๋กœ๋Š” uprobes ๋ฐ kprobes, ์ปค๋„ ๋ชจ๋“ˆ, BPF/eBPF๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์œ„์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์งˆ์ ์ธ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๊ณ  ์•…์˜์ ์ธ ํ–‰์œ„์ž๊ฐ€ ์ด๋ฏธ ์‹œ์Šคํ…œ์— ๋ฐœํŒ์„ ๋งˆ๋ จํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ๋‚จ์šฉ์„ ์ ๊ทน์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ 2์˜ ํ•ญ๋ชฉ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ์ตœ์‹  ์ปค๋„์ด ์ •๋ณด ์œ ์ถœ ๋ฐ ์Šคํƒ/ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ์™€ ๊ฐ™์€ ์ทจ์•ฝ์  ์•…์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฐํฌํŒ์กฐ์ฐจ๋„ ์•„์ง ๋” ๋ณต์žกํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ(์˜ˆ: ํŒจ์น˜ ํฌํ•จ)์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ) ๋˜๋Š” ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ์ตœ์‹  ๋ณดํ˜ธ(์˜ˆ: ์ฝ”๋“œ์— ๋Œ€ํ•œ R^X์™€ ๊ฐ™์€ ์ฒด๊ณ„์™€ ๋ฌด์ž‘์œ„ํ™”์˜ ์กฐํ•ฉ). ์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ๋ฐฉ์–ด ๊ธฐ๋Šฅ๋„ ์ „์ฒด ๋ฒ”์œ„์˜ ๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ๋Ÿฐํƒ€์ž„ ์•…์šฉ ํƒ์ง€ ๋ฐ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์†”๋ฃจ์…˜์œผ๋กœ ์Šค๋งˆํŠธ ๊ตฌ์„ฑ์„ ๋ณด์™„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„์„

๋‹น์—ฐํžˆ ๋ฐฐํฌํŒ๋งˆ๋‹ค ํŒจํ‚ค์ง€ ํŠน์„ฑ, ์ปดํŒŒ์ผ ์˜ต์…˜, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ ๋“ฑ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ด€๋ จ ์ข…์†์„ฑ์ด ์ ์€ ๋ฐฐํฌํŒ ๋ฐ ํŒจํ‚ค์ง€(์˜ˆ: Ubuntu ๋˜๋Š” Debian์˜ coreutils) ์ฐจ์ด์ ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ•ด๋‹น ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ์ข…์†์„ฑ์„ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ์ข…์†๋œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ์ถ”์ ํ•˜๊ณ  ๊ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•ด ์ข…์†์„ฑ์„ ์ถ”์ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” ๊ฒฐ๋ก ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌํŒ

๋ชจ๋“  ๋ฐฐํฌํŒ์— ๋Œ€ํ•ด ์ด 361๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ๋ฏธ๋Ÿฌ์—์„œ ํŒจํ‚ค์ง€๋งŒ ์ถ”์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค, ๊ธ€๊ผด ๋“ฑ๊ณผ ๊ฐ™์€ ELF ์‹คํ–‰ ํŒŒ์ผ์ด ์—†๋Š” ํŒจํ‚ค์ง€๋Š” ๋ฌด์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋ง ํ›„ ์ด 556๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” 129๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์— ๊ฑธ์นœ ํŒจํ‚ค์ง€ ๋ฐ ํŒŒ์ผ์˜ ๋ฐฐํฌ๋Š” ๊ทธ๋ฆผ 569์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ผ.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
๊ทธ๋ฆผ. 3

๋ฐฐํฌํŒ์ด ํ˜„๋Œ€์ ์ผ์ˆ˜๋ก ๋” ๋งŽ์€ ํŒจํ‚ค์ง€์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Ubuntu ๋ฐ Debian ํŒจํ‚ค์ง€์—๋Š” CentOS, SUSE ๋ฐ RHEL๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ(์‹คํ–‰ ํŒŒ์ผ๊ณผ ๋™์  ๋ชจ๋“ˆ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด Ubuntu ๋ฐ Debian์˜ ๊ณต๊ฒฉ ํ‘œ๋ฉด์— ์ž ์žฌ์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ˆซ์ž๋Š” ๋ชจ๋“  ๋ฒ„์ „์˜ ๋ชจ๋“  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค). ์ฆ‰, ์ผ๋ถ€ ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ถ„์„๋ฉ๋‹ˆ๋‹ค.) ์ด๋Š” ํŒจํ‚ค์ง€ ๊ฐ„์˜ ์ข…์†์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ผ ํŒจํ‚ค์ง€ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ทจ์•ฝ์„ฑ์€ ์ทจ์•ฝํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ชจ๋“  ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒํƒœ๊ณ„์˜ ๋งŽ์€ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ์˜ ํŒจํ‚ค์ง€ ๊ฐ„ ์ข…์†์„ฑ ์ˆ˜ ๋ถ„ํฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
๊ทธ๋ฆผ. 4

๊ฑฐ์˜ ๋ชจ๋“  ๋ฐฐํฌํŒ์—์„œ ํŒจํ‚ค์ง€์˜ 60%์—๋Š” ์ตœ์†Œ 10๊ฐœ์˜ ์ข…์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ํŒจํ‚ค์ง€์—๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ์ˆ˜์˜ ์ข…์†์„ฑ(100๊ฐœ ์ด์ƒ)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ญ๋ฐฉํ–ฅ ํŒจํ‚ค์ง€ ์ข…์†์„ฑ์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋Œ€๋กœ ๋ช‡ ๊ฐ€์ง€ ํŒจํ‚ค์ง€๊ฐ€ ๋ฐฐํฌํŒ์˜ ๋‹ค๋ฅธ ๋งŽ์€ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์„ ํƒ๋œ ์†Œ์ˆ˜์˜ ์ทจ์•ฝ์ ์€ ์œ„ํ—˜์ด ๋†’์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ํ‘œ์—๋Š” SLES, Centos 20, Debian 7 ๋ฐ Ubuntu 9์—์„œ ์ตœ๋Œ€ ์—ญ๋ฐฉํ–ฅ ์ข…์†์„ฑ ์ˆ˜๊ฐ€ ํฌํ•จ๋œ 18.04๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ ์…€์€ ํŒจํ‚ค์ง€ ๋ฐ ์—ญ๋ฐฉํ–ฅ ์ข…์†์„ฑ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„).

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
ํ‘œ 3

ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค. ๋ถ„์„๋œ ๋ชจ๋“  OS๋Š” x86_64 ์•„ํ‚คํ…์ฒ˜์šฉ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ‚ค์ง€์—๋Š” x86_64 ๋ฐ x86์œผ๋กœ ์ •์˜๋œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ๋ฆผ 5์— ํ‘œ์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํŒจํ‚ค์ง€์—๋Š” ์ข…์ข… ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. XNUMX.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
๊ทธ๋ฆผ. 5

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ๋ถ„์„๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ํŠน์ง•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋ณดํ˜ธ ํ†ต๊ณ„

์ตœ์†Œํ•œ ๊ธฐ์กด ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ณด์•ˆ ์˜ต์…˜ ์„ธํŠธ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Linux ๋ฐฐํฌํŒ์—๋Š” ์ด๋Ÿฌํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Debian/Ubuntu์—๋Š” ์ด๋Ÿฌํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ ์ž‘ํ’ˆ์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ hardening-check $(which docker)
/usr/bin/docker:
 Position Independent Executable: yes
 Stack protected: yes
 Fortify Source functions: no, only unprotected functions found!
 Read-only relocations: yes
 Immediate binding: yes

์Šคํฌ๋ฆฝํŠธ๋Š” XNUMX๊ฐ€์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ˜ธ ๊ธฐ๋Šฅ:

  • PIE(Position Independent Executable): ASLR์ด ์ปค๋„์—์„œ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋ฌด์ž‘์œ„ํ™”๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ํ…์ŠคํŠธ ์„น์…˜์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ์Šคํƒ ๋ณดํ˜ธ: ์Šคํƒ ์ถฉ๋Œ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์Šคํƒ ์นด๋‚˜๋ฆฌ์•„๋ฅผ ํ™œ์„ฑํ™”ํ• ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
  • Fortify Source: ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜(์˜ˆ: strcpy)๊ฐ€ ๋ณด๋‹ค ์•ˆ์ „ํ•œ ํ•จ์ˆ˜๋กœ ๋Œ€์ฒด๋˜๊ณ  ๋Ÿฐํƒ€์ž„์— ํ™•์ธ๋œ ํ˜ธ์ถœ์ด ํ™•์ธ๋˜์ง€ ์•Š์€ ํ•ด๋‹น ํ•จ์ˆ˜(์˜ˆ: __memcpy_chk ๋Œ€์‹  memcpy)๋กœ ๋Œ€์ฒด๋˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ ์ „์šฉ ์žฌ๋ฐฐ์น˜(RELRO): ์‹คํ–‰์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์žฌ๋ฐฐ์น˜ ํ…Œ์ด๋ธ” ํ•ญ๋ชฉ์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๊ฒฝ์šฐ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
  • ์ฆ‰์‹œ ๋ฐ”์ธ๋”ฉ: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๋Ÿฐํƒ€์ž„ ๋ง์ปค๊ฐ€ ๋ชจ๋“  ์ด๋™์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€(์ด๋Š” ์ „์ฒด RELRO์™€ ๋™์ผ)

์œ„์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ? ๋ถˆํ–‰ํ•˜๊ฒŒ๋„. ์œ„์˜ ๋ชจ๋“  ๋ฐฉ์–ด๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์•Œ๋ ค์ ธ ์žˆ์ง€๋งŒ, ๋ฐฉ์–ด๊ฐ€ ๊ฐ•ํ• ์ˆ˜๋ก ๊ณต๊ฒฉ์ž์˜ ๊ธฐ์ค€์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, RELRO ์šฐํšŒ ๋ฐฉ๋ฒ• PIE ๋ฐ ์ฆ‰์‹œ ๋ฐ”์ธ๋”ฉ์ด ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ ์šฉํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ „์ฒด ASLR์€ ์ž‘๋™ํ•˜๋Š” ์ต์Šคํ”Œ๋กœ์ž‡์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ •๊ตํ•œ ๊ณต๊ฒฉ์ž๋“ค์€ ์ด๋ฏธ ๊ทธ๋Ÿฌํ•œ ๋ณดํ˜ธ๋ฅผ ์ถฉ์กฑํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋ถ€์žฌ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ํ•ดํ‚น ์†๋„๋ฅผ ๋†’์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผ๋˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜.

์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ์˜ ๋ฐฐํฌํŒ์—์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด ๋‹ค์Œ ๋ฐฉ๋ฒ•๊ณผ ๋‹ค๋ฅธ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณดํ˜ธ๋˜๋Š”์ง€ ์—ฐ๊ตฌํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋น„ํŠธ(NX) ์Šคํƒ ํž™ ๋“ฑ๊ณผ ๊ฐ™์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์˜์—ญ์—์„œ์˜ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • RPATH/RUNPATH ์ผ์น˜ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋™์  ๋กœ๋”๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์˜๋ฌด์  ๋ชจ๋“  ์ตœ์‹  ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ: ์ด ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์˜๋กœ ์“ฐ๊ณ  ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ, ์ž˜๋ชป๋œ ์‹คํ–‰ ๊ฒฝ๋กœ ๊ตฌ์„ฑ์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ๋„์ž…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ถŒํ•œ ์ƒ์Šน๊ณผ ๋‹ค๋ฅธ ๋ฌธ์ œ).
  • ์Šคํƒ ์ถฉ๋Œ ๋ณดํ˜ธ๋Š” ์Šคํƒ์ด ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(์˜ˆ: ํž™)๊ณผ ๊ฒน์น˜๊ฒŒ ํ•˜๋Š” ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์•…์šฉ ์‚ฌ๋ก€๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์‹œ์Šคํ…œ ํž™ ์ถฉ๋Œ ์ทจ์•ฝ์ , ์šฐ๋ฆฌ๋Š” ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋” ์ด์ƒ ๊ณ ๋ฏผํ•˜์ง€ ๋ง๊ณ  ์ˆซ์ž๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‘œ 4์™€ 5์—๋Š” ๊ฐ๊ฐ ๋‹ค์–‘ํ•œ ๋ฐฐํฌํŒ์˜ ์‹คํ–‰ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถ„์„ ์š”์•ฝ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณด์‹œ๋‹ค์‹œํ”ผ NX ๋ณดํ˜ธ๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๊ณณ์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ CentOS, RHEL ๋ฐ OpenSUSE์— ๋น„ํ•ด Ubuntu ๋ฐ Debian ๋ฐฐํฌํŒ์—์„œ๋Š” ์‚ฌ์šฉ๋ฅ ์ด ์•ฝ๊ฐ„ ๋‚ฎ๋‹ค๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํƒ ์นด๋‚˜๋ฆฌ์•„๋Š” ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๋ˆ„๋ฝ๋˜์—ˆ์œผ๋ฉฐ, ํŠนํžˆ ์ด์ „ ์ปค๋„์ด ํฌํ•จ๋œ ๋ฐฐํฌํŒ์—์„œ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. Centos, RHEL, Debian ๋ฐ Ubuntu์˜ ์ตœ์‹  ๋ฐฐํฌํŒ์—์„œ ์ผ๋ถ€ ์ง„์ „์ด ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • Debian ๋ฐ Ubuntu 18.04๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐํฌํŒ์€ PIE ์ง€์›์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • OpenSUSE, Centos 7 ๋ฐ RHEL 7์—์„œ๋Š” ์Šคํƒ ์ถฉ๋Œ ๋ณดํ˜ธ๊ฐ€ ์•ฝํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์—์„œ๋Š” ์‚ฌ์‹ค์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ตœ์‹  ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฐฐํฌํŒ์€ RELRO๋ฅผ ์ผ๋ถ€ ์ง€์›ํ•˜๋ฉฐ Ubuntu 18.04๊ฐ€ ์„ ๋‘๋ฅผ ๋‹ฌ๋ฆฌ๊ณ  Debian์ด XNUMX์œ„๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ์ด ํ‘œ์˜ ์ธก์ •ํ•ญ๋ชฉ์€ ๋ชจ๋“  ๋ฒ„์ „์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์— ๋Œ€ํ•œ ํ‰๊ท ์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ ํŒŒ์ผ๋งŒ ๋ณด๋ฉด ์ˆซ์ž๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค(์˜ˆ: PIE ๊ตฌํ˜„์„ ํ†ตํ•œ ๋ฐ๋น„์•ˆ ์ง„ํ–‰). ๋”์šฑ์ด, ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐํฌํŒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต๊ณ„๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•จ์ˆ˜์˜ ๋ณด์•ˆ๋งŒ ํ…Œ์ŠคํŠธํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ์˜ ๋ถ„์„์€ ๊ฐ•ํ™”๋œ ํ•จ์ˆ˜์˜ ์‹ค์ œ ๋น„์œจ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 5๊ฐœ ๊ธฐ๋Šฅ ์ค‘ 50๊ฐœ ๊ธฐ๋Šฅ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๋ณดํ˜ธ๋œ๋‹ค๋ฉด, ๊ฐ•ํ™”๋˜๋Š” ๊ธฐ๋Šฅ์˜ 0,1%์— ํ•ด๋‹นํ•˜๋Š” 10์ ์˜ ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
ํ‘œ 4. ๊ทธ๋ฆผ 3์— ํ‘œ์‹œ๋œ ์‹คํ–‰ ํŒŒ์ผ์˜ ๋ณด์•ˆ ํŠน์„ฑ XNUMX (์ „์ฒด ์‹คํ–‰ ํŒŒ์ผ ์ˆ˜์— ๋Œ€ํ•œ ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„ ๋น„์œจ)

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
ํ‘œ 5. ๊ทธ๋ฆผ์— ํ‘œ์‹œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณด์•ˆ ํŠน์„ฑ 3 (์ „์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ˆ˜ ๋Œ€๋น„ ๊ด€๋ จ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋น„์œจ)

๊ทธ๋Ÿผ ์ง„์ „์ด ์žˆ๋Š” ๊ฑธ๊นŒ์š”? ๋ถ„๋ช…ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ณ„ ๋ถ„ํฌ์— ๋Œ€ํ•œ ํ†ต๊ณ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋ฐ๋น„์•ˆ), ์œ„์˜ ํ‘œ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์˜ˆ๋กœ์„œ ๊ทธ๋ฆผ 6์€ Ubuntu LTS 5์˜ ์„ธ ๊ฐ€์ง€ ์—ฐ์† ๋ฐฐํฌํŒ์—์„œ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๊ตฌํ˜„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค(์Šคํƒ ์ถฉ๋Œ ๋ฐฉ์ง€ ํ†ต๊ณ„๋Š” ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค). ๋ฒ„์ „์ด ๊ฑฐ๋“ญ๋ ์ˆ˜๋ก ์ ์  ๋” ๋งŽ์€ ํŒŒ์ผ์ด ์Šคํƒ ์นด๋‚˜๋ฆฌ์•„๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์™„์ „ํ•œ RELRO ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ์ ์  ๋” ๋งŽ์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•ด์กŒ๋Š”๊ฐ€
๊ทธ๋ฆผ. 6

๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ๋‹ค์–‘ํ•œ ๋ฐฐํฌํŒ์— ์žˆ๋Š” ๋‹ค์ˆ˜์˜ ์‹คํ–‰ ํŒŒ์ผ์—๋Š” ์—ฌ์ „ํžˆ ์œ„์˜ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Ubuntu 18.04๋ฅผ ๋ณด๋ฉด ngetty ๋ฐ”์ด๋„ˆ๋ฆฌ(getty ๋Œ€์ฒด), mksh ๋ฐ lksh ์‰˜, picolisp ์ธํ„ฐํ”„๋ฆฌํ„ฐ, nvidia-cuda-toolkit ํŒจํ‚ค์ง€(GPU ๊ฐ€์† ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ‚ค์ง€)๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ณ„ ํ•™์Šต ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ) ๋ฐ klibc -utils. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ mandos-client ๋ฐ”์ด๋„ˆ๋ฆฌ(์•”ํ˜ธํ™”๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์‹œ์Šคํ…œ์„ ์ž๋™์œผ๋กœ ์žฌ๋ถ€ํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ ๋„๊ตฌ)์™€ rsh-redone-client(rsh ๋ฐ rlogin์˜ ์žฌ๊ตฌํ˜„)๋Š” SUID ๊ถŒํ•œ์ด ์žˆ์ง€๋งŒ NX ๋ณดํ˜ธ ์—†์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. (. ๋˜ํ•œ ์—ฌ๋Ÿฌ suid ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋Š” ์Šคํƒ ์นด๋‚˜๋ฆฌ์•„(์˜ˆ: Xorg ํŒจํ‚ค์ง€์˜ Xorg.wrap ๋ฐ”์ด๋„ˆ๋ฆฌ)์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ ๋ฐ ๊ฒฐ๋ก 

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์ตœ์‹  Linux ๋ฐฐํฌํŒ์˜ ์—ฌ๋Ÿฌ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๊ฐ•์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์„์— ๋”ฐ๋ฅด๋ฉด ์ตœ์‹  Ubuntu LTS ๋ฐฐํฌํŒ(18.04)์€ Ubuntu 14.04, 12.04 ๋ฐ Debian 9์™€ ๊ฐ™์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ƒˆ๋กœ์šด ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐํฌํŒ ์ค‘์—์„œ ํ‰๊ท ์ ์œผ๋กœ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ OS ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ๋ณดํ˜ธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์กฐ์‚ฌ๋œ ๋ฐฐํฌํŒ CentOS, RHEL ๋ฐ ์šฐ๋ฆฌ ์„ธํŠธ์˜ OpenSUSE๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ๋ฐ€์ง‘๋œ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ์ตœ์‹  ๋ฒ„์ „(CentOS ๋ฐ RHEL)์—์„œ๋Š” Debian ๊ธฐ๋ฐ˜ ๊ฒฝ์Ÿ์‚ฌ(Debian ๋ฐ Ubuntu)์— ๋น„ํ•ด ์Šคํƒ ์ถฉ๋Œ ๋ฐฉ์ง€ ๋น„์œจ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค. CentOS์™€ RedHat ๋ฒ„์ „์„ ๋น„๊ตํ•˜๋ฉด ๋ฒ„์ „ 6์—์„œ 7๊นŒ์ง€ ์Šคํƒ ์นด๋‚˜๋ฆฌ์•„ ๋ฐ RELRO ๊ตฌํ˜„์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์ง€๋งŒ ํ‰๊ท ์ ์œผ๋กœ CentOS์—๋Š” RHEL๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๋ฐฐํฌํŒ์€ PIE ๋ณดํ˜ธ์— ํŠน๋ณ„ํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•˜๋ฉฐ, Debian 9 ๋ฐ Ubuntu 18.04๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ค‘ 10% ๋ฏธ๋งŒ์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์กฐ์‚ฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ณด์•ˆ ๋„๊ตฌ๊ฐ€ ๋งŽ์ด ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋ฆฌ๋‹ˆ ์Šค, ํ˜ธ๋ž‘์ด, ํ—ˆ๋ธ”), ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ตฌ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ํ•ฉ๋ฆฌ์ ์ธ ๊ตฌ์„ฑ์œผ๋กœ ๊ฐ•๋ ฅํ•œ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•ด๋„ ์•…์šฉ์ด ์—†์Œ์„ ๋ณด์žฅํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๊ตณ๊ฒŒ ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ณต๊ฒฉ ๋ฐฉ์ง€, ์ฐฉ์ทจ ํŒจํ„ด์— ์ค‘์ ์„ ๋‘๊ณ  ์ด๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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