TL; DR
2026年5月1日から5月6日の間に、単一のnpmパブリッシャーが、 alone55118 つの依存関係のないパッケージをプッシュしました。 Microsoft Azure スタイルの内部パッケージ名前空間。
パッケージには次のような名前が使われていました cosmos-explorer, ms.analytics-web, icons.generated, latency-tracking-internal, carbonite-internal, carboniteappいくつかのバージョンでは、次のような高いセマンティックバージョニング値を使用しました。 99.9.0 (NAIST) と 99.9.13これは、プライベートな内部パッケージよりも上位に表示させるために考案された、一般的な依存関係の混乱戦術です。
8つの兄弟パッケージはすべて、2026年5月1日から5月6日の間に発行者によってnpmから非公開にされていました。レジストリのメタデータを直接確認したところ、tarballは現在npm CDNからHTTP 404エラーを返していることが分かりました。
しかし、クラスターの存在は依然として重要である。
標準サンプル内のペイロード、 carbonite-internal:99.9.0 (NAIST) と carboniteapp:99.9.0インストール時に実行される preinstall フック。ホストのフィンガープリントデータを収集し、マシンのパブリック IP を取得します。 api.ipify.org偽の「プロレベルの情報レポート」を作成し、ホストをマークします。 RCE VERIFIEDそして、Telegram Bot API を介してレポートを Telegram ボットに送信します。
Xygeniのマルウェア早期警告システム(MEW) システムは、正規サンプルを91/100以上のスコアで悪意のある可能性が高いと分類しました。
これは、インストール時のホストフィンガープリンティングとTelegramビーコンからの情報漏洩を伴う、マイクロソフト内部の名称依存関係の混乱を利用したキャンペーンとして追跡調査しています。
クラスター:8つのパッケージ、1つの出版社
出版社アカウント alone5511 以下のメールアドレスを使用しました:
アカウントには確認済みのメールアドレスがなく、 SCM 検証済み、npmの評判スコアは2。
参照されたGitHub ID、 alonebeast002/beastcryptクラスターのコンテキストにも現れた。
出版社は6日間で8つの関連パッケージをリリースした。すべてのパッケージは依存関係がなく、小型パッケージ、インストール時スクリプト、ホストフィンガープリンティング、Telegramビーコン送信という共通のパターンに従っていた。
| # | パッケージ | 悪意のあるバージョン | 作成日時、UTC | 未公開、UTC | ペイロード確認済み | フックを取り付ける |
|---|---|---|---|---|---|---|
| 1 | 宇宙探検家 | 1.1.3 | 2026-05-01T18:26Z | 2026-05-01T19:01Z | 推測、同じ出版社/クラスター | インストール前、想定 |
| 2 | signalsdk-web | 1.0.0、10.0.0 | 2026-05-04T13:57Z | 2026-05-04T18:51Z | 推論 | インストール前、想定 |
| 3 | ms.analytics-web | 99.0.0、99.9.13 | 2026-05-04T18:47Z | 2026-05-05T10:07Z | 推論 | インストール前、想定 |
| 4 | アイコン生成 | 99.9.13 | 2026-05-05T10:02Z | 2026-05-05T12:57Z | 推論 | インストール前、想定 |
| 5 | レイテンシー追跡 | 99.9.0 | 2026-05-05T11:57Z | 2026-05-05T12:57Z | 推論 | インストール前、想定 |
| 6 | レイテンシー追跡内部 | レジストリレコードから削除されたバージョン | 2026-05-06T06:02Z | 2026-05-06T08:35Z | 推論 | インストール前、想定 |
| 7 | carboniteapp | 99.9.0 | 2026-05-06T05:49Z | 2026-05-06T08:35Z | はい、完全なスキャナコードフロー | インストール前: node index.js |
| 8 | 炭酸塩内部 | 99.9.0 | 2026-05-06T06:14Z | 2026-05-06T08:36Z | はい、完全なスキャナコードフロー | インストール前: node index.js |
クラスター全体における悪意のあるバージョンタプルの総数: 9+.
一部の兄弟パッケージのレコードは、非公開後にバージョン情報が削除されているため、公開レジストリデータだけでは正確な復元が困難です。
名前が重要な理由
パッケージ名が最も強力な指標となる。
これらは、内部SDK、テレメトリ、アイコン生成、エクスプローラー、またはレイテンシ追跡パッケージのように見えます。
これはランダムな命名ではありません。調整されているようです。 依存関係の混乱.
後期のパッケージのいくつかは、高いバージョン番号を使用していた。
これは重要な点です。なぜなら、依存関係の混同を利用した攻撃は、多くの場合、公開パッケージのバージョンが内部のプライベートレジストリパッケージのバージョンよりも高いことに依存しているからです。ビルドシステムの設定が間違っている場合、パッケージマネージャーは本来の内部バージョンではなく、公開されているnpmバージョンを選択してしまう可能性があります。
出版社も時間の経過とともに規模を拡大しているようだ。
初期のパッケージでは、次のような通常の見た目のバージョンが使用されていました。 1.1.3 (NAIST) と 1.0.0後からパッケージが移動しました 99.x.x (NAIST) と 99.9.xこの変化は、内部的なパッケージ解決動作に合わせてキャンペーンを調整するアクターの存在と一致する。
インストール時に何が起こるか
標準サンプル、 carbonite-internal:99.9.0 (NAIST) と carboniteapp:99.9.0宣言する preinstall 針:
つまり、ペイロードはnpmが依存関係のインストールを完了する前に実行されるということです。
これは、インストール時に可能な限り早い段階で利用できる足がかりです。開発者はパッケージをインポートする必要はありません。ビルド時にアプリケーションコードを実行する必要もありません。インストール自体で十分です。
ペイロードは小さく、約2.4KBで、ビーコン送信以外の機能的な目的はない。
ペイロードの動作
その index.js このファイルは主に4つの動作を実行します。
まず、 api.ipify.org ホストのパブリックIPアドレスを取得するには:
第二に、Node.js OS APIを使用して基本的なホストフィンガープリンティングデータを収集します。
第三に、収集したデータを、明確なバナー付きの複数行レポートにフォーマットします。
報告書は次のように締めくくられている。
第四に、レポートをTelegramに送信する sendTelegram(report) Telegram Bot APIエンドポイントを使用した関数:
Telegramボットの正確なトークンは、未公開のtarball内に保存されており、npmの内部ストレージから復元できるはずです。
「RCE VERIFIED」バナーが重要な理由
文字通り RCE VERIFIED マーカーは運用上重要な意味を持つ。
このペイロードはバックドアを仕掛けません。永続的に動作することもありません。クラウド認証情報を直接盗み出すこともありません。その代わりに、パッケージのインストール中にコードの実行が行われたことを確認します。
それは、依存関係の混乱を利用した実行証明キャンペーンを行うには十分である。
攻撃者が標的環境からTelegramメッセージを受信した場合、公開されているnpmパッケージが実際のホスト、CIランナー、開発者ワークステーション、またはビルド環境内で解決され、実行されたことが分かります。
つまり、このマルウェアは単にホストのメタデータを収集しているだけではない。標的のパッケージ解決機能が悪用可能かどうかを検証しているのだ。
Xygeni MEW分類
Xygeni MEWは標準サンプルを次のように分類しました。 おそらく悪意のある91/100以上のスコアを獲得。
検出された項目は以下のとおりです。
| 重大度 | 検出 | 意味 |
|---|---|---|
| クリティカル | 機密データの漏洩 | req.write(data) はホストフィンガープリントレポートをTelegram POSTの送信メッセージに渡します。 |
| ハイ | 悪意のあるインストールスクリプト | インストール前: node index.js はインストール時にビーコンをトリガーします |
| ロー | 不審なリクエスト | api.ipify.org を通じたパブリック IP の検出 |
| ロー | 不審なリクエスト | Telegram Bot API アウトバウンドエンドポイント |
| ロー | トリビアルパッケージ | パッケージにはビーコン機能以外に意味のある用途はありません |
| インフォ | 機密データ列挙 | 稼働時間、ユーザー情報、ホスト名などのホストの詳細が列挙されます。 |
両方 carbonite-internal:99.9.0 (NAIST) と carboniteapp:99.9.0 ペイロードは同一で、コードフローIDやバイト単位のインストールスクリプトも同じだった。
MEWのパブリッシャー・プロジェクト・インデックスは、8つのパッケージすべてを同じパブリッシャー/ペイロード・クラスターの一部として分類した。
自己出版停止のパターンが重要な理由
8つの姉妹パッケージはすべて、発売後数分から数時間以内に出版社によって発売中止となった。
その行動は重要です。
正規のメンテナーがパッケージの公開を停止することは時折あるが、今回のタイミングは攻撃者によるクリーンアップのように見える。パッケージは出現し、ターゲットによって解決された場合はインストール時のペイロードを実行した後、公開レジストリから姿を消した。
それは守備側にとって2つの問題を生み出す。
まず、公開されたnpmメタデータは、非公開後に不完全になります。一部のバージョン記録が削除されたり、再構築が困難になったりする可能性があります。
第二に、現在のレジストリの状態に依存する防御側は、脆弱性が露呈した期間中に存在していたものの、現在はインストールできなくなっているパッケージを見落とす可能性がある。
そのため、npmはフォレンジック調査のために、未公開のtarballを内部的に保存しておくべきである。 Telegramボット tarball内のトークンは、受信チャネルを列挙し、潜在的な被害者を特定するのに役立つ可能性がある。
侵害および検出の指標
発行者とアカウント
| フィールド | 値 |
|---|---|
| npmユーザー名 | alone5511 |
| npmパブリッシャーのメール | raistargaming703@gmail.com |
| npmの評判 | 2 |
| メール認証済み | いいえ |
| SCM 認証済 | いいえ |
| 参照されたGitHub ID | alonebeast002/beastcrypt |
影響を受けるパッケージ名
疑わしいバージョンパターン
これらの上位バージョンは、プライベートパッケージのバージョンよりも優先順位が高い可能性があるため、依存関係の混同に関する調査において特に重要です。
ネットワークエンドポイント
| タイプ | 値 |
|---|---|
| パブリックIPプローブ | https://api.ipify.org |
| 排水用シンク | https://api.telegram.org/bot<token>/sendMessage |
| 浸出法 | Telegram Bot API POST |
ペイロードマーカー
インストールスクリプト内で以下の文字列を検索します。
また、このマニフェストパターンにもフラグを立ててください。
特に以下のものと組み合わせた場合:
- ゼロの依存関係
- 超小型パッケージサイズ
- 内部的なパッケージ名
- 上位セマンティックバージョニングバージョン
- ホストフィンガープリンティングAPI
- Telegram Bot API のトラフィック
ホストフィンガープリンティングAPI
標準ペイロードは以下を使用します。
また、以下の人々にも働きかけます。
ホストのパブリックIPアドレスを取得する。
検出メモ
このキャンペーンや類似のキャンペーンは、いくつかのルールで捕捉できる可能性があります。
まず、Telegramに接続するnpmインストールスクリプトを監視します。
パッケージインストールスクリプトがTelegramにPOST送信することは、ほとんどの場合避けるべきです。非常に明確で検証済みの例外がない限り、これは敵対行為とみなしてください。
第二に、旗 preinstall 内部的な名前を持つ、依存関係のない小さなパッケージに収められたスクリプト。
小さなパッケージ、高いセマンティックバージョニング(semver)バージョン、そして内部名前空間スタイルの名前の組み合わせは、依存関係の混乱を示す強い兆候である。
第三に、評判の低い公開npmアカウントによって公開された、プライベートなエンジニアリングモジュールのように見えるパッケージ名に注意を払う。
このクラスターの例としては、以下のようなものがあります。
第4に、CIシステムと開発者ワークステーション全体で、8つのパッケージ名へのロックファイル参照を探します。
サーチ:
一致する箇所があれば、依存関係の混同に関するレビューをトリガーするべきである。
推奨されるレジストリ操作
このクラスターは報告時点で既に非公開となっていた。しかし、非公開にしたからといってリスクがなくなるわけではない。
推奨されるnpm側の操作:
- 非公開になったコンテンツが、正当な管理者による操作ではなく、攻撃者によるクリーンアップだったかどうかを確認してください。
- パブリッシャーアカウントを一時停止または禁止する
alone5511. - 発行元、メールアドレス、パッケージ名、ペイロードマーカーを、不正利用およびサプライチェーンのブロックリストに追加する。
- 未公開のタールボールは、鑑識のために内部保管庫に保存する。
- 保存されたtarballからTelegramボットトークンを抽出します。
- 可能であればTelegramと連携し、受信チャネルを特定して、被害者のテレメトリデータを再構築する。
妥協対応チェックリスト
影響を受けるパッケージが、暴露期間中にロックファイル、ビルドログ、パッケージキャッシュ、またはCIインストール履歴に現れた場合は、依存関係の混同による実行イベントとして扱ってください。
推奨される回答:
- パッケージがどこにインストールされたかを特定します。ローカルワークステーション、CIランナー、ビルドエージェント、またはコンテナイメージのいずれかです。
- ロックファイル、npmキャッシュ、ビルドログ、シェル履歴、およびパッケージマネージャーの出力を保持します。
- 送信ネットワークログを確認してください
api.telegram.org(NAIST) とapi.ipify.orgインストールウィンドウ中。 - インストールが機密性の高い変数、認証情報、または内部ネットワークアクセスが存在する環境で実行されたかどうかを確認してください。
- ホストが特権を持つCIランナーまたは開発者ワークステーションであった場合、インストール環境に公開されているトークンをローテーションしてください。
- パブリックレジストリとプライベートレジストリの混同を防ぐための監査パッケージ解決構成。
- スコープ付きプライベートパッケージとレジストリピンニングを強制する。
- 内部命名パターンに一致する、承認されていない公開パッケージをブロックします。
- 追加 guardrails インストールスクリプトの場合、特に
preinstall,install,postinstall.
擁護者が学ぶべきこと
このキャンペーンは技術的に複雑なものではない。だからこそ重要なのだ。
ペイロードは小さく、直接的で、実行も容易です。攻撃者は永続性や高度なマルウェアを必要としません。必要なのは、パッケージ解決パスの設定ミスだけです。
本当のリスクは、依存の混乱である。
内部的な名前、高いバージョン番号、そして preinstall フックは通常の npm install 環境内部からビーコンへと変換します。
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する DevSecOps 各チームの皆さん、教訓は明確です。内部パッケージ名は機密性の高い資産です。攻撃対象領域として扱いましょう。
アカウントレベルの強制適用、ブロックリスト化、および未公開のtarballの保存のためにnpmに報告しました。





