Spectre v2 ์์ธ
๊ฐ์
Spectre v2 (CVE-2017-5715, Branch Target Injection)๋ ํ๋ ํ๋ก์ธ์์ ๊ฐ์ ๋ถ๊ธฐ ์์ธก๊ธฐ(Indirect Branch Predictor)์ ๋ถ๊ธฐ ๋์ ๋ฒํผ(BTB, Branch Target Buffer)๋ฅผ ์
์ฉํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ์ฝ๋ gadget์ผ๋ก์ ๋ถ๊ธฐ๋ฅผ ์ ๋ํ๋ transient execution ์ทจ์ฝ์ ์ด๋ค. Spectre v1์ด ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ(conditional branch)์ ์์ธก์ ์กฐ์ํ๋ ๋ฐ๋ฉด, v2๋ jmp *%rax ๊ฐ์ ๊ฐ์ ๋ถ๊ธฐ(indirect branch)์ ๋์ ์ฃผ์๋ฅผ ์ค์ผ์์ผ ์ถ๋ก ์คํ ๊ฒฝ๋ก๋ฅผ ์์ ํ ์ฅ์
ํ๋ค.
2018๋ ๊ณต๊ฐ ์ดํ ๊ฐ์ฅ ํ๊ธ๋ ฅ์ด ํฐ ์ฌ์ด๋ ์ฑ๋ ๊ณต๊ฒฉ์ผ๋ก, retpoline, IBRS, eIBRS, STIBP, IBPB ๋ฑ ๋ค์ธต ๋ฐฉ์ด ์ฒด๊ณ๊ฐ ๊ตฌ์ถ๋์๋ค. ๊ทธ๋ฌ๋ 2022๋ Retbleed(CVE-2022-29900/29901)์ BHI(CVE-2022-0001/0002)๊ฐ retpoline๊ณผ eIBRS ์์ฒด๋ฅผ ์ฐํํ๋ ๋ณํ์ด ๋ฐ๊ฒฌ๋๋ฉด์, ๋ฐฉ์ด๋ ํ๋์จ์ด ๋ง์ดํฌ๋ก์ฝ๋์ ์ํํธ์จ์ด ์ํ์ ์ง์์ ์ธ ๊ณต์งํ๋ฅผ ์๊ตฌํ๊ณ ์๋ค. ์ด ๋ฌธ์๋ Spectre v2์ ๊ณต๊ฒฉ ๋ฉ์ปค๋์ฆ, ๊ด๋ จ ํ๋์จ์ด ๊ตฌ์กฐ, ์ํ ๊ธฐ๋ฒ, ํ์ ๋ณํ, ๊ทธ๋ฆฌ๊ณ 2025๋ ๊ธฐ์ค ์ด์ ํ๊ฒฝ์์์ ๋์ ์ํ๋ฅผ ์์ธํ ๋ถ์ํ๋ค.
ํต์ฌ ๊ฐ๋
๊ฐ์ ๋ถ๊ธฐ ์์ธก (Indirect Branch Prediction)
ํ๋ ํ๋ก์ธ์๋ ๊ฐ์ ๋ถ๊ธฐ ๋ช
๋ น์ด์ ๋์ ์ฃผ์๋ฅผ ์์ธกํ๊ธฐ ์ํด BTB๋ฅผ ์ฌ์ฉํ๋ค. BTB๋ ๊ฐ์ ๋ถ๊ธฐ์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC)๋ฅผ ํค๋ก ์ฌ์ฉํ์ฌ ์ด์ ์ ๊ด์ฐฐ๋ ๋์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ์บ์ ๊ตฌ์กฐ์ด๋ค. ํ๋ก์ธ์๊ฐ jmp *%rax ๋ช
๋ น์ด๋ฅผ ๋ง๋๋ฉด BTB์์ ํด๋น PC์ ๋ํ ์์ธก๋ ๋์ ์ฃผ์๋ฅผ ์กฐํํ๊ณ , ๊ทธ ๊ฒฝ๋ก๋ฅผ ์ถ๋ก ์ ์ผ๋ก ์คํํ๋ค. ๋ฌธ์ ๋ BTB๊ฐ ๋ถ๋ถ ํ๊ทธ ๋งค์นญ(partial tag matching)์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์, ์๋ก ๋ค๋ฅธ ์ฃผ์์ ๋ถ๊ธฐ๊ฐ ๋์ผํ BTB ์ํธ๋ฆฌ๋ฅผ ๊ณต์ ํ ์ ์๋ค๋ ์ ์ด๋ค.
๋ถ๊ธฐ ๋์ ๋ฒํผ (BTB, Branch Target Buffer)
BTB๋ ๊ฐ์ ๋ถ๊ธฐ์ ํจ์ ๋ฐํ(ret) ๋ช
๋ น์ด์ ๋์ ์ฃผ์๋ฅผ ์์ธกํ๋ ํ๋์จ์ด ์บ์์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก 4K~16K ์ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ฐ์ ์ฃผ์์ ํด์๋ฅผ ํค๋ก ์ฌ์ฉํ๋ค. BTB๋ ํ๋ก์ธ์ ๋ง์ดํฌ๋ก์ํคํ
์ฒ๋ง๋ค ํฌ๊ธฐ, ํ๊ทธ ํญ, ํํฐ์
๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค. ์ผ๋ถ ํ๋ก์ธ์๋ privilege level(CPL)๋ณ๋ก BTB๋ฅผ ํํฐ์
๋ํ์ฌ ํฌ๋ก์ค-ํ๋ผ์ด๋น๋ฆฌ์ง ๊ณต๊ฒฉ์ ๋ฐฉ์ดํ์ง๋ง, ๋ชจ๋ ํ๋ก์ธ์๊ฐ ๊ทธ๋ ๊ฒ ํ์ง๋ ์๋๋ค.
๋ฐํ ์คํ ๋ฒํผ (RSB, Return Stack Buffer)
RSB๋ call/ret ๋ช
๋ น์ด ์์ ๋งค์นญํ์ฌ ๋ฐํ ์ฃผ์๋ฅผ ์์ธกํ๋ LIFO ์คํ ๊ตฌ์กฐ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก 16~32 ์ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๋ฉฐ, ํจ์ ํธ์ถ ์ call์ด RSB์ ์ฃผ์๋ฅผ ํธ์ํ๊ณ , ret์ด ํํ ์ฃผ์๋ฅผ ์์ธก ๋์์ผ๋ก ์ฌ์ฉํ๋ค. ๊ณต๊ฒฉ์๋ RSB๋ฅผ ์ค๋ฒํ๋ก์ฐ์์ผ stale ์ํธ๋ฆฌ๋ฅผ ๋จ๊ธฐ๊ฑฐ๋, ์ปจํ
์คํธ ์ ํ ์ RSB๊ฐ ์ด์ ์ปจํ
์คํธ์ ์ํธ๋ฆฌ๋ฅผ ์ ์งํ๋๋ก ํ์ฌ ๋ฐํ ์ฃผ์๋ฅผ ์กฐ์ํ ์ ์๋ค.
๋ถ๊ธฐ ์ด๋ ฅ ๋ฒํผ (BHB, Branch History Buffer)
BHB๋ ์ต๊ทผ ๋ถ๊ธฐ ํจํด์ ์ ์ญ ์ด๋ ฅ์ ์ ์ฅํ์ฌ ๊ฐ์ ๋ถ๊ธฐ ์์ธก๊ธฐ์ ์ ํ์ ์ํฅ์ ์ฃผ๋ ๊ตฌ์กฐ์ด๋ค. eIBRS๊ฐ BTB์ ๊ถํ ๊ฒฝ๊ณ๋ฅผ ๊ฐํํ๋๋ผ๋, ์ผ๋ถ ํ๋ก์ธ์์์๋ BHB ์์ฒด๊ฐ privilege level ์ฌ์ด์์ ์ถฉ๋ถํ ๋ถ๋ฆฌ๋์ง ์์ Branch History Injection(BHI) ๊ณต๊ฒฉ์ ํ๋ฉด์ด ๋๋ค. ๋ฐ๋ผ์ 2022๋
์ดํ์ ์ํ๋ BTB ์ค์ผ ์ฐจ๋จ๋ฟ ์๋๋ผ BHB ์ด๊ธฐํ ๋๋ BHI_DIS_S ๊ฐ์ ์ถ๊ฐ ํ๋์จ์ด ์ ์ด๊น์ง ํจ๊ป ๊ณ ๋ คํ๋ค.
BTB ๋ณ์นญ (BTB Aliasing)
BTB ๋ณ์นญ์ ์๋ก ๋ค๋ฅธ ์ฃผ์์ ๊ฐ์ ๋ถ๊ธฐ๊ฐ ๋์ผํ BTB ์ํธ๋ฆฌ๋ฅผ ๋งค์นญํ๋ ํ์์ด๋ค. BTB๋ ๊ฐ์ ์ฃผ์์ ์ผ๋ถ ๋นํธ๋ง ํ๊ทธ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก, ์ฃผ์ ๊ณต๊ฐ์์ ์ถฉ๋ถํ ๋จ์ด์ง ๋ ๋ถ๊ธฐ๊ฐ ๋์ผํ BTB ์ฌ๋กฏ์ ์ฌ์ฉํ ์ ์๋ค. Intel Skylake ๊ธฐ์ค์ผ๋ก BTB ํ๊ทธ๊ฐ 8~16 ๋นํธ๋ง ์ฌ์ฉ๋๋ฉด 2^8~2^16 ๋ฐ์ดํธ ๊ฐ๊ฒฉ์ ๋ถ๊ธฐ๊ฐ ๋ณ์นญํ ์ ์๋ค. ๊ณต๊ฒฉ์๋ ์ด ๋ณ์นญ์ ์ด์ฉํ์ฌ ์์ ์ ๊ฐ์ ๋ถ๊ธฐ๋ฅผ ํผํด์์ ๊ฐ์ ๋ถ๊ธฐ์ ๋์ผํ BTB ์ํธ๋ฆฌ๋ก ๋งค์นญํ ์ ์๋ค.
๋น๊ต/๋ถ์
Spectre v2 ๋ฐฉ์ด ๊ธฐ๋ฒ ๋น๊ตํ
| ๋ฐฉ์ด ๊ธฐ๋ฒ | ์ ํ | ์ฐ๋ | CPU ์ง์ | ์ฑ๋ฅ ์ค๋ฒํค๋ | ๋ณด์ ์์ค |
|---|---|---|---|---|---|
| Retpoline | ์ํํธ์จ์ด | 2018 | ๋๋ถ๋ถ์ CPU | 1~5% | ์ํธ (์ฐํ ๊ฐ๋ฅ) |
| IBRS | ๋ง์ดํฌ๋ก์ฝ๋ | 2018 | Intel, AMD | 2~7% | ์ํธ |
| STIBP | ๋ง์ดํฌ๋ก์ฝ๋ | 2018 | Intel, AMD | 1~3% | ์ํธ (SMT ์ ์ฉ) |
| IBPB | ๋ง์ดํฌ๋ก์ฝ๋ | 2018 | Intel, AMD | 1~2% | ์ํธ |
| eIBRS | ํ๋์จ์ด+๋ง์ดํฌ๋ก์ฝ๋ | 2019 | Intel CFL+, AMD Zen2+ | 1~3% | ์ฐ์ |
| BHI ์ํ | ๋ง์ดํฌ๋ก์ฝ๋+์ํํธ์จ์ด | 2022 | ์ฃผ๋ก Intel ์๋ฒ ๊ณ์ด | <1% | ์ํธ |
| RSB stuffing | ์ํํธ์จ์ด | 2019 | ๋ชจ๋ CPU | <1% | ์ํธ |
| Retbleed ํจ์น | ๋ง์ดํฌ๋ก์ฝ๋+์ํํธ์จ์ด | 2022 | Intel/AMD | 1~3% | ์ฐ์ |
Spectre v2 vs ๊ด๋ จ ๋ณํ ๋น๊ตํ
| ๋ณํ | CVE | ๋ฉ์ปค๋์ฆ | ๋์ ๊ตฌ์กฐ | ์ํฅ |
|---|---|---|---|---|
| Spectre v2 | CVE-2017-5715 | ๊ฐ์ ๋ถ๊ธฐ ์์ธก๊ธฐ ์ค์ผ | BTB | ์์ gadget์ผ๋ก ๋ถ๊ธฐ ์ ๋ |
| SpectreRSB | CVE-2017-5715 (v5) | ๋ฐํ ์คํ ๋ฒํผ ์กฐ์ | RSB | ํจ์ ๋ฐํ ์ฃผ์ ์กฐ์ |
| Spectre-BHB | CVE-2022-23960 | ๋ถ๊ธฐ ์ด๋ ฅ ๋ฒํผ ์ค์ผ | BHB | eIBRS ํ๊ฒฝ์์๋ ์์ธก ์กฐ์ |
| Retbleed | CVE-2022-29900/29901 | retpoline ์ฐํ | RSB/UNRET | ์ปค๋ ์ํฌ๋ฆฟ ์ถ์ถ |
| SRSO | CVE-2023-20569 | RSB ์ธ๋ํ๋ก์ฐ | RSB | AMD ์ ์ฉ ๋ฐํ ์ฃผ์ ์กฐ์ |
| BHI | CVE-2022-0001/0002 | ๋ถ๊ธฐ ์ด๋ ฅ ์ฃผ์ | BHB | eIBRS ๋ณดํธ ์ฐํ |
๋์ ์๋ฆฌ
Spectre v2 ๊ณต๊ฒฉ ํ๋ฆ
Spectre v2 ๊ณต๊ฒฉ์ ๋ค์ ๋จ๊ณ๋ก ์งํ๋๋ค:
-
ํ์ต ๋จ๊ณ (Training Phase): ๊ณต๊ฒฉ์๋ ์์ ์ ํ๋ก์ธ์ค์์ ๊ฐ์ ๋ถ๊ธฐ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ณต ์คํํ์ฌ BTB์ ์ํ๋ ๋์ ์ฃผ์๋ฅผ ํ์ต์ํจ๋ค. ์๋ฅผ ๋ค์ด
jmp *%rax๋ฅผ ์คํํ๋ฉด์%rax์ gadget ์ฃผ์๋ฅผ ๋ก๋ํ๋ค. -
๋ณ์นญ ์์ฑ (Aliasing): ๊ณต๊ฒฉ์์ ๊ฐ์ ๋ถ๊ธฐ PC๊ฐ ํผํด์์ ๊ฐ์ ๋ถ๊ธฐ PC์ BTB์์ ๋์ผํ ์ํธ๋ฆฌ๋ฅผ ๋งค์นญํ๋๋ก ์ค๊ณ๋๋ค. ๋ถ๋ถ ํ๊ทธ ๋งค์นญ์ ์ด์ฉํ์ฌ ์ฃผ์ ๊ณต๊ฐ์ด ๋ค๋ฅธ ๋ ๋ถ๊ธฐ๊ฐ ๋์ผ BTB ์ฌ๋กฏ์ ์ฌ์ฉํ๋๋ก ํ๋ค.
-
ํผํด์ ์คํ (Victim Execution): ํผํด์๊ฐ ๋ณ์นญ๋ ๊ฐ์ ๋ถ๊ธฐ๋ฅผ ์คํํ๋ฉด, CPU๋ BTB์์ ๊ณต๊ฒฉ์๊ฐ ํ์ต์ํจ gadget ์ฃผ์๋ฅผ ์์ธกํ๊ณ ํด๋น ๊ฒฝ๋ก๋ฅผ ์ถ๋ก ์ ์ผ๋ก ์คํํ๋ค.
-
๊ฐ์ ฏ ์คํ (Gadget Execution): ์ถ๋ก ๊ฒฝ๋ก์ ์๋ ์ฝ๋ gadget์ด ์คํ๋๋ฉฐ, ์ด gadget์ ์ํฌ๋ฆฟ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ฌ ์บ์ ์ํ์ ์ธ์ฝ๋ฉํ๋ค.
-
๋ฐ์ดํฐ ์ถ์ถ (Data Extraction): ๊ณต๊ฒฉ์๋ Flush+Reload ๋๋ Prime+Probe ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์บ์ ํ์ด๋ฐ์ ์ธก์ ํ๊ณ , ์ธ์ฝ๋ฉ๋ ์ํฌ๋ฆฟ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ๋ค.
RSB ๊ณต๊ฒฉ ํ๋ฆ
RSB ๊ณต๊ฒฉ์ ๊ฐ์ ๋ถ๊ธฐ ์์ธก๊ธฐ ๋์ ๋ฐํ ์คํ ๋ฒํผ๋ฅผ ๋ชฉํ๋ก ํ๋ค:
-
RSB ์ค๋ฒํ๋ก์ฐ: ๊ณต๊ฒฉ์๋ ๊น์ด ์ค์ฒฉ๋
call/ret์ํ์ค๋ฅผ ์คํํ์ฌ RSB๋ฅผ ์ค๋ฒํ๋ก์ฐ์ํจ๋ค. RSB์ ๊น์ด๋ ์ผ๋ฐ์ ์ผ๋ก 16~32 ์ํธ๋ฆฌ์ด๋ฏ๋ก, ์ด๋ฅผ ์ด๊ณผํ๋ ๊น์ด์ call ์ฒด์ธ์ ์คํํ๋ฉด RSB์ stale ์ํธ๋ฆฌ๊ฐ ๋จ๋๋ค. -
์ปจํ ์คํธ ์ ํ: ์ปจํ ์คํธ ์ ํ ์ RSB๊ฐ ์ด๊ธฐํ๋์ง ์์ผ๋ฉด, ์ด์ ์ปจํ ์คํธ์ stale ์ํธ๋ฆฌ๊ฐ ๋จ์ ๋ฐํ ์ฃผ์ ์์ธก์ ์ฌ์ฉ๋๋ค.
-
๋ฐํ ์ฃผ์ ์กฐ์: ํผํด์๊ฐ
ret๋ช ๋ น์ด๋ฅผ ์คํํ ๋, ์ค์ผ๋ RSB์์ ์๋ชป๋ ๋ฐํ ์ฃผ์๊ฐ ์์ธก๋์ด ์ถ๋ก ์คํ์ด ๊ณต๊ฒฉ์๊ฐ ์ํ๋ gadget์ผ๋ก ์ ๋๋๋ค.
ํ๋์จ์ด ๋ณดํธ ๋ฉ์ปค๋์ฆ
IBRS (Indirect Branch Restricted Speculation)
IBRS๋ MSR ๋นํธ๋ฅผ ํตํด ๊ฐ์ ๋ถ๊ธฐ ์ถ๋ก ์ ์ ํํ๋ ๋ฉ์ปค๋์ฆ์ด๋ค. SPEC_CTRL.IBRS=1๋ก ์ค์ ํ๋ฉด:
- ํ์ ๊ถํ ์์ค์ BTB ์ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๊ฐ์ ๋ถ๊ธฐ ์์ธก์ด ์ฐจ๋จ๋จ
- ํฌ๋ก์ค-ํ๋ผ์ด๋น๋ฆฌ์ง BTB ์ค์ผ์ด ๋ฐฉ์ง๋จ
- IBRS ์ค์ ํ BTB ์ํ๋ ๊ฐ์ ๋ถ๊ธฐ์ ์ฌ์ค์ ๋ด์ธ๋จ
๋จ์ ์ IBRS๋ฅผ ๋งค ์ปค๋ ์ง์ /๋ณต๊ท ์ ์ค์ ํด์ผ ํ๋ฏ๋ก ์ง๋ ฌํ(serialization) ์ค๋ฒํค๋๊ฐ 2~7%์ ๋ฌํ๋ค๋ ์ ์ด๋ค.
eIBRS (Enhanced IBRS)
eIBRS๋ IBRS์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ๋์จ์ด ๊ฐํ ์ํ ๊ธฐ๋ฒ์ด๋ค. SPEC_CTRL.IBRS=1์ ํ ๋ฒ๋ง ์ค์ ํ๋ฉด ํ๋ก์ธ์๊ฐ ์๋์ผ๋ก ํ์ฌ ๊ถํ ์์ค์ ๊ธฐ๋ฐํ ๊ฐ์ ๋ถ๊ธฐ ์์ธก์ ์ ํํ๋ค. ๋งค ์ง์
/๋ณต๊ท ์ IBRS๋ฅผ ํ ๊ธํ ํ์๊ฐ ์์ด ์ค๋ฒํค๋๊ฐ 1~3%๋ก ๊ฐ์ํ๋ค. Intel Coffee Lake ์ด์๊ณผ AMD Zen 2 ์ด์์์ ์ง์๋๋ค.
STIBP (Single Thread Indirect Branch Predictors)
STIBP๋ SMT(Simultaneous Multi-Threading) ํ๊ฒฝ์์ ๋ฌผ๋ฆฌ์ ์ฝ์ด์ ๋๊ธฐ ์ค๋ ๋ ๊ฐ ๊ฐ์ ๋ถ๊ธฐ ์์ธก ์ํ ๊ณต์ ๋ฅผ ์ฐจ๋จํ๋ค. STIBP๊ฐ ๋นํ์ฑํ๋ ๊ฒฝ์ฐ, SMT ์ค๋ ๋ A๊ฐ ์ค๋ ๋ B์ BTB๋ฅผ ์ค์ผ์ํฌ ์ ์๋ค. ํ์ฑํ ์ ์ค๋ฒํค๋๋ 1~3%์ด๋ค.
IBPB (Indirect Branch Predictor Barrier)
IBPB๋ ์ ์ฒด ๊ฐ์ ๋ถ๊ธฐ ์์ธก ์ํ๋ฅผ ํ๋ฌ์ํ๋ ๋ช ๋ น์ด์ด๋ค. ์ปจํ ์คํธ ์ ํ ์ IBPB๋ฅผ ์คํํ๋ฉด ์ด์ ํ๋ก์ธ์ค์ BTB ์ํธ๋ฆฌ๊ฐ ์ ๊ฑฐ๋์ด ํฌ๋ก์ค-ํ๋ก์ธ์ค BTB ์ค์ผ์ด ๋ฐฉ์ง๋๋ค. ์ปจํ ์คํธ ์ ํ ๋น๋๊ฐ ๋์ ์ํฌ๋ก๋์์ 1~2% ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
RSB Stuffing
RSB stuffing์ RSB๋ฅผ ์๋ ค์ง ์์ ํ ๋ฐํ ์ฃผ์๋ก ์ฑ์ RSB ๊ณต๊ฒฉ์ ๋ฐฉ์ดํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ปค๋ ์ง์
์ call ๋ช
๋ น์ด๋ฅผ RSB ๊น์ด๋งํผ ๋ฐ๋ณต ์คํํ์ฌ ๋ชจ๋ RSB ์ฌ๋กฏ์ ๋๋ฏธ ์ฃผ์๋ก ์ฑ์ด๋ค. ์ปจํ
์คํธ ์ ํ ์์๋ RSB stuffing์ด ์ํ๋๋ค.
BHI ์ํ
BHI ์ํ๋ eIBRS๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ BHB ์ค์ผ ๊ฒฝ๋ก๋ฅผ ๋ง๊ธฐ ์ํ ์ถ๊ฐ ๊ณ์ธต์ด๋ค. ์ต์ Intel ์๋ฒ ๊ณ์ด์ BHI_DIS_S ๊ฐ์ ๋ง์ดํฌ๋ก์ฝ๋ ์ ์ด ๋นํธ๋ก ๋ถ๊ธฐ ์ด๋ ฅ ์ฃผ์
์ ์ฐจ๋จํ๊ณ , ์ปค๋์ ํ๋์จ์ด ์ง์์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ์ํํธ์จ์ด BHB clear sequence๋ฅผ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ์ด์ ํ๊ฒฝ์์๋ spectre_v2 ์ํ๋ฟ ์๋๋ผ BHI: ํญ๋ชฉ๋ ํจ๊ป ํ์ธํด์ผ ์ค์ ๋ณดํธ ์์ค์ ํ๋จํ ์ ์๋ค.
์ฅ๋จ์
๋ฐฉ์ด ๊ธฐ๋ฒ์ ์ฅ๋จ์
์ฅ์ :
- ๋ค์ธต ๋ฐฉ์ด ์ฒด๊ณ(HW + SW + ๋ง์ดํฌ๋ก์ฝ๋)๋ก ๊น์ด ์๋ ๋ณดํธ ๊ฐ๋ฅ
- eIBRS ๋์
์ผ๋ก ์ฑ๋ฅ ์ค๋ฒํค๋๊ฐ ํฌ๊ฒ ๊ฐ์ (2~7% โ 1~3%)
- ์ปค๋์์ /sys/devices/system/cpu/vulnerabilities/spectre_v2๋ก ์ํ ์ํ๋ฅผ ์ค์๊ฐ ํ์ธ ๊ฐ๋ฅ
- ์ต์ CPU์์๋ ํ๋์จ์ด์ ์ผ๋ก ๋๋ถ๋ถ์ ๊ณต๊ฒฉ ๋ฒกํฐ๊ฐ ์ฐจ๋จ๋จ
๋จ์ :
- ์์ ํ ๋ฐฉ์ด๊ฐ ๋ถ๊ฐ๋ฅ โ ์๋ก์ด ๋ณํ(BHI, Retbleed, SRSO)์ด ์ง์์ ์ผ๋ก ๋ฐ๊ฒฌ
- ๋ ๊ฑฐ์ ํ๋์จ์ด์์๋ ์ฌ์ ํ ๋์ ์ฑ๋ฅ ์ค๋ฒํค๋ (IBRS ๋งค ํ ๊ธ)
- ๊ฐ์ํ ํ๊ฒฝ์์ VM ๊ฐ BTB ๊ณต์ ๋ฌธ์ ๋ก ์ถ๊ฐ ์ํ ํ์
- ์ํํธ์จ์ด ์ํ ์กฐํฉ์ ๋ณต์ก์ฑ์ผ๋ก ์ด์ ๊ด๋ฆฌ ๋ถ๋ด ์ฆ๊ฐ
์ฃผ์ ์ฑ๋ฅ ์ํฅ ๋ฒค์น๋งํฌ
| ์ํฌ๋ก๋ | ์ ์ฒด ์ํ ์ ์ฉ ์ ์ค๋ฒํค๋ | ๋น๊ณ |
|---|---|---|
| redis-benchmark | 3~5% | ๊ฐ์ ๋ถ๊ธฐ ๋น๋ ์ค๊ฐ |
| netperf (๋คํธ์ํฌ) | 2~4% | ์ปจํ ์คํธ ์ ํ ๋น๋ ์ค๊ฐ |
| Apache httpd | 5~8% | ๊ฐ์ ๋์คํจ์น ์ฌ์ฉ |
| PostgreSQL | 4~7% | ํจ์ ํฌ์ธํฐ ์ฌ์ฉ |
| ์ปค๋ ์ปดํ์ผ | 1~3% | CPU ๋ฐ์ด๋, ๊ฐ์ ๋ถ๊ธฐ ์ ์ |
๊ด๋ จ ๊ธฐ์
์ฐธ๊ณ ๋ฌธํ
- Kocher, P. et al. "Spectre Attacks: Exploiting Speculative Execution." IEEE S&P, 2019.
- Canella, C. et al. "A Systematic Evaluation of Transient Execution Attacks and Defenses." arXiv, 2019.
- Schwarz, M. et al. "Spectre Goes Mainstream: A Survey on Spectre and Related Transient Execution Attacks." IEEE TDSC, 2023.
- Werner, M. et al. "Retbleed: Exploiting Speculative Execution in Retpoline-Equipped Software." USENIX Security, 2023.
- Bazhaniuk, V. et al. "Speculative Return Stack Overflow on AMD." 2023.
- Intel Corporation. "Indirect Branch Restricted Speculation (IBRS)." Intel White Paper, 2018.
- Google Project Zero. "Retpoline: Binary Instrumentation for Branch Target Injection." 2018.
- Intel Corporation. "Analysis of Potential Mitigations for Spectre and Meltdown." Intel White Paper, 2019.
- AMD Corporation. "Software Techniques for Managing Speculation on AMD Processors." AMD White Paper, 2023.
- Canella, C. et al. "Benchmarking and Power Measurement of Microarchitectural mitigations." arXiv, 2019.
๊ด๋ จ ๋ฌธ์
- Spectre/Meltdown ์์ธ
- ์ฌ์ด๋ ์ฑ๋ ๊ณต๊ฒฉ
- Rowhammer ๋ฐฉ์ด ๊ธฐ์
- CPU ๋ง์ดํฌ๋ก์ํคํ ์ฒ ๊ธฐ์ด
- ๋ถ๊ธฐ ์์ธก
- Out-of-Order ์คํ
- CPU ์บ์ ์ํคํ ์ฒ
- ๋ฉ๋ชจ๋ฆฌ ์ผ๊ด์ฑ ๋ชจ๋ธ
์ด์ ํ๊ฒฝ ์ํ ์ํ ํ์ธ
# ํ์ฌ ์์คํ
์ Spectre v2 ์ํ ์ํ ํ์ธ
cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
# ์์ ์ถ๋ ฅ (Intel eIBRS + BHI_DIS_S ํ๊ฒฝ):
# Mitigation: Enhanced IBRS + Retpolines, IBPB: conditional, STIBP: conditional, IBRS_FW, BHI: BHI_DIS_S
# ์์ ์ถ๋ ฅ (AMD Zen 3+):
# Mitigation: Enhanced / Automatic IBRS, IBPB: conditional, STIBP: conditional
# ์์ ์ถ๋ ฅ (๊ตฌํ Intel Skylake):
# Mitigation: Retpolines, IBPB: conditional, STIBP: conditional, IBRS_FW
์ปค๋ ๋ถํ ํ๋ผ๋ฏธํฐ
| ํ๋ผ๋ฏธํฐ | ์ต์ | ์ค๋ช |
|---|---|---|
nospectre_v2 |
์์ | Spectre v2 ์ํ๋ฅผ ๋นํ์ฑํ |
spectre_v2= |
on, off, auto |
์ปค๋์ v2 ์ํ ์ ํ |
spectre_v2_user= |
on, off, prctl, prctl,ibpb, seccomp, seccomp,ibpb |
์ฌ์ฉ์ ๊ณต๊ฐ ๊ฐ์ ๋ถ๊ธฐ ์ํ ์ ์ฑ |
spectre_bhi= |
on, off, auto |
BHI ์ถ๊ฐ ์ํ ์ ํ |
mitigations= |
auto, off, auto,nosmt |
์ ์ฒด ์ํ ์กฐํฉ ์ ์ด |
ํต์ฌ ์ ๋ฆฌ
Spectre v2๋ ํ๋ ํ๋ก์ธ์์ ๊ฐ์ ๋ถ๊ธฐ ์์ธก๊ธฐ๋ฅผ ์ ์ฉํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ์ฝ๋ gadget์ผ๋ก ๋ถ๊ธฐ๋ฅผ ์ ๋ํ๋ ์ทจ์ฝ์ ์ผ๋ก, BTB ๋ณ์นญ๊ณผ ๋ถ๋ถ ํ๊ทธ ๋งค์นญ์ ํตํด ํฌ๋ก์ค-ํ๋ก์ธ์ค/ํฌ๋ก์ค-VM ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ๋ค. ๋ฐฉ์ด๋ retpoline(์ํํธ์จ์ด), IBRS/eIBRS(ํ๋์จ์ด ๊ฐํ), STIBP(SMT ๊ฒฉ๋ฆฌ), IBPB(์์ธก๊ธฐ ํ๋ฌ์), RSB stuffing(๋ฐํ ์ฃผ์ ๋ณดํธ)์ ๋ค์ธต ์ฒด๊ณ๋ก ๊ตฌ์ถ๋์ด ์์ผ๋ฉฐ, ์ต์ CPU์์๋ eIBRS ๋๋ถ์ ์ฑ๋ฅ ์ค๋ฒํค๋๊ฐ 1~3%๋ก ๊ฐ์ํ๋ค. ๊ทธ๋ฌ๋ Retbleed, BHI, SRSO ๊ฐ์ ํ์ ๊ณต๊ฒฉ์ด ์ง์์ ์ผ๋ก ๋ฐ๊ฒฌ๋๊ณ ์์ด, ๋จ์ผ ์ํ ๊ธฐ๋ฒ์ ์์กดํ์ง ์๊ณ ํ๋์จ์ด ๋ง์ดํฌ๋ก์ฝ๋, ์ปค๋ ์ํ, ์ด์ ๊ด๋ฆฌ๊ฐ ํจ๊ป ์๋ํ๋ ๋ฐฉ์ด ์ ๋ต์ด ํ์ํ๋ค.