我们的 AI 引擎 Neutron 在加州大学伯克利分校的 CyberGym 基准测试中取得了 97.1% 的成绩。 了解更多

深度解析

深度解析

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 行,这仍然意味着代理运行过。

如何修复?

  1. 在再次打开启动器之前,运行“如何检查是否已遭入侵?”中的检查。启动器缓存保存了部分证据。
  2. 复制或删除启动器缓存文件夹。它可能仍保存被篡改的文件,启动器会再次加载它们。文件夹是 %APPDATA%\nikke_launcher\tbs_cache,其他版本是 %APPDATA%\nikke_launcher_hmt\tbs_cache 和 %APPDATA%\nikke_launcher_google\tbs_cache。在 Proton 前缀中,它位于前缀内的相同路径。
  3. 在 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 来自操作者。

如何被利用?

  1. 玩家打开 NIKKE PC 启动器。
  2. 启动器向 Level Infinite 的 CDN 请求其正常的脚本文件。CDN 返回被篡改的副本。
  3. 插入的加载器构造 insightjs.com URL 并添加 script 标签。如果第一个域名失败,它会尝试 insightjs.org。
  4. l.js 对启动器进行剖析,并调用启动器的 Srv_DownloadFile 桥从 analytics.insightjs.com 获取 insight.bundle。
  5. 启动器将包写入 Launcher\log\tinyget\,并通过其 LuaJIT 运行时执行。
  6. 代理注册 k2f_chan 并连接命令与控制服务器。启动器打开期间,操作者可以发送命令。
  7. 在 Windows 上,操作者可以安装一个 Chrome DLL,在启动器关闭后继续运行。

除打开启动器外不需要任何用户交互。加载器在启动时运行,报告记录了 10 月 23 日以来的代理启动。

攻击如何展开?

四个被篡改的 CDN 文件添加一个加载器。加载器通过启动器自己的下载桥获取 LuaJIT 代理。代理在启动器进程内给操作者一个远程 shell。

flowchart LR A["玩家打开
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 或操作者发送的命令。

如果我已经安装了该怎么办?

  1. 关闭启动器或断开机器网络,使操作者失去访问。
  2. 删除 Windows 持久化。如果存在 HKCU\Software\Classes\CLSID\{E77CC89B-7401-4C04-8CED-149DB35ADD04},请将其删除。不要动 HKLM 副本:它属于 Windows。重启 Windows,因为 DLL 在加载期间保持锁定。
  3. 删除 %LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\ 下名称为 64 个十六进制字符且包含 platform_experience_helper.dll 的任何子文件夹。不要删除整个文件夹;Chrome 会为自己的助手创建它。
  4. 从干净设备先更改 NIKKE 和 Level Infinite 密码,然后更改电子邮件、Discord、银行以及浏览器中保存的所有密码。启用双因素认证。
  5. 注销 Discord、Google、Steam、GitHub 及其他服务的所有会话。浏览器 cookie 不需要密码即可使用。
  6. 轮换 API 令牌、SSH 密钥和开发者凭据,包括 GitHub、npm、AWS、OpenAI 和 Anthropic。
  7. 将加密货币钱包资金转移到具有新助记词的新钱包。
  8. 如果代理运行过,请重装 Windows。操作者可以执行任意命令,而 Microsoft Defender Offline 在一台机器上没有检测到该 DLL。

报告发布了只读检查器 NIKKE Launcher Check,支持 Windows、Linux 和 macOS。它查找加载器、代理和 DLL,并写出由您保存的报告。

如何检查是否已遭入侵?

供应商没有公布指标。独立报告公布了以下针对本事件的具体指标:

  1. 在 Launcher\intl_service\debug.log 中搜索 k2f_chan。lua downloaded to log\tinyget\、k2f_chan registered、adopted 和 agent started as 行表示代理运行过。在删除缓存前复制日志。
  2. 列出 Launcher\log\tinyget\。名为 tinyget.<time>.log 或 k2f.lua 且以 1B 4C 4A 01 开头的文件是代理。
  3. 检查 %APPDATA%\nikke_launcher\tbs_cache\Code Cache\js\ 中的启动器 V8 代码缓存。加载器键 dd65fa4d61079e7e_0、ce2fd3f1007a9fe9_0、1416c638b3830103_0 和 fd520c7c0f65c2d7_0 分别对应 aegis、images、feedlist 和 vue。
  4. 在 tbs_cache\Local Storage\leveldb\ 下的 Local Storage leveldb 中搜索 k2f.agent.state。该状态在删除 NIKKE 文件夹后仍然存在。
  5. 检查 %LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\<64-hex>\platform_experience_helper.dll 和“如果我已经安装了该怎么办?”第 2 步中的 HKCU CLSID 键。
  6. 将网络日志与“如何修复?”中的域名和地址比较。在 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 服务器上所有文件均为干净。

加载器在被供应商确认篡改并替换文件之前存在了五周
图 1:从被篡改的 CDN 文件到供应商修复。来源:MotherSphere 的事件报告和 Level Infinite 的声明,2026 年 11 月 5 日检查

常见问题

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 日检查)