生产环境中使用Address Sanitizer等Undefined Behavior Sanitizer是否可行?
Sanitizer生产环境部署相关问题解答
- 关于2016年提到的ASAN在生产环境的安全隐患问题,当前该领域已经做了大量优化适配,当年暴露的核心问题比如内存布局泄露、报错信息携带敏感地址、分配规则可被利用等,现在都有对应的配置项可以规避:可以通过编译参数屏蔽敏感符号输出、关闭地址打印,同时ASAN也已经适配了系统级的内存布局随机化能力,只要配置合理当年提到的安全隐患基本都能解决。
- 针对接收处理不可信输入的生产系统,是否使用UBSAN等检测工具要结合业务场景判断:如果业务可以接受10%以内的性能损耗,同时可以做到sanitizer报错信息不对外暴露、检测到异常直接终止进程,那非常推荐部署;如果业务对性能要求极高,或者无法控制报错信息的输出范围,则不建议使用。
- 合理配置的前提下,这类工具不会带来额外的安全风险,反而会降低漏洞的可利用性:新增的插桩逻辑核心是检测内存异常、未定义行为等问题,只要开了检测到异常直接终止执行的配置,比如UBSAN启用
-fno-sanitize-recover=all参数,原本可能被远程利用的内存损坏漏洞会直接变成进程崩溃,相当于把严重的远程代码执行风险降级为拒绝服务风险,不会提升漏洞被利用的可能性。你部署的是开源软件,也完全不需要担心插桩降低逆向难度的问题。
内容的提问来源于stack exchange,提问作者ambiso
相关产品推荐
相关产品推荐

