2017년 12월(2017년) 응용 프로그램에서 ocalls가 호출되는 ocalls를 방지하여 인텔® Software Guard Extensions(인텔® SGX) 완화합니다.
중첩된 ecall이 유해할 수 있는 이유에 대한 문서를 찾을 수 없습니다. 중첩된 ecall은 ocall을 부르며 ocall이 에코를 부르는 경우입니다.
인텔® Software Guard Extensions(인텔® SGX) 개발자 가이드에 설명되어 있습니다.
OCall을 만들 때 중첩 ECalls의 문이 열립니다. 엔클레이브 외부에서 취약성을 찾으려고 하는 공격자가 ECall으로 노출된 ISV 인터페이스 기능을 호출하여 인클레이브로 재차 호출할 수 있습니다. OCall이 필요한 경우, 중첩 ECalls이 허용되지 않는 표면 공격 차단 ISV 인터페이스 기능을 줄일 수 있습니다. 예를 들어, 상태 정보(진행 중 OCall에 해당)를 엔클레이브에 저장할 수 있습니다. 그러나 엔클레이브는 OCall 중에 특정 순서로 발생하는 중첩 ECalls에 의존할 수 없습니다. 처음에 중첩 ECalls(OCall 중 ECalls)은 인클레이브 내부에 예약된 스택의 양에 의해서만 허용됩니다. 그러나 ISV는 이러한 구조가 엔클레이브의 보안 분석을 복잡하게 합니다. 중첩 ECalls이 필요할 때, 엔클레이브 작성자는 다른 방식으로 응용 프로그램을 파티션하려고 합니다. 중첩 ECalls을 피할 수 없는 경우, 엔클레이브 쓰기는 엄격하게 필요한 것만 재기 호출할 수 있는 ISV 인터페이스 기능을 제한해야 합니다.