NIKKE PC ランチャーのサプライチェーン攻撃がバックドアをインストール
攻撃者が Level Infinite の CDN 上にある NIKKE PC ランチャーの公式スクリプト 4 本を改ざんし、遠隔操作エージェント K2F をインストールしました。修正は 11 月 4 日に提供されました。
要点
- 攻撃者が Level Infinite のコンテンツ配信ネットワーク上の公式 JavaScript ファイル 4 本を改ざんしました。NIKKE PC ランチャーがそれらを読み込み、K2F と呼ばれる遠隔操作エージェントをインストールする可能性がありました。
- 9 月 27 日から、11 月 4 日の修正までの間に PC ランチャーを開いた人は、Windows、Proton 経由の Linux と Steam Deck、または Google Play Games 版で影響を受ける可能性があります。報告された最初のエージェント起動は 10 月 23 日です。
- Level Infinite は 11 月 4 日に改ざんを確認し、ファイルを差し替えました。ゲームのダウンロード数は 4,500 万件を超えます。CVE は割り当てられておらず、2026 年 11 月 5 日時点でこのインシデントは CISA の KEV カタログに登録されていません。
- ランチャーのキャッシュを削除し、公開された確認を実行し、Chrome の永続化があれば削除し、クリーンな端末からすべての資格情報をローテーションしてください。詳しくは「修正方法」を参照してください。
影響を受けますか?
次の条件がすべて揃うと、マシンが影響を受けます。
- NIKKE PC ランチャーを 2026-09-27(改ざんされたファイルが CDN に現れた日)から 2026-11-04 の修正までの間に開いた。
- ランチャーが改ざんされたファイルをネットワークまたはキャッシュから実行した。ローダーが第 2 段階のバンドルを取得したのは一部の起動時だけでした。
- マシンが 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 日にフロントエンドを再構築し、4 本のファイルを差し替えました。ランチャーが報告に記載された再構築後のスクリプト名を読み込むことを確認してください。
ベンダーの対策はクライアントの更新とキャッシュの削除です。報告はランチャーのコードに対する修正を提供していません。脆弱性はランチャーのバイナリにあるのではなく、CDN 上の公式スクリプトが改ざんされたためです。
悪意あるコードは何をしますか?
悪意あるコードは、正規のランチャースクリプト 4 本に挿入されたローダーです。ランチャーがスクリプトを読み込むと実行され、命令サーバーの URL を解決し、LuaJIT のペイロードをダウンロードし、ランチャーのプロセス内で遠隔操作エージェントを起動します。
改ざんされた 4 本のファイルは次のとおりです。
| 公式ファイル | 読み込むローダー |
|---|---|
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.comの URL を組み立て、script タグを追加します。最初のドメインが失敗するとinsightjs.orgを試します。 l.jsがランチャーを調べ、ランチャーのSrv_DownloadFileブリッジを呼び、analytics.insightjs.comからinsight.bundleを取得します。- ランチャーがバンドルを
Launcher\log\tinyget\に書き込み、LuaJIT ランタイムで実行します。 - エージェントが
k2f_chanを登録し、命令サーバーに接続します。オペレーターはランチャーが開いている間にコマンドを送れます。 - Windows では、オペレーターがランチャーを閉じた後も動作する Chrome DLL をインストールできます。
ランチャーを開く以外のユーザー操作は不要です。ローダーは起動時に実行され、報告は 10 月 23 日以降のエージェント起動を記録しています。
攻撃の流れは?
改ざんされた CDN の 4 本のファイルがローダーを追加します。ローダーはランチャーのダウンロードブリッジを通じて LuaJIT エージェントを取得します。エージェントはランチャーのプロセス内でオペレーターに遠隔アクセスを与えます。
ランチャーを開く"] --> B["CDN が改ざんされた公式
JavaScript 4 本を返す"] 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は任意のプログラムやシェルコマンドを実行し、出力を返します。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 のものなので残します。DLL は読み込まれている間ロックされるため、Windows を再起動します。 %LOCALAPPDATA%\Google\Chrome\User Data\PlatformExperienceHelper\の下で、名前が 64 文字の 16 進文字列で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 を検出しませんでした。
報告は Windows、Linux、macOS 用の読み取り専用チェッカー NIKKE Launcher Check を公開しています。ローダー、エージェント、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 4 本が改ざんされました。
- 2026-10-23 16:40 GMT: 被害者が報告した最も早いエージェント起動。
- 2026-10-28 15:46 GMT:
FeedList.feb647c9.jsがオリジンでクリーンなコピーに差し替えられましたが、一部の CDN サーバーは改ざんされたコピーを保持しました。 - 2026-11-03 17:04 から 17:23 GMT: 残り 3 本のファイルが 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: 確認した 4 つの CDN サーバーですべてのファイルがクリーンでした。
よくある質問
NIKKE のモバイルアプリは影響を受けますか?
モバイルアプリが影響を受けるという証拠はありません。改ざんされたのは PC ランチャーのスクリプトで、報告は Windows、Proton 経由の Linux と Steam Deck、Google Play Games 版を対象にしています。Google Play Games 版は Windows で動作し、Android ではありません。
ランチャーを開いたが警告は見ませんでした。感染しましたか?
必ずしもそうではありません。ペイロードは一部の起動時だけ実行され、あるマシンでは約 19 回の起動のうち 3 回でした。ログの k2f_chan と tinyget フォルダーの LuaJIT ヘッダーを確認してください。クリーンなログは可能性を下げますが、感染していない証明にはなりません。
今ランチャーを開いても安全ですか?
Level Infinite は 4 本のファイルを差し替え、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 日確認)