Search
Intro
์ง๋์ฌ๋ฆ, ํ์์ํ๋ฆฌํฐ ๋ด๋ถ ์ธ๋ฏธ๋์์ ๋ฐ์๋น(moonoik) ์ ์ ์ฐ๊ตฌ์๋์ด ํ๋ ๋จ๊ฑฐ์ด ๊ฐ์์๋ ํ๋ก์ธ์ ์ทจ์ฝ์ ์ ๋ํ ๋์์ผ๋ก ์ ์๋ ๋น์ Intel, AMD ๋ฑ์ microcode ๋ณด์ ์
๋ฐ์ดํธ๋ฅผ ํ๋๋ก, ํ๋์จ์ด ๋ฐฑ๋์ด์ ๋ํ ๋ด์ฉ์ ๋ฐํํ์ต๋๋ค. ๋ฐํ๋ฅผ ๋ค์์ ๋๋ ํฌ๊ฒ ํฅ๋ฏธ๋ฅผ ๋๊ผ์ง๋ง ํ์ฌ ์ผ์ด ํ์ฐฝ ๋ฐ์ ๋๋ผ ์ฐ์ ์์์์ ๋ฐ๋ ธ์๋๋ฐ, ์ฐ์ด์ ๊ฐ์ธ ์ฐ๊ตฌ ์๊ฐ์ด ์ผ๋ถ ์ฃผ์ด์ ธ ์กฐ๊ธ์ ์ฌ์ ๋กญ๊ฒ ๊ด๋ จ ์ฐ๊ตฌ๋ฅผ ์ดํด๋ณด์์ต๋๋ค.
ํ๋์จ์ด ๋ฐฑ๋์ด์๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ก ์ด ์ ์ฉ๋ ์ ์์ต๋๋ค. Intel Management Engine(ME), AMD Platform Security Processor(PSP) ๋ฑ๊ณผ ๊ด๋ จํ ๋ฐฉ๋ฒ๋ก ๋ ์๊ณ , 2018๋
์ค๊ตญ ์คํ์ด๊ฐ ๋ฏธ๊ตญ ๊ธฐ์ ๊ณต๊ธ๋ง์ ์นจํฌํด Supermicro ์ฌ์ ๋ง๋๋ณด๋์ ๋ฌผ๋ฆฌ์ ์ธ ์นฉ์ ์ฌ์ ๊ฒ๋ ํ๋์จ์ด ๋ฐฑ๋์ด์ ์ผ๋ก์
๋๋ค.
์ฌ๋ฌ ๋ณด์ ์ปจํผ๋ฐ์ค์ ๊ฑฐ์ ๋งค๋
๋ฐํ ์ฃผ์ ๋ก ๋ฑ์ฅํ ์ ๋๋ก ์ง์ํด์ ์ฐ๊ตฌ๋๋ ๋ถ์ผ์ด๊ณ , ์ต๊ทผ์๋ chip-red-pill ํ์ ์ํด Intel microcode decryptor๊ฐ ๊ฐ๋ฐ๋์ด ์ด๋ชฉ์ ๋์์ต๋๋ค.
Today we've published Intel Microcode decryptor! It gives you an amazing opportunity for researching x86 platforms. You can understand how Intel mitigated spectre vulnerability, explore the implementation of Intel TXT, SGX,VT-x technologies! Enjoy it!ย https://t.co/CrMYbrPu03ย pic.twitter.com/pW6iQoUGLJ
โ Maxim Goryachy (@h0t_max) July 18, 2022
ํ๊ณ ๋๋ ํฅ๋ฏธ๋ก์ด ๊ฒ์ด ๋ง์์ง๋ง, ๊ทธ๋งํผ ์๋ ๋ฐฉ๋ํ๊ธฐ์ ๋ณธ ๊ธ์์๋ ์ธ์ ๊น์๋ ์ฐ๊ตฌ ์ค ํ๋๋ฅผ ๊ณจ๋ผ ์๊ธฐํด๋ณด๊ณ ์ ํฉ๋๋ค.
project:rosenbridge
project:rosenbridge๋ Christopher Domas(xoreaxeaxeax)๊ฐ Black Hat USA 2018์ ํตํด ๊ณต๊ฐํ ์ฐ๊ตฌ์
๋๋ค. ์ฐ๊ตฌ๊ฐ ์์ฌํ๋ ๋ฐ์ ์ฐ๊ตฌ์ ํ์ฉํ ์ ๊ทผ๋ฒ, ๋ฐฉ๋ฒ๋ก ์ด ์ฌ๋ฐ๊ณ ์ฐธ์ ํ๋ค๊ณ ์๊ฐ๋๋ ์ ์ด ์ฌ๋ฟ ์์ด์(ํนํ๋ฅผ ๋ฆฌ๋ฒ์ฑ ํ๋ค๊ฑฐ๋...) ๊ธ์ ์ฃผ์ ๋ก ์ ์ ํ์์ต๋๋ค. ๊ธ์ ์ฝ๊ธฐ ์ ๊ทธ์ ๋ฐํ๋ฅผ ๊ฐ๋ณ๊ฒ ๋ค์ด๋ณธ๋ค๋ฉด ์ดํด์ ๋์์ด ๋ ๊ฒ์
๋๋ค.
Ring -4?: Hardware Backdoors in CPUs
Context-free grammar
Context-free grammar(CFG)๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฝ๋๋ฅผ parsing ํ๋ ๋ฐ์ ์ ์ฉํ ์ด๋ก ์ ๋๊ตฌ๋ก ์ฐ์
๋๋ค. ์ผ๋ก๋ก, parsing ๋๊ตฌ ์ค ํ๋์ธ Yacc๋ CFG์ฉ parser๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋ค์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ context-free ํ์ง ์์ ๋ฌธ๋ฒ์ ๊ฐ์ง๋๋ค.
C
C๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ธ์ด ์ค ํ๋์ด๋ฉฐ ๊ฑฐ์ context-free ํ ๋ฌธ๋ฒ์ ๊ฐ์ ธ ์ ๋ด์ฉ์ ์ค๋ช
ํ๊ธฐ ์ข์ ์์
๋๋ค.
CFG๋ ํ์ ์ธ์ด ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ด๋ จํ์ฌ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ ์๋ฉ๋๋ค. ๋ณธ ๊ธ์์๋ ๋ช
๋ช
๋ฒ์ ๋ํด ๊น์ด ํ๊ณ ๋ค์ง๋ ์์ต๋๋ค-์ด์ ๊ดํ ๋ด์ฉ์ด ๊ถ๊ธํ๋ค๋ฉด ๊ด๋ จ ํ ๋ก ์ ์ฐธ๊ณ ํ์ธ์. ๋ณธ ๊ธ์์ C์ ๋ฌธ๋ฒ์ด CFG๊ฐ ์๋๋ผ๊ณ ํ๋ ๊ฒ์, Yacc์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ด ๋ค๋ฅธ ๊ณณ์์ ์ค๋ ๋ช๋ช context information์ ์ฐธ์กฐํ์ง ์๊ณ ๋ C๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ parsing ํ๊ธฐ์ ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ช ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์์ํ ์๋ ์์ง๋ง, T๊ฐ type์ด๋ฉด ์๊ธฐ C ์ฝ๋๋ type T์ x์ ๋ํ ์ ํจํ ์ ์ธ์
๋๋ค. ๊ทธ๋ฌ๋ T๊ฐ ์๋ ค์ง type์ด ์๋๋ฉด argument x๋ฅผ ๊ฐ์ง function T์ ๋ํ ํธ์ถ์ด ๋ฉ๋๋ค. C parser๋ T๊ฐ ์ด์ ์ typedef์ ์ํด ์ ์๋์๋์ง ์ฌ๋ถ๋ฅผ ์์ง ๋ชปํ ์ฑ ์ด๋ป๊ฒ parsing ํ ๋ฐฉ๋ฒ์ ์ ์ ์์๊น์?
ํน์๋ "ํ์ง๋ง ๋๊ฐ ์ด๋ฐ ์ฝ๋๋ฅผ ์์ฑํ๋์?"๋ผ๊ณ ํ ์๋ ์์ ๊ฒ๋๋ค. ์ข์์, ๊ทธ๋ ๋ค๋ฉด ์ข ๋ ํ์ค์ ์ธ ์ฝ๋๋ฅผ ๋ณด์ฃ :
The context sensitivity of C and Rust's grammar