Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1145

影子栈

审核人Cybersecurity entrepreneur & security researcher

影子栈 是什么?

影子栈影子栈是一条独立且受保护的栈,用于保存返回地址副本,使 CPU 能在正常栈被篡改时检测并阻止 ROP 攻击。


影子栈与传统调用栈并行运行:每次函数调用都会将返回地址同时压入两条栈,返回时比较两者是否一致,不一致则触发陷阱并终止进程,以避免使用被篡改的返回地址。该机制由 CFI 研究论文推广,如今在硬件中分别由 Intel CET 影子栈和 Arm v8.5-A Guarded Control Stack(GCS)实现。也存在纯软件实现(LLVM SafeStack、clang -fsanitize=safe-stack),但性能与隔离成本较高。影子栈解决了 CFI 的后向边问题,前向边的间接调用仍需 CFI/IBT 等机制配合。

示例

  1. 01

    Windows 11 在支持 CET 的 CPU 上强制启用用户态影子栈。

  2. 02

    Arm GCS 检测到栈缓冲区溢出篡改了保存的 LR。

常见问题

影子栈 是什么?

影子栈是一条独立且受保护的栈,用于保存返回地址副本,使 CPU 能在正常栈被篡改时检测并阻止 ROP 攻击。 它属于网络安全的 应用安全 分类。

影子栈 是什么意思?

影子栈是一条独立且受保护的栈,用于保存返回地址副本,使 CPU 能在正常栈被篡改时检测并阻止 ROP 攻击。

如何防御 影子栈?

针对 影子栈 的防御通常结合技术控制与运营实践,详见上方完整定义。

影子栈 还有哪些其他名称?

常见的别称包括: 返回栈, 安全栈, GCS。

相关术语