一句话:提出 ProbeGuard,在信息隐藏基线与完整性防御间按需热补丁切换,兼顾性能与安全。
针对代码复用防御中信息隐藏方案易受探测攻击的问题,本文指出信息隐藏与完整性防御并非二元对立,而是连续谱系的两端。ProbeGuard 先部署已有的信息隐藏基线防御,并在检测到探测攻击时通过热补丁逐步启用更强的完整性防御,从而在性能与安全之间自动权衡。评估表明其高效且提供强安全保证,并能随着探测原语的出现优雅地牺牲性能。
Many modern defenses against code reuse rely on hiding sensitive data such as shadow stacks in a huge memory address space. While much more efficient than traditional integrity-based defenses, these solutions are vulnerable to probing attacks which quickly locate the hidden data and compromise security. This has led researchers to question the value of information hiding in real-world software security. Instead, we argue that such a limitation is not fundamental and that information hiding and integrity-based defenses are two extremes of a continuous spectrum of solutions. We propose a solution, ProbeGuard, that automatically balances performance and security by deploying an existing information hiding based baseline defense and then incrementally moving to more powerful integrity-based defenses by hotpatching when probing attacks occur. ProbeGuard is efficient, provides strong security, and gracefully trades off performance upon encountering more probing primitives.