Enclave์—์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Intel SGX์— ๋Œ€ํ•œ ๊ณต๊ฒฉ

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

Intel SGX SDK(CVE-2021-0186) ๋ฐ Microsoft Open Enclave(CVE-2021-33767)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์—”ํด๋ ˆ์ด๋ธŒ์šฉ ์ต์Šคํ”Œ๋กœ์ž‡ ํ”„๋กœํ† ํƒ€์ž…์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” HTTPS๋ฅผ ์œ„ํ•ด ์›น ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” RSA ํ‚ค๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‹œ์—ฐํ–ˆ์œผ๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” enclave ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” cURL ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ ํš๋“ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ Intel SGX SDK 2.13 ๋ฐ Open Enclave 0.17.1 ๋ฆด๋ฆฌ์Šค์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฏธ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Intel SGX SDK ๋ฐ Microsoft Open Enclave ์™ธ์—๋„ ์ด ์ทจ์•ฝ์„ฑ์€ Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX ๋ฐ Veracruz์—๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

SGX(Software Guard Extensions) ๊ธฐ์ˆ ์€ 0์„ธ๋Œ€ Intel Core ํ”„๋กœ์„ธ์„œ(Skylake)์— ๋“ฑ์žฅํ–ˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ์‡„๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(์—”ํด๋ ˆ์ด๋ธŒ์— ์˜ํ•ด์„œ๋„ ๋‚ด์šฉ์„ ์ฝ๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์—”ํด๋ ˆ์ด๋ธŒ)์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ผ๋ จ์˜ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ringXNUMX, SMM ๋ฐ VMM ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์ปค๋„ ๋ฐ ์ฝ”๋“œ. ์ „ํ†ต์ ์ธ ์ ํ”„ ๊ธฐ๋Šฅ๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ๋ฐ ์Šคํƒ์„ ์‚ฌ์šฉํ•œ ์กฐ์ž‘์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”ํด๋ ˆ์ด๋ธŒ์˜ ์ฝ”๋“œ๋กœ ์ œ์–ด๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŠน๋ณ„ํžˆ ์ƒ์„ฑ๋œ ์ƒˆ ๋ช…๋ น์–ด EENTER, EEXIT ๋ฐ ERESUME์€ ์ธ์ฆ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์—”ํด๋ ˆ์ด๋ธŒ์— ์ œ์–ด๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์—”ํด๋ ˆ์ด๋ธŒ์— ๋ฐฐ์น˜๋œ ์ฝ”๋“œ๋Š” ํด๋ž˜์‹ ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—”ํด๋ ˆ์ด๋ธŒ ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์™ธ๋ถ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํŠน์ˆ˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Enclave ๋ฉ”๋ชจ๋ฆฌ ์•”ํ˜ธํ™”๋Š” DRAM ์—ฐ๊ฒฐ๊ณผ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Enclave์—์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Intel SGX์— ๋Œ€ํ•œ ๊ณต๊ฒฉ

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

Enclave์—์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Intel SGX์— ๋Œ€ํ•œ ๊ณต๊ฒฉ

์ •์ƒ์ ์ธ ์ž‘๋™์„ ์œ„ํ•ด SGX ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํ•˜๋“œ์›จ์–ด ์˜ˆ์™ธ๋กœ ์—”ํด๋ ˆ์ด๋ธŒ ์‹คํ–‰์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด enclave ๋Ÿฐํƒ€์ž„์—์„œ enclave ๋‚ด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋˜๋Š” ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์žฌ์ง„์ž… ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. SmashEx ๊ณต๊ฒฉ์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ธฐ์˜ ์žฌํ˜ธ์ถœ ์ƒํ™ฉ์ด ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” SDK์˜ ๊ฒฐํ•จ์„ ์•…์šฉํ•œ ๊ฒƒ์ด๋‹ค. ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜๋ ค๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ enclave์˜ ์‹คํ–‰์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์˜ ์ž‘๋™์„ ์ œ์–ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์™ธ๋ฅผ ๋˜์ง„ ํ›„ ๊ณต๊ฒฉ์ž๋Š” ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ์กฐ์ž‘์„ ํ†ตํ•ด ์‹คํ–‰ ํ๋ฆ„์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ์‹œ๊ฐ„ ์ฐฝ์„ ์–ป์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์‹œ์Šคํ…œ(enclave ์™ธ๋ถ€ ํ™˜๊ฒฝ)์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ enclave ์ง„์ž… ๋ช…๋ น(EENTER)์„ ์‹คํ–‰ํ•œ ์งํ›„์— ์ƒˆ๋กœ์šด ์˜ˆ์™ธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์Šคํƒ ๊ตฌ์„ฑ์ด ์™„๋ฃŒ๋˜๋Š” ๋‹จ๊ณ„์—์„œ ์‹œ์Šคํ…œ์œผ๋กœ ์ œ์–ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. enclave๊ฐ€ ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ์ˆซ์ž๋Š” CPU ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

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

Enclave์—์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Intel SGX์— ๋Œ€ํ•œ ๊ณต๊ฒฉ
Enclave์—์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Intel SGX์— ๋Œ€ํ•œ ๊ณต๊ฒฉ


์ถœ์ฒ˜ : opennet.ru

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