本帖最后由 99628 于 2024-3-22 17:27 编辑
一、背景
某客户测试EDR,在超融合业务主机中(Windows server 2012)安装EDR全量版,运行一段时间后,主机出现页面缓冲池内存不断升高的情况。 二、问题现象 1.2024年2月23日,收到反馈,客户生产环境上,从进程管理器中看到页面缓冲池占用内存达到12.4GB,已提交内存达到14.1GB,机器上内存占用特别高,当内存跑满时,出现系统顶死的情况,重启后恢复正常(内存依旧不断上升)。 2.客户怀疑虚拟机中病毒,下载火绒进行病毒查杀,并无结果。 3.客户尝试卸载EDR,卸载后重启虚拟机,后续虚拟机状态恢复正常。 三、影响范围 影响客户业务系统正常使用。 四、问题处理过程 1.了解到安装EDR之后,内存上涨比较明显,在几天之内,已提交内存大小即可上涨到14.1GB的数量级,考虑内存泄漏。 2.在客户侧测试机器上(克隆原业务主机安装EDR进行场景复现),通过RAMMap工具分析,确认问题原因是由于分页内存占用过多导致,确认与应用层无关。然后通过poolmon工具分析,发现占用分页内存最高的TAG是FMfn。 3.通过TAG分析,可以基本确定是fltmgr(文件系统微过滤驱动管理器)模块在文件名称解析过程中分配的内存占用。为了确定该点,通过livekd采集内核态DUMP,然后windbg分析看到,该TAG确实由fltmgr分配。 4.尝试卸载EDR所有使用到文件系统微过滤框架的驱动后,发现依旧存在缓慢的内存泄漏,故作出合理猜测,可能是由于其他使用到文件系统微过滤框架的驱动导致的内存泄漏,或框架本身存在内存泄漏。 5.但是客户反映之前系统无EDR时一直正常可以使用,于是研发侧针对客户侧生产环境进行查看发现内存泄漏实际是存在的,只是泄漏比较缓慢。 6.测试环境上尝试卸载EDR后,进行了长时间的观察,发现两天内,内存占用由原本190MB左右上涨到了590MB左右,足以证明即使没有卸载EDR,内存泄漏依旧存在,只是泄漏相较缓慢许多。故考虑是由于fltmgr框架本身存在内存泄漏导致。 7.基本确定是由于fltmgr框架本身导致的内存泄漏。查找相关的已知的Windows问题及对应补丁,发现确实存在相关类似的问题及对应的补丁包。校验测试环境上fltmgr的版本,发现虽然测试环境上已经打过该补丁包,但fltmgr版本并未更新到补丁包中的文件版本。 8.研发同事尝试替换相关驱动,但替换后系统无法正式运行。 9.尝试更换纯净环境重新搭建业务,并安装EDR进行测试,在此期间研发同事发现类似案例是由于麻辣香锅病毒导致,参考案例针对测试环境进行专杀,后续观察后系统无异常。(工具使用方法:解压文件后,在文件目录下进入cmd,执行antirk -n -k后,重启虚拟机,后运行一次antirk -n -k,无查杀表明已经杀完 ) 10.客户侧搭建纯净环境搭建业务后安装EDR观察并无异常现象,进一步证实原环境中毒! 五、问题原因分析 根本原因:虚拟机中毒 EDR为啥无法查杀病毒? rootkit这类病毒edr可能不会直接查杀,这类病毒涉及驱动对抗,内核层的对抗存在风险可能导致系统重启影响业务等,因此这类规则并不会合入edr产品中,但有相关的专杀工具对这类病毒进行查杀。mlxg病毒通常是一些激活工具中带的,可以看下用户是否有相关工具的下载使用记录。 |