2026/02/12 gbhackers — 新たに発見された悪意の npm パッケージ duer-js が、主に Windows システムおよび Discord ユーザーを標的とする、高度な情報窃取型マルウェアを配布するために展開されている。このパッケージは、luizaearlyx というユーザーにより公開されており、”Bada Stealer” という名のカスタム・インフォスティーラーを含んでいる。この問題が報告された時点でも公開状態にあり、プロジェクトに組み込んでしまった開発者にとって深刻な懸念材料となっている。

ダウンロード数は比較的少ないが、下流における標的範囲の広さにより、1 件の感染であっても深刻な影響を及ぼす可能性がある。
このパッケージの、主なエントリー・ポイントは index.js ファイルであり、eval() 呼び出しの中で、数万文字規模の極めて長い JavaScript コードが 1 行で記述されている点が特徴である。
このコードはきわめて難読化されたものであり、URI エンコードの多層化/動的評価/XOR ベースの文字列復号などが組み合わされている。それにより解析を遅延させ、悪意のコードに対する理解を困難にしている。
JFrog のセキュリティ・リサーチ・チームが、npm 上で公開された duer-js パッケージを解析した。
最初の復号ステージでは、コードにおける改変の有無を検査するスクリプトが再構築される。改竄が検出された場合には、エラー・メッセージを表示して停止する仕組みとなっており、研究者に対するアンチ解析機構として機能している。
Duer-js npm パッケージを発見
難読化の内部では、小さな関数呼び出しを、実際の変数名やモジュール名へ対応付ける文字列変換テーブルが構築される。
このテーブルは、実行時に XOR キーを用いて復号され、間接参照関数を実際の値へ置き換えることで、元のソースコードに近い形のマルウェアを復元できる。

この手法により、攻撃者自身は可読性を保ちながら、静的解析ツールや簡易な手動レビューからロジックを隠蔽している。
この Bada Stealer が実行されると、特定のプロセスが強制的に終了され、ホストからの機密情報収集が開始される。
標的は Chrome/Edge/Brave/Opera/Yandex といった、主要な Chromium ベース・ブラウザであり、ローカル・データベースや Web Data ファイルから、パスワード/Cookie/自動入力データ/保存済みクレジットカード情報を抽出する。
さらに、Exodus や人気の暗号資産ウォレットに関連するデータや、Steam 設定ファイルも、圧縮して外部へ送信する。それに加えて、ホスト名/OS バージョン/RAM 容量/CPU コア数/公開 IP アドレスといったシステム情報も収集され、被害端末の状況把握に利用される。
Discord も、主要な標的の一つである。Windows 上にインストールされた複数の Discord バリアントを列挙し、%APPDATA% および %LOCALAPPDATA% 配下の LevelDB ストレージからトークンおよびユーザーデータを抽出する。
こうして取得したトークンを悪用することで、ユーザー・プロフィール情報/Nitro ステータス/課金情報/フレンド一覧/ギルド情報に加えて、ディスク上に保存された 2FA バックアップ・コードまで取得可能になる。
Bada Stealer マルウェア
収集データはリッチ・エンベッド (埋め込み) 形式に整形され、Cookie 数/パスワード数/クレジットカード数/自動入力件数/ウォレット情報/Steam データなどの件数とともに、ハードコードされた Discord Webhook へ送信される。
信頼性向上のため、正規ファイル共有サービス Gofile を用いた、第 2 のデータ流出経路も実装されている。
このマルウェアは、Gofile API から利用可能サーバを取得し、窃取アーカイブをアップロードする。取得したダウンロード URL は、前述の Discord Webhook に送信され、攻撃者による回収が可能になっている。
この多層的なデータ流出設計により、正規ホスティング・サービスへの通信に悪意のトラフィックを混在させることで、遮断やテイクダウンが困難となる。
重要なことは、duer-js がローカル・データ窃取で終わらない点である。初期ペイロードが外部ホスティング・サービスから取得するのは、同様に難読化された第 2 段階の JavaScript ペイロードであり、Discord デスクトップ・アプリの Electron 環境へ注入されるため、Discord 自身の index.js ファイルも上書きされる。
そのため、次回にユーザーが Discord を起動するときに、この第 2 段階のペイロードがクライアント内部で実行され、webContents にデバッガがアタッチされ、”/login、/register、/mfa/totp、/codes-verification” などの、特定のネットワーク・イベントが監視されてしまう。
Network.getResponseBody や Network.getRequestPostData といった API を用いることで、正規サーバへ送信される前の平文の段階で、メールアドレス/パスワード/セッショントークン/2FA コード/バックアップコードに加えて、カード番号/CVC/有効期限などの支払情報まで取得されてしまう。
第 2 段階のペイロードには、簡易的な永続化機構および GitHub ホストのスクリプトを参照する自己更新機構も含まれている。そこから示唆されるのは、このマルウェア・ファミリーが少なくとも 2 年以上は存在していることだ。
単に悪意の npm パッケージをアンインストールするだけでは、注入済み Discord コードやスタートアップ領域にコピーされた追加ファイルは削除されない。そのため、感染端末は侵害済みとして扱う必要がある。
推奨される対処は以下の通りである。
- duer-js をアンインストールする。
- 漏洩の可能性がある全ての認証情報およびトークンを失効/再発行する。
- ローカルデータ・ディレクトリ削除後に、Discord を再インストールする。
- Windows スタートアップ・フォルダに残存する node.exe など関連実行ファイルを手動で確認/削除する。
npmのような信頼されているサプライチェーンにおいて、難読化された JavaScript を用いることで、セキュリティ製品による検出を回避しながら、Discordなどのアプリ内部を書き換えてしまう手法が確立されているようです。この脅威アクターは、実行時の動的評価機能を用いることで、セキュリティ製品の検知を回避しながらブラウザの機密情報や Discord の認証トークンを盗み出します。さらに、Discord アプリ自体の内部ファイルを書き換えてしまうため、単にパッケージを削除するだけでは不十分であり、二段階認証コードや支払い情報が継続的に盗まれるリスクが残ります。ご利用のチームは、ご注意ください。よろしければ、Info Stealer での検索結果も、ご参照ください。


You must be logged in to post a comment.