问题表现
近期用户在使用谷歌Chrome及微软Edge浏览器时,出现网页崩溃无法访问的情况
chrome
edge
原因分析
根据错误提示,检查日志,系C:\Windows\System32\winhafnt64.dll文件不符合微软签名规则导致的冲突
根据提示信息,检查到该文件发行公司为T.E.C Solutions (GZ,)Limited,查询该公司为广州溢信,怀疑与IPGuard软件有关。卸载用户电脑上的IPGuard后故障消失,因此定位到冲突软件为IPGuard。
汇总网络消息,导致这个问题的原因是:
win10系统中,谷歌Chrome及微软Edge Chromium浏览器在78、79版本启用了渲染器代码完整性保护(Renderer Code Integrity Protection)(从该版本开始出现冲突崩溃的问题),防止未经签名的模块被加载至Chrome浏览器的渲染器进程中。
这个功能与IPGuard、symantec等安全软件存在冲突,会导致浏览器无法启动,提示浏览器崩溃,IPGuard客户端当时采取的处理方案是给浏览器添加命令行参数--disable-features=RendererCodeIntegrity禁止该功能。
后来,谷歌Chrome浏览器从118版本开始,默认启用了该功能,通过上面更改参数的方法会失效,在这种情况下,只要有非微软签名的模块尝试注入Chrome的renderer进程就会导致浏览器启动失败。
解决方法
临时性解决方法
- 对于谷歌Chrome,使用117及以下版本,并修改注册表键值,取消自动升级
- 对于谷歌Chrome,使用全局兼容模式(仅适用于32位版本)
- 禁用沙盒功能,快捷方式添加参数" --no-sandbox"
- 对于旧版IPGuard,增加自定义策略,取消对浏览器的注入
可以为IPGuard增加自定义策略,屏蔽对Chrome及Edge浏览器进程执行主动注入
关键字:hookapi_filterinj_external
内容:chrome.exe;msedge.exe
以上临时性解决方法均有其不足之处
比如,用户在使用过程中可能会在无意中升级浏览器版本
使用禁用沙盒功能,一方面在打开浏览器后会出现系统提示
另一方面,对于用户之前已经保存过的网页快捷方式无效,用户需要先在无沙盒模式下打开浏览器,再手动访问目的网页,比较麻烦
永久性解决方法
IPGuard升级至最新版本
最新发布的IPGuard版本,针对以上问题,IPGuard客户端采取的处理方案是在注入模块前判断当前进程是否存在数字签名验证策略,是则不注入模块,这种方法只能让IPGuard客户端模块不会强制加载到这些浏览器进程当中,但是需要注意的是,还可能存在其它软件未进行相应处理尝试直接注入到浏览器进程引起问题。