๐Ÿ›ก๏ธ [ํด๋ž˜์‹] Control-Flow Integrity โ€” '์ƒˆ ์ฝ”๋“œ๋ฅผ ์‹ฌ์ง€ ๋ชปํ•ด๋„, ์ด๋ฏธ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ์›ํ•˜๋Š” ๊ณ„์‚ฐ์„ ์‹œํ‚จ๋‹ค'

2026-10-16 ยท ์นดํ…Œ๊ณ ๋ฆฌ: Research (์ „ํ†ต ๋ณด์•ˆ ๋…ผ๋ฌธ ยท ์‹œ์Šคํ…œ ๋ณด์•ˆ ยท ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ ๋ฐฉ์–ด ยท ์‹คํ–‰ ํ๋ฆ„ ๋ฌด๊ฒฐ์„ฑ ยท ์†Œํ”„ํŠธ์›จ์–ด ์™„ํ™”์ฑ…)

๋…ผ๋ฌธ ์ •๋ณด

์ œ๋ชฉ: Control-Flow Integrity: Principles, Implementations, and Applications
์ €์ž: Martรญn Abadi ยท Mihai Budiu ยท รšlfar Erlingsson ยท Jay Ligatti (๋‹น์‹œ Microsoft Research)
์ถœ์ฒ˜: ACM CCS 2005 (12th ACM Conference on Computer and Communications Security, 2005๋…„ 11์›”) โ€” DOI 10.1145/1102120.1102165 ยท ํ™•์žฅ ์ €๋„ํŒ ACM TISSEC 14(1), 2009 (DOI 10.1145/1609956.1609960)
๋ถ„์•ผ: ์‹œ์Šคํ…œ ๋ณด์•ˆ ยท ์†Œํ”„ํŠธ์›จ์–ด ๋ฌด๊ฒฐ์„ฑ ยท ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ(code-reuse) ๋ฐฉ์–ด ยท ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฐ˜ ์™„ํ™”์ฑ…(software-based mitigation) ยท ์‹คํ–‰ ์‹œ๊ฐ„ ์ •์ฑ… ๊ฐ•์ œ(runtime enforcement)
์ธ์šฉ: OpenAlex ๊ธฐ์ค€ 1,032ํšŒ (CCS 2005 ์›ํŒ; S2 ๊ธฐ์ค€ 645ํšŒ) ยท ํ™•์žฅํŒ TISSEC 2009์€ OpenAlex ๊ธฐ์ค€ 795ํšŒ โ€” 20๋…„ ๋’ค ์ด ์•„์ด๋””์–ด๋Š” Intel CET ยท Windows CFG ยท Clang/LLVM CFI๋กœ ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ์™€ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋‚ด์žฅ๋๋‹ค.
์›๋ฌธ: ACM DL (CCS 2005) ยท ACM TISSEC 2009 (ํ™•์žฅํŒ) ยท DOI

ํ•œ ์ค„ ์š”์•ฝ โ€” "์–ด๋””๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€"๋ฅผ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋กœ ๋ชป ๋ฐ•๋Š”๋‹ค

2000๋…„๋Œ€ ์ดˆ WโŠ•X(NX/DEP)๊ฐ€ ๋ฐฐํฌ๋˜๋ฉด์„œ ๊ณต๊ฒฉ์ž๋Š” ์Šคํƒยทํž™์— ์ƒˆ ์ฝ”๋“œ๋ฅผ ์‹ฌ๋Š” ๋ฐฉ์‹์— ์ œ๋™์ด ๊ฑธ๋ ธ๋‹ค. ๊ทธ๊ฐ€ ํƒํ•œ ์šฐํšŒ๋กœ๋Š” ๋” ๊ต๋ฌ˜ํ–ˆ๋‹ค โ€” ์ƒˆ ์ฝ”๋“œ๋ฅผ ์‹ฌ๋Š” ๋Œ€์‹  ์ด๋ฏธ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ(gadget)๋“ค์„ ์›ํ•˜๋Š” ์ˆœ์„œ๋กœ ์—ฎ์–ด ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ(return-into-libc โ†’ ROP). ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜์—ญ์—๋งŒ ์žˆ๋“  ๋ง๋“ , ๊ณต๊ฒฉ์ž๋Š” ์ œ์–ด ํ๋ฆ„(control flow)๋งŒ ์กฐ์ž‘ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ณ„์‚ฐ์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด ๋…ผ๋ฌธ์€ ๊ทธ ์ง€์ ์—์„œ ์งˆ๋ฌธ์„ ๋ฐ”๊พผ๋‹ค. "๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ง€ํ‚ฌ๊นŒ"๊ฐ€ ์•„๋‹ˆ๋ผ, "ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ์›๋ž˜ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜๋„ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ฒŒ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€". ์ €์ž๋“ค์ด ์ •์˜ํ•œ ์†์„ฑ์ด Control-Flow Integrity(CFI, ์‹คํ–‰ ํ๋ฆ„ ๋ฌด๊ฒฐ์„ฑ)๋‹ค:

"The enforcement of a basic safety property, Control-Flow Integrity (CFI), can prevent such attacks from arbitrarily controlling program behavior." โ€” ๋…ผ๋ฌธ ์ดˆ๋ก

ํ•ต์‹ฌ์€ ๋‹จ์ˆœํ•˜๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ •์  ๋ถ„์„์œผ๋กœ control-flow graph(CFG)๋ฅผ ๋งŒ๋“ค๊ณ , ์‹คํ–‰ ์ค‘ ๋ชจ๋“  ๊ฐ„์ ‘ ๋ถ„๊ธฐ(๊ฐ„์ ‘ ํ˜ธ์ถœยท์ ํ”„ยท๋ฆฌํ„ด)๊ฐ€ ๊ทธ CFG์˜ ์œ ํšจํ•œ ๊ฐ„์„ ๋งŒ ๋”ฐ๋ผ๊ฐ€๋„๋ก ๊ฒ€์‚ฌ ์ฝ”๋“œ๋ฅผ ์‹ฌ๋Š”๋‹ค. ๋ชฉ์ ์ง€๊ฐ€ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋ฐ–์ด๋ฉด ์‹คํ–‰์„ ์ฆ‰์‹œ ์ค‘๋‹จํ•œ๋‹ค. "์–ด๋””๋กœ๋“  ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋‹ค"๋ฅผ "์ •ํ•ด์ง„ ๊ณณ์œผ๋กœ๋งŒ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋‹ค"๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ โ€” ์ด๊ฒƒ์ด ์˜ค๋Š˜๋‚  ๋ชจ๋“  CPU์— ๋‚ด์žฅ๋œ ์™„ํ™”์ฑ…์˜ ์›ํ˜•์ด๋‹ค.

๋ฐฐ๊ฒฝ โ€” WโŠ•X ์ดํ›„ ๋‚จ์€ ๋นˆํ‹ˆ

ํ•ต์‹ฌ 1 โ€” ์›๋ฆฌ: ๋ ˆ์ด๋ธ” ๊ธฐ๋ฐ˜ CFI์™€ ์ธ๋ผ์ธ ๊ฒ€์‚ฌ

ํ•ต์‹ฌ 2 โ€” ์ƒ์šฉ ํ•˜๋“œ์›จ์–ด์—์„œ '์‹ค์šฉ์ '์œผ๋กœ: ์ด์ง„ ์žฌ์ž‘์„ฑ ๊ตฌํ˜„

ํ•ต์‹ฌ 3 โ€” ๋ฌด์—‡์„ ๋ณด์žฅํ•˜๊ณ , ๋ฌด์—‡์„ ๋ณด์žฅํ•˜์ง€ '์•Š๋Š”๊ฐ€'

ํ•ต์‹ฌ 4 โ€” ์ •๋ฐ€๋„ vs ์„ฑ๋Šฅ, ๊ทธ๋ฆฌ๊ณ  '์šฐํšŒ' ์—ฐ๊ตฌ์˜ ๋“ฑ์žฅ

์‹œ์‚ฌ์  โ€” 20๋…„ ๋’ค, ๋ชจ๋“  ์นฉ์— ๋‚ด์žฅ๋œ ์•„์ด๋””์–ด

ํ•œ๊ณ„ ยท ์œ ์˜์ 

์ถœ์ฒ˜

๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ