๋ ผ๋ฌธ ์ ๋ณด
์ ์: 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 ์ดํ ๋จ์ ๋นํ
- ๊ณต๊ฒฉ์ ์ด๋: WโX๊ฐ "๋ฐ์ดํฐ ์์ญ์ ์ฝ๋ ์คํ"์ ๋ง์, ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ ์ฝ๋ ์ฃผ์ (code injection)์์ ์ฝ๋ ์ฌ์ฌ์ฉ(code reuse)์ผ๋ก ์ด๋ํ๋ค. ๋ฆฌํด ์ฃผ์๋ฅผ ์กฐ์ํด ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ก ์ ํํ๋ return-into-libc, ๋์๊ฐ ๋ช ๋ น์ด ๋ช ๋ฐ์ดํธ์ง๋ฆฌ ์กฐ๊ฐ์ ์ฌ์ฌ์ฒ๋ผ ์๋ ROP(return-oriented programming)๊ฐ ๋ฑ์ฅํ๋ค โ ROP๋ ์ด ์ฌ์ดํธ์ 2026-09-09 'The Geometry of Innocent Flesh on the Bone' ํธ์์ ๋ค๋ค๋ค.
- ๊ธฐ์กด ์ํ์ฑ ์ ํ๊ณ: ์คํ ์นด๋๋ฆฌ(StackGuard ๊ณ์ด)์ ASLR์ ๊ฐ๊ฐ ํด๋ฆฌ์คํฑยทํ๋ฅ ์ ๋ฐฉ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ ์ถ ์ ๋ณด ํ๋๋ฉด ASLR์ ๋ฌด๋ ฅํด์ง๊ณ , ์นด๋๋ฆฌ๋ ๋ฆฌํด ์ฃผ์๊ฐ ์๋ ๋ค๋ฅธ ๊ฐ์ ๋ถ๊ธฐ์ ์กฐ์์ ๋ง์ง ๋ชปํ๋ค.
- CFI์ ๋ฐ์ ์ ํ: "๋ฒ๊ทธ๋ฅผ ์์ ์"๊ฐ ์๋๋ผ "๋ฒ๊ทธ๊ฐ ์์ด๋ ๊ณต๊ฒฉ์๊ฐ ์์๋ก ๊ณ์ฐ์ ๋ฐ๊พธ์ง ๋ชปํ๊ฒ ํ์". ์ ์๋ค์ ์ด๊ฒ์ ํ์์ ์ผ๋ก ์ ์ ๊ฐ๋ฅํ ์์ ์์ฑ(safety property)์ผ๋ก ์ธ์ฐ๊ณ , "๊ฐ๋ ฅํ ์ ๋์(arbitrary memory corruption์ ๊ฐ์ง ๊ณต๊ฒฉ์)์ ๋ํด์๋" ์ฑ๋ฆฝํจ์ ๋ ผ์ฆํ๋ค.
- ์ '๋ฌด๊ฒฐ์ฑ'์ธ๊ฐ: ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ(๊ฐ์ด ๋ณ์กฐ๋์ง ์์)๊ณผ ๋ฌ๋ฆฌ, CFI๋ ์ ์ด ํ๋ฆ์ ๋ฌด๊ฒฐ์ฑ์ ์งํจ๋ค. ๊ณต๊ฒฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฌด๋ฆฌ ํ๋ค์ด๋, ์คํ ํ๋ฆ๋ง์ ์๋ ํ๋ก๊ทธ๋จ์ ๊ณจ๊ฒฉ์ ๋ฒ์ด๋์ง ๋ชปํ๊ฒ ๋ฌถ๋๋ค.
ํต์ฌ 1 โ ์๋ฆฌ: ๋ ์ด๋ธ ๊ธฐ๋ฐ CFI์ ์ธ๋ผ์ธ ๊ฒ์ฌ
- CFG ๊ตฌ์ถ: ์คํ ์ (pre-execution) ์ ์ ๋ถ์์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ฅผ ๋ง๋ ๋ค. ๋ ธ๋๋ ๊ธฐ๋ณธ ๋ธ๋ก(straight-line ๋ช ๋ น ๋ฌถ์), ๊ฐ์ ์ "์ด ๋ถ๊ธฐ๊ฐ ๋๋ฌํ ์ ์๋ ํฉ๋ฒ์ ๋ชฉ์ ์ง"๋ค.
- ๋ ์ด๋ธ(label) ๋ถ์ฌ: ๊ฐ์ ๋ถ๊ธฐ๊ฐ ๋๋ฌํ ์ ์๋ ํฉ๋ฒ์ ์ธ ๋ชฉ์ ์ง์ ๊ณ ์ ID๋ฅผ ๋ถ์ฌํ๋ค. ๋ถ๊ธฐ ๊ฒ์ฌ๋ "๋์์ ID๊ฐ ์ด ๋ถ๊ธฐ๊ฐ ํ์ฉํ๋ ์งํฉ์ ์ํ๋๊ฐ"๋ง ๋ณธ๋ค โ ๋ชฉ์ ์ง๋ณ ํ์ดํธ๋ฆฌ์คํธ๋ฅผ ๋๋ ์ ์ด๋ค. ID ์งํฉ์ด ์ปค์ง๋ฉด ์ฑ๋ฅ์ ์ํด ๋นํธ๋งตยทํด์ ๋ฑ์ผ๋ก ์์ถํ๋ค.
- ์ธ๋ผ์ธ ๊ฐ์ (inlined enforcement): ๊ฒ์ฌ๋ ์ฐธ์กฐ ๋ชจ๋ํฐ(reference monitor)๋ฅผ ๊ฐ ๊ฐ์ ๋ถ๊ธฐ ์ง์ ์ ๊ธฐ๊ณ์ด๋ก ์ธ๋ผ์ธ ์ฝ์ (IRM, inlined reference monitors)ํด ๊ตฌํํ๋ค. ๋ณ๋ ์ปค๋ยทํ์ดํผ๋ฐ์ด์ ๋์ ์์ด, ์ด์ง ์ฌ์์ฑ(binary rewriting)๋ง์ผ๋ก ์์ค ์ฝ๋ ์์ด๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
- ๋ฆฌํด์ ํน์์ฑ: ๋ฆฌํด ์ฃผ์๋ ๋ฐ์ดํฐ(์คํ)์ ์๊ณ ๊ณต๊ฒฉ ํ์ ์ด ๋๋ฏ๋ก, ๋ฆฌํด์ ๋ณ๋์ ๊ทธ๋ฆผ์ ํธ์ถ ์คํ(shadow call stack)๊ณผ ๋์กฐํ๋ ๋ฐฉ์์ผ๋ก ๊ฒ์ฆํ๋ค โ ๊ฐ์ ๋ ผ๋ฌธ์ด ์ด "๋ณดํธ๋ ๊ทธ๋ฆผ์ ์คํ"์ CFI ์์ ๊ตฌํํด ๋ณด์ธ๋ค.
- ๋ถ์ฐ๋ฌผ์ ํ์ฅ์ฑ: ์ด๋ก์ด ๊ฐ์กฐํ๋ฏ CFI๋ ๊ทธ ์์ฒด๋ก ๋์ด ์๋๋ผ ๋ ๋ง์ ๋ณด์ ์ ์ฑ ์ ์น์ ์ ์๋ ํ ๋๋ค. ๋ ผ๋ฌธ์ ๊ทธ๋ฆผ์ ํธ์ถ ์คํ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ ๊ทผ ์ ์ด(memory-region access control)๋ผ๋ ๋ ์ ์ฑ ์ ํจ์จ์ ์ผ๋ก ๊ตฌํํด ์ด ํ์ฅ์ฑ์ ์ ์ฆํ๋ค.
ํต์ฌ 2 โ ์์ฉ ํ๋์จ์ด์์ '์ค์ฉ์ '์ผ๋ก: ์ด์ง ์ฌ์์ฑ ๊ตฌํ
- ์ค์ฉ์ฑ ์ฆ๋ช : ์ ์๋ค์ ์์ด๋์ด๋ฅผ ์ด๋ก ์ ๋จธ๋ฌผ์ง ์๊ณ , ์์ฉ ์ํคํ ์ฒ(x86, Itanium ๋ฑ)์์ ์ํํธ์จ์ด ์ด์ง ์ฌ์์ฑ์ผ๋ก ๋์ํ๋ ๊ตฌํ์ ๋ด๋จ๋ค. ๊ธฐ์กด ์ํํธ์จ์ด์ ํธํ๋๋ฉฐ, ์์ค๊ฐ ์์ด๋ ๋ฐ์ด๋๋ฆฌ์ ์ ์ฉํ ์ ์๋ค๋ ์ ์ด ์ฑํ์ ๊ด๊ฑด์ด์๋ค.
- ํ์ ๋ณด์ฆ: CFI ์์ฑ์ด ์ฑ๋ฆฝํจ์ ํ์(formal)์ ์ผ๋ก ๋ ผ์ฆํ๋ค. "๊ณต๊ฒฉ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฒ๊ทธ๋ก ์์ ์ ์ด๋ฅผ ์ป์ด๋, CFG ๋ฐ์ผ๋ก๋ ๋๊ฐ ์ ์๋ค"๋ ์ง์ ์ด ์ฆ๋ช ๋์์ด ๋๋ค.
- ๊ฐ์ฉ์ฑ๊ณผ ๋น์ฉ: ๊ฒ์ฌ๋ ์ ๋ฐ๋(precision)์ ์ฑ๋ฅ(memory/runtime overhead) ์ฌ์ด์ ํธ๋ ์ด๋์คํ๋ฅผ ๊ฐ๋๋ค. ๋ ผ๋ฌธ์ ํต์ฌ ์ฃผ์ฅ์ "์ด ์ค๋ฒํค๋๊ฐ ๋ฐฐํฌ๋ฅผ ๋ง์ ๋งํผ ํฌ์ง ์๋ค"๋ ๊ฒ โ ์ดํ 20๋ ์ ์ฐ์ ์ฑํ์ด ๊ทธ ํ๋จ์ ํ์ธํด ์ค๋ค.
ํต์ฌ 3 โ ๋ฌด์์ ๋ณด์ฅํ๊ณ , ๋ฌด์์ ๋ณด์ฅํ์ง '์๋๊ฐ'
- ๋ณด์ฅํ๋ ๊ฒ: ๊ฐ์ ๋ถ๊ธฐ์ ๋ชฉ์ ์ง๋ฅผ CFG์ ์ ํจ ๊ฐ์ ์ผ๋ก ์ ํํจ์ผ๋ก์จ, ์ฝ๋ ์ฃผ์ ๊ณผ ์ฝ๋ ์ฌ์ฌ์ฉ(ROP/return-into-libc)์ ํตํ ์์ ์ ์ด ํ๋ฆ ํ์ทจ๋ฅผ ์๋ฆฌ์ ์ผ๋ก ๋ง๋๋ค. ๊ณต๊ฒฉ์๊ฐ ์ด๋ค gadget์ ๊ณจ๋ผ๋, CFG์ ๊ทธ๋ฆฌ๋ก ๊ฐ๋ ๊ฐ์ ์ด ์์ผ๋ฉด ์คํ์ด ๋๊ธด๋ค.
- ๋ณด์ฅํ์ง '์๋' ๊ฒ: CFI๋ ๋ง๋ฅ์ด ์๋๋ค. CFG ์์ ์ด๋ฏธ ํฉ๋ฒ์ ์ผ๋ก ์กด์ฌํ๋ ์ ์ด๋ฅผ ์
์ฉํ ๊ณต๊ฒฉ์ ๋ง์ง ๋ชปํ๋ค. ์์ปจ๋ ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ
execve๋ฅผ ํธ์ถํ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ๊ณ ์๋ค๋ฉด, ๊ทธ ํธ์ถ์ ์ ๋ฐํ๋ ๊ฒ์ CFG์ ์ ํจํ ๊ฐ์ ์ด๋ฏ๋ก "ํ์ฉ"๋๋ค. ์ ์๋ค ์ค์ค๋ก "CFI๋ ๊ฐ๋ ฅํ์ง๋ง ์์ ํ์ง ์๋ค(a strong, but not complete, defense)"๊ณ ํ๋ ์ด๋ฐํ๋ค. - ๊ด์ ์ ์ ๋ฆฌ: CFI๋ "์์ ์ฝ๋ ์คํ(arbitrary code execution)"์ ๋ฌธ์ ๋ซ์ง๋ง, "ํ๋ก๊ทธ๋จ์ ์ ์ ๊ธฐ๋ฅ์ ๋ฌด๊ธฐ๋ก ์ผ๋ ํ์"๊น์ง๋ ๋ซ์ง ๋ชปํ๋ค. ์ด ๊ตฌ๋ถ์ ์ดํ ๋ชจ๋ ์ํ์ฑ ๋ ผ์์ ๊ธฐ์ค์ ์ด ๋๋ค.
- ์ค์ฝํ ๋ฐ: ๊ฐ ์์ฒด๋ฅผ ๋ณ์กฐํ๋ ๋ฐ์ดํฐ ์งํฅ ๊ณต๊ฒฉ(data-oriented attacks)ยท์ ์ด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ(CDI) ๋ฌธ์ ๋ CFI์ ๋ฒ์๊ฐ ์๋๋ค โ ๋ณ๋์ ๊ณ๋ณด(๋ฐ์ดํฐ ํ๋ฆ ๋ฌด๊ฒฐ์ฑยทDFI, ์ ์ด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ)๊ฐ ์ด๋ฅผ ๋ค๋ฃฌ๋ค.
ํต์ฌ 4 โ ์ ๋ฐ๋ vs ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ '์ฐํ' ์ฐ๊ตฌ์ ๋ฑ์ฅ
- ์ ๋ฐ๋์ ์คํํธ๋ผ: CFG๋ฅผ ์ผ๋ง๋ ์ด์ดํ(๊ฐ์ ํ๋ํ๋) ๊ฒ์ฌํ๋๋์ ๋ฐ๋ผ fine-grained CFI์ coarse-grained CFI๋ก ๋๋๋ค. ์ ๋ฐํ ์๋ก ๋ณด์์ ๊ฐํ์ง๋ง ๊ฒ์ฌ ๋น์ฉ๊ณผ ํธํ์ฑ ์ ์ฝ์ด ์ปค์ง๋ค.
- ๊ฑฐ์น CFI๋ ๋ซ๋ฆฐ๋ค: ๋ชฉ์ ์ง ์งํฉ์ ๋๊ฒ ๋ญ๋ฑ๊ทธ๋ฆฐ coarse CFI๋ COOP(counterfeit object-oriented programming) ๊ฐ์ ๊ณต๊ฒฉ์ผ๋ก ์ฐํ๋๋ค โ ์ด๋ "Out of Control: Overcoming Control-Flow Integrity"(GรถktaลยทAthanasopoulosยทBosยทPortokalidis, IEEE S&P 2014; OpenAlex ๊ธฐ์ค 361ํ)๊ฐ ์์ฐํ๋ค.
- ๊ท ํ์ ์ ํ์: ๊ทธ๋์ ์ค๋ฌด์ CFI๋ "์ ๋ฐ๋ยท์ฑ๋ฅยทํธํ์ฑ" ์ผ๊ฐํ์์ ์ค์ฉ์ ํํ์ ์ ์ฐพ๋ ๋ฐฉํฅ์ผ๋ก ์งํํ๋ค. ์๋ ผ๋ฌธ์ด ์ธ์ด ๊ฐ๋ ํ์ ๊ทธ๋๋ก, ๊ตฌํ์ ์ต์ ์ ๋ง ์ฎ๊ฒจ๊ฐ ์ ์ด๋ค.
- ํ์ ๊ณ๋ณด: CCFIRยทbin-CFI ๋ฑ ์ด์ง CFI ์ฐ๊ตฌ, ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ CFI, ๊ทธ๋ฆฌ๊ณ ๊ฒฐ์ ์ ์ผ๋ก ํ๋์จ์ด ์ง์์ผ๋ก ์ด์ด์ง๋ค.
์์ฌ์ โ 20๋ ๋ค, ๋ชจ๋ ์นฉ์ ๋ด์ฅ๋ ์์ด๋์ด
- Intel CET (Control-flow Enforcement Technology): ๊ฐ์ ๋ถ๊ธฐ ์ถ์ (IBT)๊ณผ ๊ทธ๋ฆผ์ ์คํ(shadow stack)์ ํ๋ก์ธ์์ ๋ด์ฅํ ์์ฉ ํ๋์จ์ด CFI. ๋ ผ๋ฌธ์ "๋ ์ด๋ธ ๊ฒ์ฌ + ๋ณดํธ๋ ๊ทธ๋ฆผ์ ์คํ"์ด ์ค๋ฆฌ์ฝ์ผ๋ก ๋ค์ด๊ฐ ํํ๋ค.
- Windows CFG / XFG, ClangยทLLVM
-fsanitize=cfi, Android: ์ด์์ฒด์ ยท์ปดํ์ผ๋ฌ ์์ค์ CFI๊ฐ ๊ธฐ๋ณธ ๋ฐฉ์ด์ ์ผ๋ก ์๋ฆฌ ์ก์๋ค. "CFG๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ ๋ถ๊ธฐ๋ฅผ ๊ฒ์ฌํ๋ค"๋ ์ด ๋ ผ๋ฌธ์ ๊ณจ๊ฒฉ์ด ํ์ค ํด์ฒด์ธ์ ๋ด์ฅ๋๋ค. - ๊ณต๊ฒฉ-๋ฐฉ์ด์ ์ถ: 2026-09-09 ROP๊ฐ "WโX๋ฅผ ๋ฌด๋๋จ๋ฆฐ ๊ณต๊ฒฉ"์ด์๋ค๋ฉด, ์ด ๋ ผ๋ฌธ์ "๊ทธ ๊ณต๊ฒฉ์ ๋ํ ์๋ฆฌ์ ๋ต"์ด๋ค. ๋ ํธ์ ๋๋ํ ์ฝ์ผ๋ฉด ์ฝ๋ ์ฌ์ฌ์ฉ ๊ณต๊ฒฉ์ฌ(ๅฒ)๊ฐ ํ๋์ ์กํ๋ค.
- ์์ ํ ๋ฐฉ์ด๋ ์๋ค๋ ๊ตํ: CFI๊ฐ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์กฐ์ด์, ๊ณต๊ฒฉ์๋ ๋ฐ์ดํฐ ์งํฅ ๊ณต๊ฒฉ๊ณผ ์ฌ์ด๋์ฑ๋๋ก ์ด๋ํ๋ค โ ์บ์ยท์ ๋ ฅยท๋ง์ดํฌ๋ก์ํคํ ์ฒ๋ฅผ ํ๊ณ ๋๋ Spectre(2026-10-14), Rowhammer(2026-09-11)๊ฐ ๊ทธ ์ถ์ด๋ค. ํ ๊ณ์ธต์ ์ํ๋ ๋ ๋ค์ ๊ณ์ธต์ ๊ณต๊ฒฉ์ ๋ถ๋ฅธ๋ค.
- ์ฐ๊ตฌ ๋ฐฉ๋ฒ๋ก ์ผ๋ก์์ ๊ฐ์น: ์ด ๋ ผ๋ฌธ์ "์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋" ๋์ "๊ณต๊ฒฉ์์๊ฒ ๋จ๋ ์์ ๋๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ค์ด๋" ์ํ์ฑ ์ฐ๊ตฌ์ ๊ต๊ณผ์์ ์๋ค. ์ค๋๋ ๋ชจ๋ ์์คํ ๋ณด์ ๋ ผ๋ฌธ์ด ์ธ์ฉํ๋ ๋ฌธ์ ์ค์ ("๋ฌด์์ ๋ณด์ฅํ๋๊ฐ / ๋ฌด์์ ๋ณด์ฅํ์ง ์๋๊ฐ")์ ์ ๋ฆฝํ๋ค.
ํ๊ณ ยท ์ ์์
- ์ ๋ฐ๋-์ฑ๋ฅ ํธ๋ ์ด๋์คํ๋ ์๊ตฌ์ : coarse CFI๋ ์ค์ธก์ผ๋ก ์ฐํ๋๊ณ (COOP), fine CFI๋ ๋น์ฉยทํธํ์ฑ ๋ฌธ์ ๊ฐ ๋จ๋๋ค. "CFI๋ฅผ ์ผฐ์ผ๋ ์์ "์ด๋ผ๋ ๋จ์ ์ ์ด ๋ ผ๋ฌธ์ ์ ์ ์ ์ด๊ธ๋๋ค โ ์ด๋ค ์ ๋ฐ๋์ CFI์ธ๊ฐ๊ฐ ํญ์ ๋ฌธ์ ๋ค.
- ๋์ ยท์ ์ฐํ ์ ์ด ํ๋ฆ๊ณผ์ ์ถฉ๋: JIT, ์ฝ๋ฐฑ, ์์ธ ์ฒ๋ฆฌ, ๊ฐ์ ๋์คํจ์น์ฒ๋ผ ๋ชฉ์ ์ง๊ฐ ์ปดํ์ผ ์์ ์ ๊ณ ์ ๋์ง ์๋ ์ฝ๋๋ CFG๋ฅผ ๋ณด์์ ์ผ๋ก ๋ํ ์๋ฐ์ ์์ด ์ ๋ฐ๋๊ฐ ๋จ์ด์ง๋ค.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ๋ค๋ฃฌ๋ค: CFI๋ ์ ์ด ํ๋ฆ๋ง ์งํจ๋ค. ๊ฐยทํฌ์ธํฐ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ(๋ฐ์ดํฐ ์งํฅ ๊ณต๊ฒฉ ๋ฐฉ์ด)์ ๋ณ๊ฐ ์ฐ๊ตฌ ์์ญ์ด๋ค.
- ์๋์ ๋งฅ๋ฝ: ์ํ(2005)์ ๊ตฌํยท์ค๋ฒํค๋ ์ธก์ ์ ๋น์ x86ยทItanium ์์ฉ ํ๋์จ์ด ๊ธฐ์ค์ด๋ค. ์ค๋๋ Intel CET ๊ฐ์ ํ๋์จ์ด ์ง์์ผ๋ก ์ค๋ฒํค๋๋ ํฌ๊ฒ ์ค์์ง๋ง, "์์ ํ CFI"์ ๊ทธ ๊ฒ์ฆ์ ์ฌ์ ํ ํ๋ฐํ ์ฐ๊ตฌ ์ฃผ์ ๋ค.
- ์ธ์ฉ ์ ์ถ์ฒ: OpenAlex 1,032ํ(CCS 2005 ์ํ)ยท795ํ(TISSEC 2009 ํ์ฅํ)๋ ์กฐํ ์์ ๊ธฐ์ค์ด๋ฉฐ, ๋ ํ๋ณธ์ด ๊ฐ๊ฐ ์ง๊ณ๋์ด ์ธ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ค. S2๋ 645ํ(CCS 2005).
์ถ์ฒ
- ๋ ผ๋ฌธ ์๋ฌธ: Martรญn Abadi, Mihai Budiu, รlfar Erlingsson, Jay Ligatti, Control-Flow Integrity: Principles, Implementations, and Applications, ACM CCS 2005 โ ACM DL ยท DOI 10.1145/1102120.1102165
- ํ์ฅ ์ ๋ํ: Control-flow integrity principles, implementations, and applications, ACM TISSEC 14(1), 2009 โ ACM DL ยท DOI 10.1145/1609956.1609960
- ์ธ์ฉ ์: OpenAlex (CCS 2005) ยท OpenAlex (TISSEC 2009)
- ํจ๊ป ์ฝ๊ธฐ:
- 2026-09-09 The Geometry of Innocent Flesh on the Bone โ WโX๋ฅผ ๋ฌด๋๋จ๋ฆฐ return-oriented programming: CFI๊ฐ ๋ตํ๋ ค ํ ๋ฐ๋ก ๊ทธ ๊ณต๊ฒฉ.
- 2026-10-14 Spectre โ ์ถ์ธก ์คํ์ ๊ฒจ๋ ๋ง์ดํฌ๋ก์ํคํ ์ฒ ๋ถ์ฑ๋: ์ฝ๋ ์ฌ์ฌ์ฉ์ ์กฐ์ด์ ๊ณต๊ฒฉ์๊ฐ ์ฎ๊ฒจ๊ฐ ๋ค์ ๊ณ์ธต(ํ๋์จ์ด).
- 2026-09-11 Rowhammer โ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋นํธ๋ฅผ ๋ค์ง์ DRAM ๊ต๋: ์ํํธ์จ์ด ์ํ์ฑ ๋ฐ๊นฅ์ ๋ฌผ๋ฆฌ ๊ณ์ธต ์ํ.
- 2026-09-07 Meltdown โ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ์ด๋ธ ์ถ์ธก ์คํ ๋ถ์ฑ๋: Spectre์ ํจ๊ป ํ๋ฆฌํ๋ฆฐํธ๋ก ๊ณต๊ฐ๋ ์๋งค ๋ ผ๋ฌธ.