áááşáááááˇáşáĄáááŻááşá¸á enclave áá˝ááşááŻááşááąáŹááşááąáŹááŻááşáááş áááşá¸áááŻááşááąáŹááşáááŻááşá á˝ááşá¸áá˝ááş áĄááąá¸áĄáááşáááˇáşáááşááŹá¸áááşá á áá áşááąáŤáşáááŻáážáŻááťáŹá¸ ááźáŻááŻááşáááááŤá áááşá¸áááş I/O ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáááŻááşááąáŹááşáááŻááşááŤá áááşá¸áááş host áĄáááŽááąá¸áážááşá¸áááŻááşáĄáááŻááşá¸á áĄááźáąááśááááşá áŹááᯠáááááŤá áááşá¸áááş jmp áááŻáˇáááŻááş host application code áááŻááąáŤáşáááŻáááááŤá áááşááśáĄáááŽááąá¸áážááşá¸ááᯠááááşá¸ááťáŻááşáááˇáş ááááşá áŹááąááŹáá˝á˛áˇá ááşá¸ááŻáśáážááˇáş áááşáááşá áááşá¸áá˝ááş á áááşáá°á¸ááážáá፠(áĽáááŹá áááşáááˇáşá áŹááťááşáážáŹááťáŹá¸ááᯠááźáąááŻáśáá˝á˛ááŹá¸áááş áááŻáˇáááŻááş áááŻá áŹááťááşáážáŹááťáŹá¸áá˝ááş ááąááŹáĄááťááŻá¸áĄá áŹá¸ááťáŹá¸ áážáááąáááş)á áááşá¸áááş host áĄáááŽááąá¸áážááşá¸ááážááşááŹááşáĄáááŻááşá¸áĄá ááᯠáááşá¸áážááˇáşááźáąááŻáśáá˝á˛áááş áááşáááşáážáŻá áá áşáĄáŹá¸ ááąáŹááşá¸áááŻáááŻááşáááşáááŻááşá፠(áĽáááŹá /proc/pid/maps) áážááááˇáşá á áŹááąá¸áááş ááźááŻá¸áááşá¸áážáŻááťáŹá¸ááᯠááąáŹáşááźááźááşá¸áááźáŻáᲠáááşááśááąáŹááşáá˝ááşááąá¸áááˇáş áĄáááŽááąá¸áážááşá¸áá áşááŻá ááááşáážááşááŹá¸ááąáŹ áážááşááŹááşáĄáááŻááşá¸ááᯠááťááşá áá áŻáśáážáááşáááşáááş áĽáŹááşááážáŽááąáŹ ááźááŻá¸áááşá¸áážáŻááťáŹá¸áááş áááźáŹáᎠáááŻáˇáááŻááş ááąáŹááşáááŻááşá¸ (ááááşááźá áşáááŻááşááťáąááťáŹá¸ááąáŹ) áááşá¸áááŻááşá¸ááááŻááááşáĄáŹá¸ áĄáááşá¸áĄááźááşáááşá á˛ááźááşá¸ááŽáááŻáˇ áŚá¸áááşáá˝áŹá¸á áąáááşááźá áşáááşá enclave áážááąáŹááşá¸áááŻááŹá¸ááąáŹ virtual address space ááąááááş host application áááŻáˇáááşááąáŹááşááááááˇáşáĄááŤáááŻááşá¸ áááşá¸áááş ááźá áşááąáŤáşááŤáááşá
á¤áá˛áˇáááŻáˇ ááźááşá¸áááşá¸ááąáŹ ááźá áşáááşáážááşááťáŹá¸ ááźáąáŹááˇáş áááŻááşá¸áááşá áşá áŹááąá¸áááŹáááş áááşá¸á ááááŻááŹá¸áĄááşááąáŹ áááşáážááşá¸ááťááşááťáŹá¸ ááźááˇáşááŽáááş SGX áĄáá˝ááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááŻááşáááşááŹá¸á
áĄáááşááąáŹáşááźááŤáĄááťááşááťáŹá¸áĄáŹá¸ááŻáśá¸áĄááąáŤáşáĄááźáąááśá enclave áááş host application áááŻááŻááşááąáŹááşáááŻááşáááşááŹááźá áşááźáŽá¸ enclave áááş áĄáášáááŹááşáážáááąáŹáá°ááťáŹá¸áĄááŤáĄáááşáááşá¸ááááŻááşáááŻááşáĄá ááźáŻáážáŻáááŻááŻááşááąáŹááşáááŻááşááźááşá¸ááážáááźáąáŹááşá¸ ááąáá°ááťáĄáŹá¸ááźááˇáşáááşááśááŤáááşá áááŻáááŻáááşáážáŹ enclaves ááťáŹá¸áááş virus ááąá¸áá°ááťáŹá¸áĄáá˝ááş áááşáá˝áąáˇááťááąáŹáááşáááŻá¸ááážáááŤá á¤áĄááťááşá áááŻáá°áááťááşáááş SGX ááŹáá˝ááşááąá¸áááş áĄááťááŻá¸áááŽááąáŹ áĄááźáąáŹááşá¸áááşá¸áá áşááŻááźá áşáááş- áááŻáˇá áşáĄáááŽááąá¸áážááşá¸ááŻááşáááş enclave áááşáááŻááŽááᯠááááşááąáŹááşáááŻááşááąáŹáşáááşá¸ enclave ááŻááşáááş áááşáááˇáş host áĄáááŽááąá¸áážááşá¸áážááşááŹááşááááşá áŹáááŻáˇáááᯠáááşáááŻááşááźáŽá¸ á áŹááąá¸áááŻááşáááşá
áááŻáˇááźáąáŹááˇáşá áĄáááşá malicious enclave code áááş host application áááŻááşá áŹá¸ arbitrary system calls ááťáŹá¸ááźáŻááŻááşáááŻááşááźáŽá¸á áááşá¸ááááŻááşá áŹá¸ arbitrary code ááᯠexecuteá host application á memory ááᯠscan ááŻááşááźáŽá¸ áááşá¸áá˝ááşáĄáá˝á˛ááŻáśá¸á áŹá¸ááŻááşáááŻááşááąáŹ ROP chains ááťáŹá¸áááŻáážáŹáá˝áąááŤá host application á áĄááŻáśá¸á áŻáśááááşá¸ááťáŻááşáážáŻááᯠááááşá¸áá°áááŻááşáááşááźá áşááŤáááşá áááŻááşááťáąáŹááşááŻááşá áááşá¸áááş áĄááŻáśá¸ááźáŻáá°áááŻááşááťáŹá¸ááᯠáááŻá¸áá°áᏠááŻááşáážááşááŻáśááŹáá áĄááŻáśá¸ááźáŻáá°áááŻááşá áŹá¸ ááŻááşááąáŹááşáááŻááşáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááşá¸ááááŻááşá áŹá¸ ááźáŹá¸ááąáŹááşá¸ááąáŹáĄáŽá¸ááąá¸ááşááťáŹá¸ ááąá¸áááŻáˇá፠áááŻáˇáááŻááş DoS áááŻááşáááŻááşáážáŻááťáŹá¸ááᯠááŻááşááąáŹááşááŤá stack canaries áážááˇáş address sanitization áá˛áˇáááŻáˇááąáŹ ááąááşáĄááŽááŻáśá¸ áĄááŹáĄáá˝ááş ááášáááŹá¸ááťáŹá¸áááŻáááş áááźáąáŹááşáá˛á
áááŻááşáááŻááşáá°ááťáŹá¸áááş áááşá¸áááŻáˇááááŻááşáááŻááşáĄáášáááŹááşáážáááąáŹáááşáá˝ááşááťááşááťáŹá¸áĄáá˝ááş SGX ááᯠáĄáá˝ááˇáşááąáŹááşá¸áá°áááş áĄáááşáá˝ááşááąáŹáşááźááŹá¸ááąáŹ áááˇáşáááşááťááşááťáŹá¸ááᯠááťáąáŹáşáá˝ážáŹá¸áááşáĄáá˝ááş áááŻááşáááŻááşáá°ááťáŹá¸áĄááŻáśá¸ááźáŻáááˇáş áááşááşáĄááťááŻáˇááᯠáááˇáşáĄáŹá¸ ááźáááŤáááşá ROP áááŻááşáááŻááşáážáŻááťáŹá¸á host áĄáááŽááąá¸áážááşá¸ ááŻááşáááşá¸á ááşáĄááźá áş áĄáá˝ááşáá°ááŹá¸ááąáŹ ááááŹá¸ááŻááşááᯠááŻááşááąáŹááşáááş (áá˛ááşáá˛á áááźáŹáá áĄááŻáśá¸ááźáŻááąáˇáážááááˇáş áĄááąáŤááşá¸ááąáŤááşáážááˇáş áááşáá°áááş)á áááŻáˇáááŻááş áĄáááşáááˇáşááŻááşááŹá¸ááąáŹ áá˛ááşáá˛ááᯠááŻáśá¸áá˝ááşáááş (áááşá¸á malware ááťáŹá¸ááᯠáááˇáşááťááşáááˇáş áááŻááşá¸áááşá áşááťáŹá¸áážááˇáş áĄááźáŹá¸ááŹáá˝ááşááąá¸ ááášáááŹá¸ááťáŹá¸ááźááˇáş áážáááşá ááşáážááşá¸áááşá¸ááźááşá¸ááž áááşáááşáááş)á
ááááşá áŹááťáŹá¸ááᯠáááşáážáŻáááŻááşáááŹá¸á
enclave áááş host áĄáááŽááąá¸áážááşá¸áááŻáˇ virtual address space á áááşáááˇáş ranges áááŻááááŻááşáááşááᯠáááááąáŹááźáąáŹááˇáş enclave áááş áááşáážááşá¸ááážáŽááąáŹ address áááŻáááşáááşááźááŻá¸á áŹá¸ááąáŹáĄááŤáá˝ááş áĄááŻáśá¸áááşáááŻááşá¸ááąáŹááźáąáŹááˇáşá attacker áááş áĄáážáŹá¸ááŻááşáááş áááşá¸áááşá¸áážáŹááááˇáşááŹáááşáážááˇáş áááşáááŻááşááąááááşá ááááşá áŹááąááŹááᯠá áááşáážááşáááşáážááş á áááşáááşááŤá ááážááááŻááşááąáŹ virtual ááááşá áŹááťáŹá¸ááᯠááźáąááŻáśáá˝á˛áááş áááşá¸áááşá¸áážáŹááŤá áá°ááźááşá¸áááş Intel á TSX áááşá¸áááŹááᯠáĄáá˝á˛ááŻáśá¸á áŹá¸ááŻááşááźááşá¸ááźááˇáş á¤ááźáżááŹááᯠááźáąáážááşá¸áááşá TSX á ááąá¸áá˝ááşáááŻá¸ááťááŻá¸ááťáŹá¸áá˛ááž áá áşááŻááᯠáĄááŻáśá¸ááźáŻáááş- áááşáááŻááŽáááşááąáŹááşáá˝ááˇáş ááŻááşááąáŹááşááťááşááᯠTSX áĄááąáŹááşá¸áĄáááşáá áşááŻáá˝ááş ááŹá¸áážáááŤáá ááážááşáááşááąáŹ ááááşá áŹááťáŹá¸ááᯠáááşááąáŹááşááźááˇáşáážáŻááźááşá¸ááž ááźá˝ááşá¸ááťááşááťáŹá¸áĄáŹá¸ áááşáááşáážáŻá áá áşáááŻáˇ áááąáŹááşáážááᲠTSX ááž ááŹá¸ááźá áşááŹá¸áááşá ááážááşáááşááąáŹ áááşáááŻááŽááááşá áŹáá áşááŻáááŻáˇ áááşááąáŹááşáááş ááźááŻá¸áááşá¸ááŤáá áááşáážá áá˝áąááąá¸áá˝áąáá°áááŻáᏠááťááşááááşá¸áááşááźá áşááźáŽá¸á enclave ááááŻááááşáá áşááŻááŻáśá¸ááᯠááťááşáááŻááşááŤáááşá áĄá˛ááŤá TSX áááş ááźááŻáá˛áááˇáşáĄáášáááŹááşááážááᲠáá˝áąááąá¸áá˝áąáá°áá áşááŻáĄáá˝ááşá¸ááž áááşáááˇáşááááşá áŹáááŻáááᯠááŻáśááźáŻáśá á˝áŹáááşááąáŹááşááźááˇáşáážáŻáááŻááşá áąáááş áá˝ááˇáşááźáŻááŹá¸áááşá
ááťážááş áááşáážááşááŹá¸ááąáŹááááşá áŹááᯠááážááááŻááşááŤáááşá host áĄáááŽááąá¸áážááşá¸á TSX áá˝áąááąá¸áá˝áąáá°áááşáááźáŹáááĄáąáŹááşááźááşáááşá áážáŹá¸áážáŹá¸ááŤá¸ááŤá¸ ááá ášá ááťáŹá¸áá˝ááşá áĄáážáąáŹááˇáşáĄáážááşááťáŹá¸ (áĄááťáááşáááŹá¸áá˝á˛áá° áĄáážáąáŹááˇáşáĄáážááşááťáŹá¸áá˛áˇáááŻáˇ)á áááşáážáşáááşáážáŹá¸ááźááşá¸ áááŻáˇáááŻááş ááŻááşáááşá¸á ááşááťáŹá¸á á˝áŹááźááˇáş áážááşááŹááşáááşááąááŹááᯠáááźááŻááşáááşáááşá¸ áá˝ááşá¸ááśáážáŻááťáŹá¸áá˛áˇáááŻáˇááąáŹ ááźááşááá˝ážááşá¸áááŻá¸áážáŻááťáŹá¸ááźáąáŹááˇáş ááťááşáá˝ááşáááŻááşáááşá á¤áážáŹá¸ááŤá¸ááąáŹááá ášá ááťáŹá¸áá˝ááş TSX áááş ááťááşáá˝ááşáážáŻ ááŹááŽááźá áşááźáąáŹááşá¸ áá˝ážááşááźáááˇáş áĄáážáŹá¸ááŻááşááᯠááźááşááąá¸áááşá á¤ááá ášá ááťáŹá¸áá˝ááşá áááşáááş áá˝áąááąá¸áá˝áąáá°ááᯠááźááşáááşá áááşáááşáᏠáááŻáĄááşáááşá
ááťážááş áááşáážááşááŹá¸ááąáŹááááşá áŹááᯠáááááŻááşááŤá áááşááśáĄáááŽááąá¸áážááşá¸á TSX áááş ááźá áşááąáŤáşááŹááąáŹ ááźá˝ááşá¸ááťááş (OS ááᯠáĄááááąá¸ááźááşá¸ááážáááŤ) áážááˇáş áá˝áąááąá¸áá˝áąáá°ááᯠáááşááťááşáááşá áá˝áąááąá¸áá˝áąáá°ááᯠáááşááťááşáááŻááşáááˇáşáĄááťááşááᯠááŻáśáˇááźááşáááŻááşá áąáááş áĄáážáŹá¸ááŻááşááᯠenclave ááŻááşáááŻáˇ ááźááşáááŻáˇááąá¸ááŤáááşá á¤áĄáážáŹá¸áĄáá˝ááşá¸ááŻááşááťáŹá¸áááş ááąá¸áá˝ááşá¸ááŻááşááŹá¸ááąáŹááááşá áŹááᯠáááşááśááąáŹááşáá˝ááşááąá¸áááˇáşáĄáááŽááąá¸áážááşá¸áá˝ááş áááážááááŻááşááźáąáŹááşá¸ ááąáŹáşááźáááşá
enclave áĄáá˝ááşá¸ááž TSX áá¤ááźááşáážááşáážáŻáááşáá°ááźááşá¸áĄáá˝ááşááąáŹááşá¸áá˝ááşááąáŹáĄááşášááŤáááşáá áşááŻááźá áşáááş- enclave ááŻááşáááŻááŻááşááąáŹááşááťáááşáá˝ááş hardware á á˝ááşá¸ááąáŹááşáááşááąáŹááşááŹáĄááťáŹá¸á áŻáááŻáá˝ááşá¸ááśááŹá¸ááąáŹááźáąáŹááˇáş enclave áĄáá˝ááşá¸áá˝ááşááŻááşááąáŹááşáá˛áˇááąáŹ TSX áá˝ážá˛ááźáąáŹááşá¸áážáŻááťáŹá¸áááŻááźáąááŹááśáááşáááźá áşáááŻááşááŤá áááŻáˇááźáąáŹááˇáş TSX á ááááŻááŹá¸áĄááşááąáŹ ááźááşáážááşáážáŻááᯠáááşáááşáážáŻá áá áşáá˝ááş ááŻáśá¸ááááźááşáááŻááşááŤá
áááŻáˇáĄááźááşá áĄáááşááąáŹáşááźá፠áááşááşáááş áááşáááˇáşá áá áşááąáŤáşáááŻáážáŻááťáŹá¸áááŻááťáž áĄáŹá¸ááááŻá¸ááąáŹááźáąáŹááˇáşá á áá áşááąáŤáşáááŻáážáŻááťáŹá¸ááᯠáááŻá¸áážááşá¸á á˝áŹ ááááşáááŻáˇááźááşá¸ááźááˇáş áááşá¸ááᯠáážáŹáá˝áąáá˝áąáˇáážáááźááşá¸ áááŻáˇáááŻááş ááŹá¸ááŽá¸ááźááşá¸áááźáŻáááŻááşááŤá áĽáĄáá˛áááŻááşááźááşá¸ááᯠáááŻááşááťááşááŹáá˝ááş áĄááźáŻáááąáŹááąáŹááşááąáŹááááşáááŻááąá¸ááąáˇáážááááşá
ááŽááááşáááş ROP áá˝ááşá¸áááşáá áşááŻáá˝á˛áˇá ááşá¸áááşáĄáá˝ááş áááˇáşááťáąáŹáşááąáŹ gadget ááťáŹá¸áĄáá˝ááş host áĄáááŽááąá¸áážááşá¸ááŻááşááᯠáážáŹáá˝áąáááş áĄáááşáá˝ááşááąáŹáşááźááŹá¸ááąáŹ áááşááşááᯠáĄááŻáśá¸ááźáŻáááşá áá áşááťáááşáááşá¸áážáŹáááş áá°áááş ááááşá áŹáááŻááşá¸ááᯠá áŻáśá ááşá¸áááş ááááŻáĄááşááąá virtual address space á á áŹááťááşáážáŹáá áşááŻá áŽááž ááááşá áŹáá áşááŻá áŽááᯠá á áşááąá¸áááş ááŻáśááąáŹááşááŤáááşá áááşáááŻáᎠ16 áá áşááŤáááŻááşá ááŻáśá¸ááᯠá á áşááąá¸áááş áá áááá áşáááˇáş ááźáŹáááş (Intel i45-7K)á ááááşáĄááąááźááˇáşá ááŽááááşáááş ROP áá˝ááşá¸áááşáá áşááŻáááşááąáŹááşáááşáĄáá˝ááş áááˇáşááťáąáŹáşááąáŹ áááşáááşáááŻááşááąáŹá áŹááťááşáážáŹááťáŹá¸á áŹáááşá¸ááᯠáááşááśááážááá˛áˇáááşá
á áŹááąá¸áááŻááşáážáŻ áĄáá˝ááş ááááşá áŹááťáŹá¸ááᯠá á áşááąá¸ááźááşá¸áĄáá˝ááş áááşááş
ROP áááŻááşáááŻááşáážáŻáá áşááŻá enclave ááŹá¸áážááşá¸ááᯠááŻááşááąáŹááşáááşá áááŻááşáááŻááşáá°áááş host áĄáááŽááąá¸áážááşá¸á áĄááŻáśá¸áááźáŻááąáŹ áážááşááŹááşááąááŹááťáŹá¸ááᯠáážáŹáá˝áąáááŻááşáááşáááŻáĄááşáááşá áááŻááşáááŻááşáá°áááş áĄááŻááąáŹááşáá áşááŻááᯠáááŻá¸áá˝ááşá¸áááşáážááˇáş payload (shellcode) áááŻá¸áá˝ááşá¸áááş á¤áážááşááŹááşáááşááąááŹááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááşá áĄááááĄááťááşáážáŹ áĄáášáááŹááşáážáááąáŹ enclave áááş áááşáááŻááŽááᯠáá°áˇáĄáááŻááᯠáá˝á˛ááąáááşáážááşáááş host áĄáááŽááąá¸áážááşá¸ááᯠááááŻáĄááşáᲠáááşá¸áĄá áŹá¸ host application ááž áá˝á˛ááąááąá¸ááŹá¸áááˇáş memory ááᯠáĄáá˝á˛ááŻáśá¸á áŹá¸ááŻááşáááŻááşáááşá áĄáááşá áá°áááş áĄáááşá¸áĄáááŻááşá¸ááᯠáááźááŻááťááşáᲠáááŻáá˛áˇáááŻáˇááąáŹ á§ááááŹááťáŹá¸ááᯠáážáŹáá˝áąáááŻááşáááşááźá áşáááşá
ááŽááááşáááş TSX á áĄááźáŹá¸ááąá¸áá˝ááşáááŻá¸ááťááŻá¸ááᯠáĄááŻáśá¸ááťááźááşá¸ááźááˇáş á¤áážáŹáá˝áąáážáŻááᯠááŻááşááąáŹááşáááşá áááá ááááşááá ášá áá˝ááşáá˛áˇáááŻáˇá áááşá¸áááş áááşá¸ááááşáážááážáŻáĄáá˝ááş ááááşá áŹááᯠá á áşááąá¸ááźáŽá¸ááąáŹááş á¤ááááşá áŹáážááˇáş áááşáááŻááşáááˇáş á áŹááťááşáážáŹááᯠááąá¸áááŻááşáááŹá¸á áááŻáááŻáˇááŻááşááąáŹááşáááşá áá°ááźááşá¸áááş áĄáąáŹááşá፠hack áááŻáĄááŻáśá¸ááźáŻáááş- áá°áááş TSX áĄááąáŹááşá¸áĄ á ááşáá áşááŻáá˝ááşá áŹááąá¸áááˇáşááŻááşááąáŹááşááťááşáááŻáááˇáşáá˝ááşá¸ááźáŽá¸áááşá¸áááşááźáŽá¸ááźáąáŹááşááźáŽá¸ááąáŹááşá áááŻáˇááąáŹáşáááźáŽá¸ááŽáá˝ááşáá°áááşáĄáááşá¸áĄááťááşáá˝áąááąá¸áá˝áąáá°áááŻááťááşáá áşáá˛áˇáááş (áážááşá¸áááşá¸ááźááşááŹá¸á á˝áŹááťááşááááşá¸ááźááşá¸) á
TSX áĄááąáŹááşá¸áĄ á ááşáá áşááŻáážááźááşááŹááąáŹááŻááşáááŻááźááˇáşáážáŻááźááşá¸ááźááˇáşá áááŻááşáááŻááşáá°áááşá áŹááąá¸áááŻááşáááşáážáááážáááŹá¸áááşáááşá áĄáááşá áááşá¸áááş "ááááťááźááşááŹá¸ááąáŹ áááŻááşáááşááťááşááťááźááşá¸" ááźá áşááŤá áááşá¸ááᯠáááşáááşááŻááşááąáŹááşáá˛áˇáááşáááŻááťážááş áááŻááşáá°á¸áážáŻ áĄáąáŹááşááźááşáááşááᯠáá°ááźááşá¸á ááŹá¸áááşáááşá á áŹááťááşáážáŹáááş áááşáááşááŹááźá áşááŤáá áá˝áąááąá¸áá˝áąáá°áááş "áážááşá¸áááşá¸ááźááşááŹá¸á á˝áŹááťááşááťááźááşá¸" áážáá˝á˛á áĄááźáŹá¸áĄáážáŹá¸áá áşááŻááźááˇáş áĄááŻáśá¸áááşááŤáááşá
TSX á á¤ááźááşáážááşáážáŻáááş ááŽááááşáĄáá˝ááş ááąáŹááşá¸áá˝ááşáááˇáş ááąáŹááşáááşáĄááşášááŤáááşáá áşáᯠááŤáážááááş (ááŹáˇááşáᲠá á˝ááşá¸ááąáŹááşáááşááąáŹááşááŹááťáŹá¸ááž ááźáąááŹááśáááş áááźá áşáááŻááşááąáŹáˇáááş) áááş áá˝áąááąá¸áá˝áąáá° áĄáąáŹááşááźááşáážáᏠáážááşááŹááşááąá¸áááş áĄááááˇáşááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááááááşááźáŻááąáŹááźáąáŹááˇáşá áá˝áąááąá¸áá˝áąáá°ááᯠáĄááźáŽá¸áááşáááş áááŻááşá¸á áąááźááşá¸ááźááˇáş á áŻáśá ááşá¸á á áşááąá¸áááˇáş áááşáááŻááŽáá˛ááşááᯠááąááťáŹá áąáááş áááźáąáŹááşá¸áá˛ááŤá
ááááşá¸ááťáŻááşáážáŻá áŽá¸áááşá¸áážáŻááᯠááźááşáá˝ážááşá¸áááş áááşááş
áĄáááŻááşá¸áá áşááŻááž ROP áááŻááşáááŻááşáážáŻááᯠááŻááşááąáŹááşáááˇáşáĄá፠- áááŹá¸áááŻá¸ááť ROP áááŻááşáááŻááşáážáŻááťáŹá¸áážááˇáş ááá°áᲠ- áááŻááşáááŻááşáá°áááş áááŻááşáááŻááşááśáááąáŹ ááááŻááááşáážá áááşáááˇáş bug ááťáŹá¸áááŻáááᯠáĄááŻáśá¸ááťááźááşá¸ááážááᲠRIP áážááşááŻáśáááşááźááşá¸ááᯠááááşá¸ááťáŻááşáááŻááşáááş (buffer overflow áááŻáˇáááŻááş áááŻáá˛áˇáááŻáˇááąáŹáĄááŹ)á áááŻááşáááŻááşáá°áááş stack áá˝ááşááááşá¸áááşá¸ááŹá¸ááąáŹ RIP áážááşááŻáśáááşáááşáááŻá¸ááᯠáááŻááşáááŻááş overwrite ááŻááşáááŻááşáááşá áĄáá°á¸áááźááˇáşá áááşá¸áááş á¤áážááşááŻáśáááşááźááşá¸áááşáááŻá¸ááᯠáááşá¸ááááŻááşáááŻááş ROP áá˝ááşá¸áááşááźááˇáş áĄá áŹá¸áááŻá¸áááŻááşáááşá
áááŻáˇááąáŹáşáááşá¸ ROP áá˝ááşá¸áááşáááş áážááşááąááŤáá host áĄáááŽááąá¸áážááşá¸á stack áĄááťáŹá¸áĄááźáŹá¸ááᯠoverwrite ááŻááşááźááşá¸áááş ááąááŹááťááşá áŽá¸ááźááşá¸áážááˇáş áááťážáąáŹáşáááˇáşááŹá¸ááąáŹ ááááŻááááşáĄááźáŻáĄáá°áááŻáˇááᯠááźá áşááąáŤáşá áąáááŻááşáááşá áá°ááááŻááşáááŻááşáážáŻááᯠááťážááŻáˇáážááşá á˝áŹááŻááşááąáŹááşáááş ááźááŻá¸áááşá¸ááąááąáŹ áá°ááźááşá¸áááş á¤áĄááźáąáĄááąáážááˇáşáááşáááşá áááťáąáááşááŤá áááŻáˇááźáąáŹááˇáşá áááşá¸áááş áá°áˇááŹááŹáá°áĄáá˝ááş ááŹáᎠstack frame áĄááŻááᯠáááşááŽá¸ááźáŽá¸ áááşá¸á ROP áá˝ááşá¸áááşááᯠáááşá¸áá˝ááş ááááşá¸áááşá¸ááŹá¸áááşá stack frame áĄááŻááᯠááťáááşá¸ááąá¸áááŻááşááąáŹ áááşáááŻááŽáááşááąááŹáá˝ááş ááŹá¸áážáááŹá¸ááźáŽá¸ áĄá á áşáĄáážááşá áááŻá¸ááᯠááááŻáĄáááŻááşá¸ááŹá¸áá˛áˇáááşá
áĄáááşááąáŹáşááźá፠áááşááşááŻáśá¸ááŻá ááŽááááşááᯠááŹááąá¸ááá˛á
(á) áážáąá¸áŚá¸á á˝áŹ áááŹáááŻááąáŹ áááşá¸ááś ááąáŹááşááźááşááźááşá¸á ááááşá áŹááťáŹá¸ááᯠáááşáážáŻáááŻááşá ááážá á á áşááąá¸áááş hack ááŤá, â áĄáá˝á˛ááŻáśá¸á áŹá¸ááŻááşáááŻááşááąáŹ ROP gadget ááťáŹá¸áĄáá˝ááş host application ááᯠáážáŹáá˝áąáááşá
(á) áááŻáˇááąáŹááş á áŹááąá¸áááŻááşáážáŻ áĄáá˝ááş ááááşá áŹááťáŹá¸ááᯠá á áşááąá¸ááźááşá¸áĄáá˝ááş áááşááş, â áĄáášáááŹááşáážáááąáŹ áĄáááŻááşá¸áá áşááŻáááş payload áááŻáááŻá¸áá˝ááşá¸áááşáĄáá˝ááş áááˇáşááťáąáŹáşááąáŹ host áĄáááŽááąá¸áážááşá¸ááážááşááŹááşáĄáá˝ááşá¸áážá á§ááááŹááťáŹá¸ááᯠáá˝á˛ááźáŹá¸áááşáážááşáááşá
(3) áááŻáˇááąáŹááşá enclave áááş áĄáááˇáş (1) áá˝ááşáá˝áąáˇáážáááŹá¸ááąáŹ gadgets ááťáŹá¸ááž ROP áá˝ááşá¸áááşáá áşááŻááᯠáááşááŽá¸ááźáŽá¸ á¤áá˝ááşá¸áááşááᯠhost application stack áá˛áááŻáˇ áááŻá¸áááˇáşáááşá
(4) ááąáŹááşááŻáśá¸áĄáááˇáşáá˝ááşá áĄáááşáážááşáĄááşááşááŽááąá¸áážááşá¸áááş ááááşáĄáááˇáşáá˝ááş áááşááŽá¸ááŹá¸áááˇáş ROP áá˝ááşá¸áááşááᯠáá˝áąáˇááźáŻáśááąáŹáĄááŤá ááááŻááŹá¸áĄááşááąáŹ payload áááş host áĄáááŽááąá¸áážááşá¸á áĄáá˝ááˇáşáá°á¸ááťáŹá¸áážááˇáş á áá áşááąáŤáşáááŻáážáŻááťáŹá¸ ááźáŻááŻááşáááŻááşáážáŻáááŻáˇááźááˇáş á áááşááąáŹááşáá˝ááşááŤáááşá
áá°ááźááşá¸áá áşááąáŹááşá ranzowari ááᯠáááşááŽá¸áááŻáˇ ááŽáááşááşáá˝áąááᯠáááşáááŻááŻáśá¸áá˛á
áááşááśáĄáááŽááąá¸áážááşá¸áááş ECALLs ááťáŹá¸áá˛áážáá áşááŻáážááááˇáş ááááşá¸ááťáŻááşáážáŻááᯠáá˝ážá˛ááźáąáŹááşá¸ááźáŽá¸ááąáŹááş (á¤áĄáááŻááşáĄáááşá¸áááş áĄáášáááŹááşáážááááşáᯠááśááááážááá˛) áĄáášáááŹááşáážáááąáŹ áĄáááşá¸áĄáááŻááşá¸áááş ááŻááşáááŻáááŻá¸áá˝ááşá¸áááşáĄáá˝ááş áááşááśáĄáááŽááąá¸áážááşá¸á áážááşááŹááşáĄáá˝ááşá¸áážá ááąááŹáá˝ááşááťáŹá¸ááᯠáážáŹáá˝áąáááş (áááŻáá˛ááşááťáŹá¸á áĄá áŽáĄá áĽáşááťáŹá¸ááᯠááąááŹáá˝ááşááťáŹá¸áĄááźá áş ááá°áááşá ááŻááážááˇáş ááźááˇáşá áŻáśáááş)á ááźáŽá¸ááąáŹáˇ ááźááşáá˝áŹá¸áááşá ááááşá áŹááťáŹá¸ááᯠáááşáážáŻáááŻááşá ááážá á á áşááąá¸áááş hack ááŤá, â enclave áááş host áĄáááŽááąá¸áážááşá¸áážá executable á áŹááťááşáážáŹááťáŹá¸ááᯠáážáŹáá˝áąááźáŽá¸ áááşáážá directory áá˝ááş "RANSOM" áᯠáĄáááşááąá¸ááŹá¸ááąáŹ áááŻááşáĄáá áşáá áşááŻááᯠáááşááŽá¸ááąá¸áááˇáş ROP áá˝ááşá¸áááşááᯠááŻááşááąá¸áááş (ááááˇáşáááŻááşáááŻááşáážáŻáá˝ááşá enclave áááş áážáááźáŽá¸ááŹá¸áĄááŻáśá¸ááźáŻáá°áááŻááşááťáŹá¸ááᯠá áŹáážááşááąá¸áááş) áážááˇáş áá˝áąá¸ááŻááşáááŻá¸áááşááąáˇááťáşááᯠááźáááŤáááşá áá áşááťáááşáááşá¸áážáŹáááşá áĄáááŽááąá¸áážááşá¸áááş áááşá¸áááŻááşá¸áááş ááśááŤááşáážá áşááŻááᯠáááŻá¸áááŻá¸áážááşá¸áážááşá¸ ááąáŤááşá¸áááˇáşááąáááşáᯠááááşááŹááŻáśááźááşáááşá ááŻááşáá˝ááş áááşá¸áááş áááşáááŻáˇááźááşááááşá¸á
ááŹá¸áááşáá˝ááşá áąáááşá áĄáááášááŤááşáá˝ááˇáşáááŻááťááşááťáŹá¸áážááááˇáş mnemonics áĄááťááŻáˇááᯠááááşáááşááąá¸ááźááŤá ááŻáˇá
payload áááŻááŻááşááąáŹááşááźáŽá¸ááąáŹááş host áĄáááŽááąá¸áážááşá¸áááŻáśáážááşáááşáááşáážáŻáááŻááźááşáááşááá°áááşáĄáá˝ááş RSP áážááˇáş RBP áážááşááŻáśáááşáážáŻááťáŹá¸ááá°ááááşáááŻá¸ááťáŹá¸ááᯠááťá˝ááşáŻááşáááŻáˇááááşá¸áááşá¸ááŤáááşá
ááťá˝ááşáŻááşáááŻáˇáááş áááˇáşááťáąáŹáşááąáŹ stack frame áá áşááŻááᯠáážáŹáá˝áąááąááŤáááş (âhack for redirecting for redirectingâ ááášáááž ááŻááşááᯠááźááˇáşááŤ)á
áááˇáşááťáąáŹáşááąáŹ ROP áááşááťááşááťáŹá¸ááᯠáážáŹáá˝áąááźááşá¸-
payload áááŻá¸áááşááąááŹáážáŹááźááşá¸-
ááťá˝ááşáŻááşáááŻáˇáááş ROP áá˝ááşá¸áááşáá áşááŻáááşááąáŹááşáááş-
á¤áááşáážáŹ Intel á SGX áááşá¸áááŹááᯠáááˇáşááťááşáááş áááşá¸áááŻááşááťáŹá¸ááážááááş áá°ááźááşá¸ááťáŹá¸ áĄááŻáśá¸ááťááźááşá¸ááᯠáááˇáşááťááşáááˇáş ááááŻááááşááťáŹá¸ááᯠáááşááźááşáááş ááŽáááŻááşá¸ááŻááşááŹá¸áááˇáş áááşá¸áááşá¸ááźá áşáááşá
source: www.habr.com