通过阻止在应用程序 (英特尔® Software Guard Extensions) 应用程序中调用英特尔® SGX,减少安全漏洞。
找不到有关嵌套的 ecalls 为何会有害的文档。嵌套 的 ecall 是当 ecall 调用 ocall 而 ocall 调用 ecall 时。
"英特尔® Software Guard Extensions(英特尔® SGX)开发人员指南"解释道:
您应该注意,当做 OCall 时,它为嵌套的 ECalls 打开了大门。在飞地之外,试图查找漏洞的攻击者可能会调用任何作为 ECall 公开的 ISV 接口功能,以递归地调用飞地。当需要 OCall 时,您可以减少表面攻击阻止 ISV 接口功能,这样不允许嵌套的 ECalls。例如,您可以在飞地内存储状态信息(与正在进行中的 OCall 相对应)。但是,飞地不能依赖于 OCall 期间按特定顺序出现的嵌套 ECalls。最初,允许嵌套的 ECalls(OCall 期间 ECalls)并受飞地内保留的堆栈量限制。但是,ISV 应意识到,此类建筑会使得飞地的安全分析更加复杂。当需要嵌套的 ECalls 时,飞地写入器应该尝试以不同的方式对应用程序进行分区。如果无法避免嵌套的 ECalls,飞地编写器应该将可以递归调用的 ISV 接口函数限制为仅严格要求的函数。