摘要:缓冲区溢出漏洞广泛存在于由不安全的高级语言所编写的程序中. 利用缓冲区溢出漏洞, 攻击者可以实现控制流劫持等危险攻击方式. 基于canary的栈保护技术是处理缓冲区溢出漏洞的一种简单有效且广泛部署的防御手段, 然而位置固定和取值相同的特点使其容易被攻击者分析和破解. 本文提出一种基于软件多样性的栈保护技术, 它以拥有随机化大小和偏移的异构canary为核心, 不仅能直接抵御常规canary无法处理的泄漏类和覆盖类攻击, 而且能构造出各种更加安全的多样性软件系统. 实验结果表明, 异构canary在有效提升安全性的同时仅为SPEC CPU 2017基准程序集额外引入了不高于2%的编译开销和平均3.22%的运行开销.