NIKKE PC 启动器供应链攻击植入后门
攻击者篡改了 Level Infinite CDN 上 NIKKE PC 启动器的四个官方脚本,植入远程控制代理 K2F;修复于 11 月 4 日发布。
TL;DR
- 攻击者篡改了 Level Infinite 内容分发网络上的四个官方 JavaScript 文件。NIKKE PC 启动器加载了这些文件,并可能安装名为 K2F 的远程控制代理。
- 从 9 月 27 日到 11 月 4 日修复期间打开过 PC 启动器的人都面临风险,包括 Windows、通过 Proton 运行的 Linux 和 Steam Deck,以及 Google Play Games 版本。报告的最早代理启动时间是 10 月 23 日。
- Level Infinite 于 11 月 4 日确认了篡改并替换了文件。该游戏下载量超过 4500 万。目前没有分配 CVE,截至 2026 年 11 月 5 日该事件未列入 CISA 的 KEV 目录。
- 清除启动器缓存,运行已发布的检查,如果存在 Chrome 持久化则将其移除,并从干净设备轮换所有凭据。请参阅“如何修复?”。
我受影响吗?
机器必须同时满足以下条件才会受影响:
- 在 2026-09-27(篡改文件出现在 CDN 上)到 2026-11-04 修复之间打开过 NIKKE PC 启动器。
- 启动器从网络或缓存执行了被篡改的文件。加载器只在部分启动时获取第二阶段包。
- 机器是 Windows、通过 Proton 运行启动器的 Linux 或 Steam Deck,或 Google Play Games 版本。移动客户端是另一个应用,不属于本事件。
报告的最早代理启动时间是 2026-10-23 16:40 GMT。加载器从 2026-09-27 起就已存在,报告称载荷只在部分启动时运行。一台机器在约 19 次启动中出现了 3 次。Google Play Games 版本安装到 C:\NIKKE_GOOGLE,运行 Launcher\nikke_launcher_google.exe,数据保存在 %APPDATA%\nikke_launcher_google。
| 版本 | 启动器 | 数据文件夹 | 暴露情况 |
|---|---|---|---|
| Windows | Launcher\nikke_launcher.exe |
%APPDATA%\nikke_launcher |
受影响到 11 月 4 日修复 |
| Windows HMT | HMT 启动器 | %APPDATA%\nikke_launcher_hmt |
受影响到 11 月 4 日修复 |
| Google Play Games | Launcher\nikke_launcher_google.exe |
%APPDATA%\nikke_launcher_google |
有报告称受影响 |
| Linux 和 Steam Deck | Proton 前缀内的启动器 | 前缀内的相同路径 | 受影响到 11 月 4 日修复 |
在启动器日志中查找代理标记:
# Windows PowerShell
Select-String -Path "$env:APPDATA\nikke_launcher\intl_service\debug.log" -Pattern "k2f_chan"
# Linux or Steam Deck, inside the Proton prefix
grep -i "k2f_chan" "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/nikke_launcher/intl_service/debug.log"
k2f_chan registered 表示代理已下载并运行。一次启动也可能在之后记录 startup failed: EIO: invalid UTF-8 in string,没有 adopted 或 agent started as 行,这仍然意味着代理运行过。
如何修复?
- 在再次打开启动器之前,运行“如何检查是否已遭入侵?”中的检查。启动器缓存保存了部分证据。
- 复制或删除启动器缓存文件夹。它可能仍保存被篡改的文件,启动器会再次加载它们。文件夹是
%APPDATA%\nikke_launcher\tbs_cache,其他版本是%APPDATA%\nikke_launcher_hmt\tbs_cache和%APPDATA%\nikke_launcher_google\tbs_cache。在 Proton 前缀中,它位于前缀内的相同路径。 - 在 hosts 文件、路由器或防火墙中阻止攻击者当前的域名和地址:
text
insightjs.com
analytics.insightjs.com
insightjs.org
89.127.233.127
89.126.250.172
这只能阻止今天已知的服务器。报告称攻击者如何获得 Level Infinite CDN 的写入权限仍不清楚,因此仍可能出现新域名。
4. 如果检查发现 k2f_chan,请按照“如果我已经安装了该怎么办?”操作。
5. 保持启动器更新。Level Infinite 于 11 月 4 日重建了前端并替换了四个文件。确认您的启动器加载报告列出的重建后脚本名。
供应商的变通方案是客户端更新和删除缓存。报告没有提供启动器代码的补丁,因为漏洞不在启动器二进制文件中:CDN 上的官方脚本被篡改。
恶意代码做了什么?
恶意代码是插入四个合法启动器脚本的加载器。它在启动器加载脚本时运行,解析命令与控制 URL,下载 LuaJIT 载荷,并在启动器进程内启动远程控制代理。
四个被篡改的文件是:
| 官方文件 | 加载的加载器 |
|---|---|
https://sg-gpts.playerinfinite.com/comm/assets/lib/aegis-fix.min.js |
https://insightjs.com/l.js?f=aegis |
https://na-webassets.playerinfinite.com/comm/nikke_launcher/assets/images.7fec4c32.js |
https://insightjs.com/l.js?f=images |
https://na-webassets.playerinfinite.com/comm/nikke_launcher/assets/FeedList.feb647c9.js |
https://insightjs.com/l.js?f=feedlist |
https://na-webassets.playerinfinite.com/comm/assets/lib/vue-bucket.min.js |
https://insightjs.com/l.js?f=vue |
注入的代码用整数数组隐藏 URL,表达式为 new TextDecoder().decode(new Uint8Array(new Uint32Array([...]).buffer))。它添加一个 <script> 标签,并在加载后将其移除。如果 insightjs.com 失败,它会改用 insightjs.org 重试。在 FeedList.feb647c9.js 中,新增的 708 字节位于最后的 export{...} 语句之前,因此只比较文件末尾的检查会漏掉它们。
加载器调用启动器自己的下载桥 Srv_DownloadFile,获取 https://analytics.insightjs.com/comm/assets/insight.bundle。分析的副本为 205,135 字节,SHA-256 为 cc0ad05bfe85940a6067b3a72c182d3953339129206634141926d5d0b35973ec。启动器用误导性的 .log 文件名将其保存到 Launcher\log\tinyget\,执行后删除。较早的版本将其保存为 k2f.lua 并留在磁盘上。该文件夹中任何以字节 1B 4C 4A 01 开头的文件都是代理。
该包是内部名称为 K2F_LUA_BUILD 的代理所用的 LuaJIT 2.0 字节码。它向启动器的 comm_center 注册 k2f_chan,然后响应服务器命令。代理本身不做任何事:每个操作都通过 l.js 来自操作者。
如何被利用?
- 玩家打开 NIKKE PC 启动器。
- 启动器向 Level Infinite 的 CDN 请求其正常的脚本文件。CDN 返回被篡改的副本。
- 插入的加载器构造
insightjs.comURL 并添加 script 标签。如果第一个域名失败,它会尝试insightjs.org。 l.js对启动器进行剖析,并调用启动器的Srv_DownloadFile桥从analytics.insightjs.com获取insight.bundle。- 启动器将包写入
Launcher\log\tinyget\,并通过其 LuaJIT 运行时执行。 - 代理注册
k2f_chan并连接命令与控制服务器。启动器打开期间,操作者可以发送命令。 - 在 Windows 上,操作者可以安装一个 Chrome DLL,在启动器关闭后继续运行。
除打开启动器外不需要任何用户交互。加载器在启动时运行,报告记录了 10 月 23 日以来的代理启动。
攻击如何展开?
四个被篡改的 CDN 文件添加一个加载器。加载器通过启动器自己的下载桥获取 LuaJIT 代理。代理在启动器进程内给操作者一个远程 shell。
NIKKE PC 启动器"] --> B["CDN 返回四个被篡改的
官方 JavaScript 文件"] B --> C["加载器请求
insightjs.com/l.js"] C --> D["l.js 调用 Srv_DownloadFile
获取 insight.bundle"] D --> E["启动器用 LuaJIT
执行该包"] E --> F["K2F 代理注册 k2f_chan
并连接命令服务器"] F --> G["启动器打开期间
操作者发送命令"]
攻击者能做什么?
操作者在启动器进程内拥有远程控制代理。代理可以运行玩家账号能运行的任何命令,读取和下载文件,截取屏幕,并收集保存的凭据。
公开的命令列表包括:
exec,运行任意程序或 shell 命令并返回输出。ls、cd、cat、download和file_chunk,浏览文件夹并复制任意文件。screens,截取每个显示器的屏幕。creds,解密启动器保存的 NIKKE 账号和密码。browserscan,读取 Chrome、Edge、Brave、Vivaldi、Opera 和 Firefox 中保存的密码,以及 Chromium 浏览器的 cookie。keyscan,读取 264 个凭据和配置路径,以及开发工具的 Windows 凭据管理器条目。wallet_files,读取 Chrome 配置文件中 28 个加密货币钱包扩展的数据。chrome_install,安装 Chrome DLL 持久化。
仅 exec 就允许操作者做用户能做的一切,包括安装其他恶意软件。标准 Windows 启动器的清单要求管理员权限,因此代理以提升权限运行,Chrome 和 Edge 的应用绑定加密路径可以生效。启动器打开时代理会一直活动,而启动器经常在游戏运行时留在通知区域。
影响需要玩家在暴露期间打开启动器。报告没有发现计划任务、Run 键、服务或启动文件夹的代码,因此持久化来自 Chrome DLL 或操作者发送的命令。
如果我已经安装了该怎么办?
- 关闭启动器或断开机器网络,使操作者失去访问。
- 删除 Windows 持久化。如果存在
HKCU\Software\Classes\CLSID\{E77CC89B-7401-4C04-8CED-149DB35ADD04},请将其删除。不要动 HKLM 副本:它属于 Windows。重启 Windows,因为 DLL 在加载期间保持锁定。 - 删除
%LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\下名称为 64 个十六进制字符且包含platform_experience_helper.dll的任何子文件夹。不要删除整个文件夹;Chrome 会为自己的助手创建它。 - 从干净设备先更改 NIKKE 和 Level Infinite 密码,然后更改电子邮件、Discord、银行以及浏览器中保存的所有密码。启用双因素认证。
- 注销 Discord、Google、Steam、GitHub 及其他服务的所有会话。浏览器 cookie 不需要密码即可使用。
- 轮换 API 令牌、SSH 密钥和开发者凭据,包括 GitHub、npm、AWS、OpenAI 和 Anthropic。
- 将加密货币钱包资金转移到具有新助记词的新钱包。
- 如果代理运行过,请重装 Windows。操作者可以执行任意命令,而 Microsoft Defender Offline 在一台机器上没有检测到该 DLL。
报告发布了只读检查器 NIKKE Launcher Check,支持 Windows、Linux 和 macOS。它查找加载器、代理和 DLL,并写出由您保存的报告。
如何检查是否已遭入侵?
供应商没有公布指标。独立报告公布了以下针对本事件的具体指标:
- 在
Launcher\intl_service\debug.log中搜索k2f_chan。lua downloaded to log\tinyget\、k2f_chan registered、adopted和agent started as行表示代理运行过。在删除缓存前复制日志。 - 列出
Launcher\log\tinyget\。名为tinyget.<time>.log或k2f.lua且以1B 4C 4A 01开头的文件是代理。 - 检查
%APPDATA%\nikke_launcher\tbs_cache\Code Cache\js\中的启动器 V8 代码缓存。加载器键dd65fa4d61079e7e_0、ce2fd3f1007a9fe9_0、1416c638b3830103_0和fd520c7c0f65c2d7_0分别对应aegis、images、feedlist和vue。 - 在
tbs_cache\Local Storage\leveldb\下的 Local Storage leveldb 中搜索k2f.agent.state。该状态在删除 NIKKE 文件夹后仍然存在。 - 检查
%LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\<64-hex>\platform_experience_helper.dll和“如果我已经安装了该怎么办?”第 2 步中的HKCUCLSID 键。 - 将网络日志与“如何修复?”中的域名和地址比较。在
playerinfinite.com请求之后解析insightjs.com是线索。
启动器的 debug.log 是追加写入而非覆盖,因此干净启动后仍可能保留旧记录。HTTP 缓存以 gzip 压缩保存被篡改的脚本,纯文本搜索找不到;请解压每个 gzip 流并搜索 String.fromCharCode(111,114,103)。没有痕迹的机器也可能运行过会自行清理的旧版本。
时间线
- 2026-09-27 06:41 至 06:42 GMT:Level Infinite CDN 上的四个官方 JavaScript 文件被篡改。
- 2026-10-23 16:40 GMT:受害者报告的最早代理启动。
- 2026-10-28 15:46 GMT:
FeedList.feb647c9.js在源站被替换为干净副本,但部分 CDN 服务器仍保留被篡改的副本。 - 2026-11-03 17:04 至 17:23 GMT:另外三个文件在 CDN 上被替换。
- 2026-11-04 03:12 至 03:21 GMT:最后检查的 CDN 服务器收到干净的
FeedList.feb647c9.js。 - 2026-11-04 03:13 GMT:Level Infinite 在 X 上的声明中确认篡改。
- 2026-11-04 11:20 GMT:检查的四个 CDN 服务器上所有文件均为干净。
常见问题
NIKKE 移动应用受影响吗?
没有证据表明移动应用受影响。被篡改的是 PC 启动器的脚本,报告覆盖 Windows、通过 Proton 的 Linux 和 Steam Deck,以及 Google Play Games 版本。Google Play Games 版本在 Windows 上运行,不在 Android 上。
我打开了启动器但没有看到警告,是否被感染?
不一定。载荷只在部分启动时运行,一台机器在约 19 次启动中出现了 3 次。检查日志中的 k2f_chan 和 tinyget 文件夹中的 LuaJIT 头。干净的日志降低可能性,但不能证明机器从未被感染。
现在打开启动器安全吗?
Level Infinite 替换了四个文件,11 月 4 日 11:20 GMT 检查的服务器上四个文件都干净。请先清除 tbs_cache,因为缓存仍可能保存被篡改的副本。报告称攻击者如何获得 CDN 写入权限仍不清楚。
这是勒索软件攻击吗?
没有报告勒索软件。该代理是远程访问工具,可以窃取凭据、cookie、钱包数据和文件。报告没有记录勒索信或加密。
有 CVE 吗?
截至 2026 年 11 月 5 日没有分配 CVE。该事件是官方脚本的供应链泄露,不是版本化软件包中的漏洞,供应商声明也没有给出标识符。
参考文献
- MotherSphere,“NIKKE PC launcher compromise (November 2026)”,技术报告和指标。https://gist.github.com/MotherSphere/d6c049a09ba8ac3085c51ee9df24a4e5 (2026 年 11 月 5 日检查)
- MotherSphere,“NIKKE Launcher Check”,只读检查器。https://github.com/MotherSphere/NIKKE-Launcher-Check (2026 年 11 月 5 日检查)
- Level Infinite,X 上的声明,2026 年 11 月 4 日。https://x.com/NIKKE_en/status/2117817602659770434 (2026 年 11 月 5 日检查)
- BleepingComputer,“NIKKE PC game launcher hacked to spread remote access, data-stealing malware”,2026 年 11 月 4 日。https://www.bleepingcomputer.com/news/security/nikke-pc-game-launcher-hacked-to-spread-remote-access-data-stealing-malware/ (2026 年 11 月 5 日检查)