gpt4 book ai didi

c++ - 在生产中使用 Address Sanitizer 或其他未定义的行为 sanitizer ?

转载 作者:行者123 更新时间:2023-12-02 01:52:50 36 4
gpt4 key购买 nike

过去有人担心在某些环境中的生产中使用 ASAN:https://seclists.org/oss-sec/2016/q1/363 .评论来自 2016 年 - 今天的情况如何?

是否推荐使用 sanitizer here在用户设备上运行的生产系统中?应用程序从其他方接收不受信任的输入并以各种方式处理这些输入。

使用它们是否会产生与安全相关的影响?是否有任何添加的仪器实际上可以更轻松地远程利用错误?

我正在考虑的应用程序是开源的,因此在这种情况下简化逆向工程不是问题。

最佳答案

Sanitizers 是 primarily meant to be used as debug, not hardening tools,即用于验证阶段的错误检测,而不是生产中的错误预防。否则,它们可能会将敏感信息泄露给攻击者(通过在错误时将有关地址空间和库版本的详细信息打印到 stderr)或由于不受控制地使用环境变量而导致 obtain local root privileges。此外, sanitizer 可能会增加相当多的开销(2 倍减速对于 Asan 并不少见,1.5 倍对于 UBsan)。

一般来说, sanitizer 有时用于生产环境中的 A/B 测试,以增加覆盖率并检测逃过正常 QA 的错误。

Clang 有许多强化选项:强化(-D_FORTIFY_SOURCE=2)、ASLR(-fPIE)、堆栈保护(-fstack-protector-fsanitize=safe-stack)和控制流完整性(-fsanitize=cfi)(参见 Clang Hardening Cheatsheet详情)。它们的开销要小得多,专门用于生产。

更新(感谢@cisnjxqu):

UBsan supports the -fsanitize-minimal-runtime mode,提供简约、低开销的运行时库,应该不会增加应用程序的攻击面。

关于c++ - 在生产中使用 Address Sanitizer 或其他未定义的行为 sanitizer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70003639/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com