ααΌα αααα’αααααΆαααΉαα αΎαααΆ ααΌααααααΆαααααα·ααααα·αα αααα»α enclave ααααΌαααΆαααααααααΆαααααααααααα αααα»ααα»αααΆαααααααΆα ααΆαα·αα’αΆα ααααΎααΆαα α ααΆααααααααααΆαααα ααΆαα·αα’αΆα α’αα»ααααααααα·ααααα·ααΆα I/O ααΆαααα ααΆαα·αααααΆααα’αΆααααααΆαααΌαααααΆααααααααααΌααααααααααα·ααΈαααΆαααΈαααα ααΆαα·αα’αΆα jmp α¬α α ααΌααααααα·ααΈαααΆαααΈαααΆαααα ααΆαα·αααΆααααα·αα’αααΈαα ααΆααααααααααα α’αΆααααααΆααααααααααααααααααα·ααΈαααΆαααΈααα (α§ααΆα ααα αααααααΆαααααααΌαααΆαααΌααααααΈ α¬αααααααα·ααααααααΆαααααΆαααΈααΆαααα ααΎαααααααΆααααα)α ααΆαα·αα’αΆα αα»αα±ααααααααααααααα·ααααα·ααΆαααααΌαααααααααααα’αααα αα αΆααααααααααα·ααΈαααΆαααΈααα ααΆααΆααα (α§ααΆα αααααΆαααα /proc/pid/maps) α ααΆααααααααα ααααΆααΆαα’αΆααααααα’αααα αα αΆαααΆαα’αααΎα α·ααααααααααα·ααΈαααΆαααΈα ααααα·ααα·ααΆαα’αααΈααΆαααααΆααΆαααααα ααΆααΉαααΆααα¬ααααααα (ααΆαα αααΎαααααααΆα’ααΈα) ααΆααα αααααΆααααα αααααααααααααααααα·ααΈ enclave α ααΆααΎαα‘αΎααα αααααΆααααααααααα α’αΆααααααΆααα·αααα·ααααααΆαααααΎαα»αααα enclave αα·αα’αΆα α αΌαααααΎαααααα·ααΈαααΆαααΈαααΆαααα
αααααΆαααΆααα·αααα’αΆααααααααααα ααΎα’ααααα·αααααααααααΉαα’αΆα ααααΎ SGX enclaves ααΎααααΈαααααα ααΆαααΌαααααα ααααΆααΆαααααααΆαααααα¬αα?
αααααα’ααααΎα’αααΈααΆααα’ααααΆαααΎ ααΆααααΌαααΆαααα½αααααΆααΌαα ααΆ ααα·ααααΆαααΊααααΆααααα’αΆα αααααΎαααααα·ααΈαααΆαααΈαααα»ααααα α αΎαααα·ααααΆααα·αα’αΆα α’αα»αααααααα·ααααα½α ααααΎααααααααα½αααΆααα αα½αααΆαααααααα·ααΈααααΆααΆααααααα αααααΆααααααΆ enclaves αα·αααΆααααααααΆαααααααα ααααα’αααααααααααααααα ααΆααααααααααΆααα αααααααΊααΆα ααα»αααα½ααααα ααα»α’αααΈααΆαααΆααΆαααΆαααΆα SGX ααΆαααΆααα·ααααΈαααααΆααααααΆα ααΌααααααα·ααΈαααΆαααΈααα·αα’αΆα α αΌαααααΎα’αααα αα αΆα enclave ααααααααααααααΌα enclave α’αΆα α’αΆα αα·αααααααα ααΆααα’αΆααααααΆαα’αααα αα αΆααααααα·ααΈαααΆαααΈαααΆαα½αα
ααΌα αααα ααααα·αααΎααΌα enclave ααααΆααΆαα’αΆα ααααΎααΆαα α ααΆαααααααααααααΆααααα»αααΆααααααα·ααΈαααΆαααΈα ααααα·ααααα·ααΌαααααΆααααα½αααΆ αααααα’αααα αα αΆααααααααααα·ααΈαααΆαααΈα αα·αααααααααααααααααΆαα ROP αααα’αΆα ααααΆαααΆααα αααα»αααΆ ααΆα’αΆα α αΆααααααΆαααααααααααααααααααααααα·ααΈαααΆαααΈααα αααα»α ααααααααΆααααΆαα ααΆαα·αααααΉαααα’αΆα αα½α αα·αα’αα·αααααΈαα―αααΆαα’αααααααΎααααΆααααα»ααααααα αααααΆααααααΎαααααααΆααααα½αα’αααααααΎααααΆαααααααα α§ααΆα ααα ααααΎα’ααΈαααααααααααα½αααΆαα α¬ααααΎααΆαααΆααααα αΆα DoSα αααααααΆαααΆααααααααΆα ααΌααααΈααααααααΆαααΆαααΆαααααΎααααα»α ααΌα ααΆααα Canaries αα·αα’ααΆαααα’αΆααααααΆαα
ααΎαααΉααααα αΆαα’αααααΌαααΆααα½α α αΌααα½αα ααα½ααααα’αααααΆααααα αΆαααααΎααΎααααΈααααααααΎαααααααααααααΆααα·αααααΆααΆαααΎ ααΎααααΈααΆαααα’αααααααααααααΈ SGX αααααΆαααααααααααααΆααΆαααααΆαααααα½ααααααα½αααα ααΆαααΆααααα αΆα ROP α ααΆααααΎααααΈααααα·ααααα·ααΌαααααΆαααααααααααααΎααΆααααΎαααΆααααααα·ααΈαααΆαααΈα (αααααααα ααΉαααααΎαααΆααααα αα αααααΆααΏααααααΌαααΆαααααΎααααΆαααααααααα) α¬ααΎααααΈααααααααααααααααααααααααα½α ααΆααααα (ααΎααααΈαααααΆαα»ααααααααααααΆααΈααΆααααααααααααα αΆααααααα αα·αααααααΆαααΆαααΆααααααααα)α
ααΆα Hack αααααΆααβααΆαβαααΎαα’αααααβα’αΆααααααΆαβααΎααααΈβααΎαβααΆβααΎβαα½αβααβα’αΆα βααααΌαβααΆαβα’αΆαβ
αααααΆα enclave αα·αααΉαααΆα αααααα’αΆααααααΆααα·αααα·ααα½αααΆαααα’αΆα α αΌαααααΎααΆααααα»ααααααα·ααΈαααΆαααΈα α αΎαα αΆααααΆααααΈ enclave ααααΌαααΆααααααα±αααααα αααα αααααααΆααΆαα’αΆαα’αΆααααααΆαααααα·αα’αΆα α αΌαααααΎαααΆαααΆα α’αααααΆααααα αΆαααααΌαααααααα»αααΉαααΆααα·α αα αααα»αααΆααααααααααααΌααα»αα αααααα αααααα’αΆααααααΆααααα’αααααααα ααααααααα·ααΈααΎααααΈαααααΈα’αΆααααααΆααα·αααα·ααααααΆαα ααα»αααα’αΆααααααααααααΆααααα αΆααααααααααΎααααΆαααα αα αααα·ααααΆ TSX αααα Intel αα»αα ααααΎααααααΆααα½ααααα TSXα ααααα·αααΎαα»αααΆαα αΌαααααΎα’αααα αα αΆαααααΌαααΆαααΆαααααα»αααααα·ααααα·ααΆα TSX αααααααΈααΎαααααααααΎαα‘αΎαααΈααΆαα αΌαααααΎα’αΆααααααΆααα·αααααΉαααααΌαααααΌαααΆαααΆααΆααααα TSX ααααα·αααΆααα αααααααααααααααα·ααααα·ααΆαα ααααα·αααΎααΆαααα»ααααααααΌαααΆαααααΎα‘αΎαααΎααααΈα αΌαααααΎα’αΆααααααΆαα’αααα αα αΆααα·αααααΉαααααΌα ααΆαααααααα·ααααα·ααΆααα αα α»ααααααααα»ααααααααααααΌαααΆααα»αα αα αα·ααααααΆαααααα·ααΈαα½αααΆααααΌααααααα αααα TSX α’αα»ααααΆαα±αααααα»αα αα»ααααααα αΌαααααΎα’αΆααααααΆαααΆαα½αααααα»ααααα·ααΆαααΈαααα»αααααα·ααααα·ααΆα - αααααααΆαα αΆαα·αααααααΆααα½ααααα
ααααα·αααΎααΆα α’αΆααααααΆααααααΆααααααΆααααΊα’αΆα ααααΆα αααααα·ααΈαααΆαααΈα ααααα·ααααα·ααΆα TSX ααΆαα αααΎαααα½αααΆαααααααα αααα»αααααΈαααα ααΆα’αΆα ααΉααααΆααααααααΆαααα₯αααα·ααααΆααααα ααΌα ααΆααΆαααααΆα (ααΌα ααΆααΆαααααΆααααααα·ααΈαααααααα) ααΆαααααααα ααααΈααααΆαααααααΆαα α¬ααΆαααααααααΈααΆααα’αααα αα αΆααααα»ααααααααΆαααααΆαααααααΎαααΆαααΆα αααΎαα αααα»αααααΈααααααααα TSX αααα‘αααααααΌαααα α»αααααααα αΆαααΆααΆααααΆαααααΊααααααα’αΆααααα αα αααα»αααααΈααΆααααα α’αααααααΆααααααααΌαα αΆααααααΎαααααα·ααααα·ααΆαα‘αΎααα·αα
ααααα·αααΎααΆα α’αΆααααααΆααααααΆααααααΆααααΊαα·αααΆαααα αααααα·ααΈαααΆαααΈα TSX αααααααΆααααααΈααΎαααααααααΆαααΎαα‘αΎα (ααααααααααααα·ααααα·ααΆααα·αααααΌαααΆαααΌαααααΉα) αα·αααααααααααα·ααααα·ααΆαα αααααΌαααα α»ααα½αααααΌαααΆααααααααα αααααΌα enclave ααΌα ααααααΆα’αΆα ααααα·αααααα ααΉαααΆααα·ααααααΆααααα·ααααα·ααΆαααααΌαααΆααα»αα ααα αααααΌαααα α»αααΆααααααααα αΆαααΆα’αΆααααααΆααα αααα»ααααα½ααα·αααΆααααααΆαααααααα·ααΈαααΆαααΈαααα
α§ααΆααααα TSX αααααΈααΆααααα»αααα·ααααΆαααΆααα»αααΆαααα’αααααΆααααα»αααα’αΆαααααα αααααΆαα§αααααααΆααααααΎαααΆααααααααΉαααΆαα αααΎααα·αααααΌαααΆαα’αΆααααααα ααααααααΌα enclave ααααΌαααΆαααααα·ααααα· ααΆαα·αα’αΆα αα αα½α αααααα»αααΆαααΆαααΆαααααα·ααααα·ααΆα TSX αααααΆαααααα·ααααα·αα ααΆααααα»αα ααΌα αααα α§ααΆαααααααΆααΆα TSX αα ααααΎααα·αααΎαααΆαααααα»αα ααααααααααααααααα·ααααα·ααΆαα
ααΎαααΈαααααα α αΆααααΆααααΈααΆα hack ααΆαααΎαα·αααΉαααα’ααααΎααΆαα α ααΌααααααααΆαα½ααααααααααααα ααΆαα·αα’αΆα ααααΌαααΆαααααΎα α¬ααΆααΆαααααααααΆααααααΆααΆααααΆαα α ααΆαααααααααα αααααΆααααααΆααααααααααααα·αααααΆααααα»αααΆαααααα»ααααααααΆααααΉαααΆαααααΆααααα»αα
ααα»αααα’αΆαααααααααΎααΆα hack αααααΆααα·αααααΆααΆαααΎααΎααααΈαααααααααΌααααααα·ααΈαααΆαααΈααααααΆααα§αααααααααααααααααααΆαααααααΎααααααααααΆαα ROP α αααα»ααααααΆαα½αααααΆααα ααΆαααα·αα αΆαααΆα ααααΎαα’ααααααααααα’αΆααααααΆαααα ααΆαααααααααΆαααααα»αααΆααααΎαα’αααααα’αΆααααααΆααα½αααΈαααααααΈαα½ααααααα αα’αΆααααααΆααα·αααα·αα ααΆααα·αα·αααααΎαα’αααα αα αΆαααΆααα’αα 16 ααΈα αααΆααααααΌαα αααΆαααααααα αα 45 ααΆααΈ (αα ααΎ Intel i7-6700K) α ααΆαααααα ααα»αααα’αΆαααααααα½αααΆααααααΈααααααααα’αΆα ααααα·ααααα·ααΆα ααααααααααααααΆααααΆαααΆαααααααααααααΆαα ROP α
ααΆα Hack αααααΆααααΆααααΎαα’αααααα’αΆααααααΆααααααΆααααΆαααααα
ααΎααααΈα’αα»αααααααα enclave ααααΆαααΆααααα αΆα ROP α’αααααΆααααα αΆαααααΌαααα’αΆα ααααααααααααα’αααα αα αΆαααααα·αααααΎαααα’αΆα αααααααΆααααααααα·ααΈαααΆαααΈαα α’αααααΆααααα αΆαααααΎααΈααΆααα’αααα αα αΆαααΆααααα ααΎααααΈα αΆααααα»αααααααααααααΆα αα·αααΎααααΈα αΆαααααα αΌαααααα»α (αααααΌαααα)α α ααα»α ααααΆααααΊααΆ enclave ααααΆααΆααα·αα’αΆα αααααΌαα±αααααααα·ααΈαααΆαααΈαααΎααααΈαααα ααα’αααα αα αΆααααααΆαααααα½αααΆαα ααα»αααααααα»ααα αα·αα’αΆα ααααΎα’αααα αα αΆααα»ααααααΆααααα ααααααααααα·ααΈαααΆαααΈαα ααααα·αααΎααΆααΆααα·α ααΆααα’αΆα ααααααααααααααααααααααα·αααΆαααΆααα½ααααααααααααααα
ααα»αααα’αΆαααααα’αα»ααααααΆααααααααααααααααΆαααααααααΆααα½ααααααααααα TSX α ααααΌα ααΌα ααααΈαα»α ααΆαααΎαα’αααααα’αΆααααααΆααααααΆααα’αααα·ααΆαααααααΆ α αΎααααααΆαααααα·αα·αααααΎαααΆααΎααααααααααααΌαααΉαα’αΆααααααΆααααα’αΆα αααααααΆααααα¬ααα ααΎααααΈααααΎααΌα αααα ααα»αααααααΆα ααααΎααΆα hack ααΌα ααΆααααααα ααΆααααΆαααα»αααΆαααααααα αααα»αααααα·ααααα·ααΆα TSX α αΎααααααΆααααΈααΆααΆααααα αα ααα»αααααα»ααααααΆαααα αα ααΆααααΆααα»αα ααααααα·ααααα·ααΆααααααααα (ααααΌαααΌααααΆαα αααΆααααΆαα)α
αααααΎααααααΌααααα‘ααααΈααααα·ααααα·ααΆα TSX α’αααααΆααααα αΆααααααΆααΎααΆα’αΆα αααααααΆααααα¬ααα ααααα·αααΎααΆααΆ "ααΆαααααΌαααΌααααα ααααΆ" ααα»αααα’αΆααααααααααΆααΆααααααααΉαααα½αααΆααααααα ααααα·αααΎααΆααααΆαααααΎααΆαααΆα ααααα·αααΎαααααααααΌαααΆαα’αΆαααααα»ααααα αααααααα·ααααα·ααΆαααΉααααα αααααααα α»αααααααααα ααΈ "ααΆααα»αα αααααΆαα αααΆααααΆαα"α
α§ααΆααααα TSX αααααΆααααααααα·ααααα½αααααααααα’αααααΆααααα»αααα’αΆααααα (αααα ααΈααΆααα·αα’αΆα αα αα½α ααααΆαααΆαααΆαααΆααααα§αααααααΆααααααΎαααΆααααααααΉα): αααααΆαααΆααααααααΆαααααα’αααα αα αΆαααΆααα’ααααααΌαααΆααααααααΉααααα»αααααΆααααααα·ααααα·ααΆαααΆααααααα αααααα±ααααααα·ααααα·ααΆααααα ααααΆααΆααΆαααα·ααΆα’αααα αα αΆααααααΆαααΆαααααα αα αααα·αααααΆααααααΌαα
Hack ααΎααααΈααααΌααα·αααα αΌαααΆαααααααααα
αα αααααααΎααΆαααΆααα»α ROP ααΈααααααα»ααα·α - αα·αααΌα ααΆαααΆααααα αΆα ROP αααααααΈαα α’αααααΆααααα αΆαα’αΆα αααααααααααΆαα α»αααααα RIP ααααα·αααααΎααααΆααααα α»αααΆαα½ααα αααα»ααααααα·ααΈαααααααΌαααΆαααΆααααα αΆα (buffer overflow α¬α’αααΈαα½αααΌα ααα)α α’αααααΆααααα αΆαα’αΆα αααααααΆααααΎαααααααααΆαα α»αααααα RIP ααααααα»ααα ααΎααααααααααΆααα ααΆαα·ααα ααΆα’αΆα αααα½ααααααααααΆαα α»αααααααααααΆαα½αααΉααααααααααΆαα ROP αααααααα½αα
ααααααΆαααΆααααα ααααα·αααΎαααααααααΆαα ROP ααα αααααΆααααααααΆααααΎαααααααααααααααααααααα·ααΈαααΆαααΈαα’αΆα ααΆαα±ααααΌα αα·αααααα αα·αα₯αα·ααΆαααααααα·ααΈααααα·αααααΉααα»αα ααααααΆα ααααααααααααΆαααΆααααα αΆαααααααααΆαα αα·ααααα α·αααααΉαααααΆαααΆααααααα ααΌα ααααααΆαααααΎαααα»ααααααααααα’αΆαααααααααααααΆααααααΆαααααα½αααΆ α αΎααααααΆαα»ααααααααααΆαα ROP ααααααΆαα αααα»αααΆα ααα»αααααααααααααΆαααααΌαααΆαααΆαααααα»αααΈααΆααα’αααα αα αΆααααα’αΆα αααααααΆααααα ααααα ααααα»αα±ααααααα·ααα ααααα
ααΎβααΆαβαα½α βα αΌαβααΆααβααΈβαααα»αβαααααΈβααΆαβααΎβαααααβα’αααΈβαααβααβαα»α αα αα·α?
(1) ααΈαα½α α§ααΆαααααααΆααΆα hack αααααΆααααΆααααΎαα’αααααα’αΆααααααΆαααΎααααΈααΎαααΆααΎαα½αααα’αΆα α’αΆαααΆαα, β ααααααααααααα·ααΈαααΆαααΈααααααΆααα§ααααα ROP αααα’αΆα ααααΆαααΆαα
(2) αααααΆααααααα hack αααααΆααααΆααααΎαα’αααααα’αΆααααααΆααααααΆααααΆαααααα, β α§αααααααααααααΆααΆααααααααααααα αααα»αα’αααα αα αΆααααααααααα·ααΈαααΆαααΈα ααααααααα·αααααααΆααααΆαα αΆαααααα αΌαααααα»αα
(3) αααααΆαααα ααα·ααααΆααααααΎααααααααααΆαα ROP ααΈα§ααααααααααΆαααααΎααααα»αααα αΆα (1) α αΎααααα αΌααααααααααΆααααααα αααα»αααααααααα·ααΈαααΆαααΈαα
(4) ααΆα α»αααααα αα αααααααααααα·ααΈαααΆαααΈααα½ααααααααΉααααααααααΆαα ROP αααααΆααααααΎαα‘αΎααααα»αααα αΆααα»α ααααα»αααααΆααΆαα αΆααααααΎαααααΎαααΆα - ααΆαα½αααΉααα·αααα·αααααααααα·ααΈαααΆαααΈα αα·ααααααααΆααααα»αααΆαα α ααααααααα
αααααααααα»αααα’αΆαααααααααΎααΆα hack ααΆαααααααΎααααΈαααααΎα ranzowari
αααααΆααααΈαααααα·ααΈ host αααααααΆαααααααααααα enclave ααΆαααα ECALLs αα½α (ααααα·αααααααααΆ enclave αααααααΆααΆα) enclave ααααΆααΆααααααααααααααααααααα αααα»α memory αα host application αααααΆααααΆααααα αΌα code (ααααααααααααααα cells ααΆαααααα αααααααααααααΌααα)α αααααΆααααααααααΆαα hack αααααΆααααΆααααΎαα’αααααα’αΆααααααΆαααΎααααΈααΎαααΆααΎαα½αααα’αΆα α’αΆαααΆαα, β enclave αααααααααααααααα’αΆα ααααα·ααααα·ααΆααα αααα»ααααααα·ααΈ host αα·ααααααΎααααααααααΆαα ROP ααααααααΎαα―αααΆαααααΈαααααΆααααααααΆ "RANSOM" αα αααα»ααααα αα α»αααααα (αα αααα»αααΆαααΆααααα αΆααα·αααααΆαα enclave α’αα·αααααΈαα―αααΆαα’αααααααΎααααΆαααααααΆαααααΆαα) αα·ααααα αΆαααΆαααααααααα αααα»ααααααΆαα½αααααΆααα αααααα·ααΈαααΆαααΈαααΏαααααααααααααΆ enclave ααααΆαααααααααααααααΈαα ααΎαααααΎααα ααΌα α’αααΈαα αααα»αααΌα?
ααΎααααΈααΆααααα½ααααα»αααΆααααααΎα ααΌαααααΆα mnemonics αα½αα ααα½αααΆαααααα·αααααα
ααΎααααααΆαα»ααααααααΎαααααΆαα α»αααααα RSP αα·α RBP ααΎααααΈααααΆαααααα·ααααα·ααΆαααααααΆαααααααα·ααΈαααΆαααΈα αααααΆααααΈααααΎαααΆαααααα»αα
ααΎααααα»ααααααααααα»ααααααααααααα (ααΌαααΎαααΌαααΈααααα "ααΆα hack αααααΆαααααααΌαααααααα αΌαααΆαααααααααα") α
αααααααα§ααααα ROP ααααααα
ααααααααα αΆααααααα»αα
ααΎααααααΎααααααααααΆαα ROPα
αααααΆααααααααα αα αααα·ααααΆ SGX αααα Intel αααααααΌαααΆααα ααΆα‘αΎαααΎααααΈαααααΆααααΉααααααα·ααΈααααΆααΆαααααΌαααΆαααααααααααα αααααα»αααα’αΆαααααααΎααααΈαααααα ααΆαααΌαααααα αααα»αα
ααααα: www.habr.com