TGP/WeGame驱动导致WSL网络服务异常

TGP/WeGame驱动导致WSL网络服务异常

前些天突然发现WSL配置好的sshd没法用了,一直报异常,启动服务时提示

strace -ff -v -o sshdiag -r service ssh --full-restart
 * Stopping OpenBSD Secure Shell server sshd                                                                              [ OK ]
 * Starting OpenBSD Secure Shell server sshd                                                                                     
sshd: ../sysdeps/posix/getaddrinfo.c:2555: getaddrinfo: Assertion `IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed.
Aborted (core dumped)

然后紧接着发现Apache啊,vsftpd啊都没法用了。

好吧,那么就去WSL那边Github找找结果。一找发现,好像是火绒的问题(Github WSL issue #2142)?

于是联系火绒。火绒工程师也很奇怪,说我这边nginx没法复现这个问题啊?就远程过来看了看究竟怎么回事。这一看就发现,腾讯在TDI Translation Driver(tdx.sys)下面挂了个驱动,加载了system32\drivers\QMTgpNetflow764.sys,并且将驱动加载写入了Services\QqGameMasterControl下面。关闭此驱动加载重启后,问题消失。

然后去system32\drivers下面一看,还不止一个驱动,总共有5个QMTgpNetflow开头的驱动文件……

附图:

QMTgpNetflow764.sys的签名,MS和腾讯
驱动的加载项
QMTgp驱动文件
红箭头的位置是驱动之前加载并hook的位置

所以WSL有异常的各位建议先把Wegame之类的毒瘤给清理下。

备注:sshd的strace文件:

https://gist.github.com/mingl0280/a728b9d18d634cfe00b985eee5ff4198gist.github.com

编辑于 2018-02-09