Aikido

S1ngularity/nxの攻撃者が再び襲来

チャーリー・エリクセンチャーリー・エリクセン
|
#

本日朝、npmに対する大規模な攻撃が確認されました。これは2025年8月27日のNx攻撃の背後にいる脅威アクターによるものと見られます。当初SocketとStepSecurityが発表したところでは40パッケージが侵害されていましたが、その後さらに147パッケージがマルウェアに感染しており、CrowdStrikeのパッケージも含まれています。

この攻撃の規模、範囲、影響は甚大である。攻撃者は元の攻撃とほぼ同じ手法を用いているが、その手口をさらに高度化させている。完全なワームへと進化させ、以下の動作を自動的に実行するようになった:

  • 秘密を盗み、GitHubに公開する
  • trufflehogを実行し、Cloudメタデータエンドポイントをクエリしてシークレットを収集する
  • Webhook[.]siteを介したデータ抽出メカニズムを備えた新しいGitHubアクションの作成を試みる
  • ユーザーがアクセス権を持つGitHub上のリポジトリを反復処理し、それらを公開状態にする

本日の最初の警告以降、以下の追加行動と重要な詳細を確認しました。ご存知ない方のために補足すると、シャイ・フルードとは『デューン』シリーズに登場する砂虫の名称です。これは攻撃者の意図を明確に示すものです。

シャイ・フルード(『デューン』より)

このようなパッケージによる侵害を避けるには、Aikido safe-chainをチェックしてください!

虫が何をするか

  • Harvest: ホストおよびCI環境内のシークレットをスキャンします — process.env、TruffleHogによるスキャン、およびインスタンス/サービス認証情報を返すクラウドメタデータエンドポイント(AWS/GCP)。
  • エクソフィルレート (1) — GitHub リポジトリ: 侵害されたアカウント下にShai-Huludという名前のリポジトリを作成し、システム情報、環境変数、収集した機密情報を含む JSON ダンプをコミットする。
  • エクソフィルレート (2) — GitHub Actions → webhookワークフローを終了する .github/workflows/shai-hulud-workflow.yml シリアル化する ${{ toJSON(secrets) }}それらを攻撃者にPOSTする webhook[.]サイト URLを書き出し、二重base64エンコードされたコピーをActionsログに記録します。
  • 伝播: 見つけた有効な npm トークンをすべて使用し、侵害されたメンテナが管理するパッケージを列挙して更新を試みます(サプライチェーン伝播)。
  • 増幅: 被害者のアクセス可能なリポジトリを反復処理し、それらを公開状態にするか、さらなる実行と情報漏洩を引き起こすワークフロー/ブランチを追加する。

機密漏洩

元のNx攻撃と同様に、攻撃者は強奪型の攻撃手法を採用しています。悪意のあるペイロードは、盗んだ認証情報/トークンを含む「Shai-Hulud」リポジトリを公開すると同時に、GitHubアカウントを操作して非公開リポジトリを公開に切り替えます:

盗まれた認証情報が公開されている

非公開リポジトリが公開される

npmによる自己伝播

この攻撃の最も顕著な特徴の一つは、真のワームのように振る舞う点である。単一の感染パッケージに依存して拡散するのではなく、コードは侵害されたメンテナが所有する他のnpmパッケージへ自身を再公開するよう設計されている。

ワームのロジックは次のように動作します:

  • ターゲットのtarballをダウンロードする– npmレジストリから既存のパッケージバージョンを取得します。
  • 変更する package.json – ワームがパッチバージョンを上げる(例: 1.2.3 → 1.2.4) という新しいライフサイクルフックを挿入します。ポストインストール)
  • 自身のペイロードをコピーする – 実行中のスクリプト (process.argv[1]) は tarball に次のように書き込まれます バンドル.jsこれにより、あるパッケージに感染したコードは、次のパッケージ内部に確実に存在することになる。
  • トロイの木馬化されたパッケージを再公開する– 改変されたtarballをgzip圧縮し、メンテナーの認証情報を使用してnpmにプッシュし直す。

このサイクルにより、マルウェアは管理者がアクセス権を持つすべてのパッケージを継続的に感染させることが可能となる。公開された各パッケージは新たな拡散経路となる:誰かがインストールするやいなや、ワームは実行され、複製され、エコシステム内へさらに深く侵入していく。

要するに:攻撃者は手動でパッケージを標的にする必要はありません。一度環境が侵害されると、ワームは管理者の公開権限を悪用して拡散を自動化します。

マルウェアの詳細な分析については、 getsafetyの投稿を 参照することをお勧めします

影響を受けたパッケージ

パッケージ バージョン
@ahmedhfarag/ngx-perfect-scrollbar 20.0.20
@ahmedhfarag/ngx-仮想スクローラー 4.0.4
@art-ws/common 2.0.28
@art-ws/config-eslint 2.0.4, 2.0.5
@art-ws/config-ts 2.0.7, 2.0.8
@art-ws/db-context 2.0.24
@art-ws/di 2.0.28, 2.0.32
@art-ws/di-node 2.0.13
@art-ws/eslint 1.0.5, 1.0.6
@art-ws/fastify-http-server 2.0.24, 2.0.27
@art-ws/http-server 2.0.21, 2.0.25
@art-ws/openapi 0.1.9, 0.1.12
@art-ws/パッケージベース 1.0.5, 1.0.6
@art-ws/prettier 1.0.5, 1.0.6
@art-ws/slf 2.0.15, 2.0.22
@art-ws/ssl-info 1.0.9, 1.0.10
@art-ws/web-app 1.0.3, 1.0.4
@crowdstrike/commitlint 8.1.1, 8.1.2
@crowdstrike/ファルコン・シューレース 0.4.1, 0.4.2
@crowdstrike/ファウンドリーJS 0.19.1, 0.19.2
@crowdstrike/glide-core 0.34.2, 0.34.3
@crowdstrike/logscale-dashboard 1.205.1, 1.205.2
@crowdstrike/ログスケールファイルエディター 1.205.1, 1.205.2
@crowdstrike/logscale-parser-編集 1.205.1, 1.205.2
@crowdstrike/logscale-search 1.205.1, 1.205.2
@crowdstrike/tailwind-toucan-base 5.0.1, 5.0.2
@ctrl/deluge 7.2.1, 7.2.2
@ctrl/golang-template 1.4.2, 1.4.3
@ctrl/マグネットリンク 4.0.3, 4.0.4
@ctrl/ngx-codemirror 7.0.1, 7.0.2
@ctrl/ngx-csv 6.0.1, 6.0.2
@ctrl/ngx-emoji-mart 9.2.1, 9.2.2
@ctrl/ngx-rightclick 4.0.1, 4.0.2
@ctrl/qbittorrent 9.7.1, 9.7.2
@ctrl/react-adsense 2.0.1, 2.0.2
@ctrl/共有トレント 6.3.1, 6.3.2
@ctrl/tinycolor 4.1.1, 4.1.2
@ctrl/torrentファイル 4.1.1, 4.1.2
@ctrl/伝送 7.3.1
@ctrl/ts-base32 4.0.1, 4.0.2
@hestjs/core 0.2.1
@hestjs/CQRS 0.1.6
@hestjs/デモ 0.1.2
@hestjs/eslint-config 0.1.2
@hestjs/logger 0.1.6
@hestjs/スカラー 0.1.7
@hestjs/バリデーション 0.1.6
@ネイティブスクリプトコミュニティ/配列バッファ 1.1.6, 1.1.7, 1.1.8
@ネイティブスクリプトコミュニティ/ジェスチャーハンドラー 2.0.35
@ネイティブスクリプトコミュニティ/パーミッション 3.0.5, 3.0.6, 3.0.7, 3.0.8
@ネイティブスクリプトコミュニティ/SQLite 3.5.2, 3.5.3, 3.5.4, 3.5.5
@ネイティブスクリプトコミュニティ/テキスト 1.6.9, 1.6.10, 1.6.11, 1.6.12
@ネイティブスクリプトコミュニティ/タイプオアエム 0.2.30, 0.2.31, 0.2.32, 0.2.33
@ネイティブスクリプトコミュニティ/UIコレクションビュー 6.0.6
@ネイティブスクリプトコミュニティ/UIドキュメントピッカー 1.1.27, 1.1.28
@ネイティブスクリプトコミュニティ/UIドロワー 0.1.30
@ネイティブスクリプトコミュニティ/UI画像 4.5.6
@ネイティブスクリプトコミュニティ/UIラベル 1.3.35, 1.3.36, 1.3.37
@ネイティブスクリプトコミュニティ/UIマテリアルボトムナビゲーション 7.2.72, 7.2.73, 7.2.74, 7.2.75
@ネイティブスクリプトコミュニティ/UIマテリアルボトムシート 7.2.72
@ネイティブスクリプトコミュニティ/UIマテリアルコア 7.2.72, 7.2.73, 7.2.74, 7.2.75
@ネイティブスクリプトコミュニティ/ui-material-core-tabs 7.2.72, 7.2.73, 7.2.74, 7.2.75
@ネイティブスクリプトコミュニティ/UIマテリアル・リップル 7.2.72, 7.2.73, 7.2.74, 7.2.75
@ネイティブスクリプトコミュニティ/UIマテリアルタブ 7.2.72, 7.2.73, 7.2.74, 7.2.75
@ネイティブスクリプトコミュニティ/UIページャー 14.1.36, 14.1.37, 14.1.38
@ネイティブスクリプトコミュニティ/UIプルリフレッシュ 2.5.4, 2.5.5, 2.5.6, 2.5.7
@nexe/config-manager 0.1.1
@nexe/eslint-config 0.1.1
@nexe/logger 0.1.3
@nstudio/angular 20.0.4, 20.0.5, 20.0.6
@nstudio/フォーカス 20.0.4, 20.0.5, 20.0.6
@nstudio/ネイティブスクリプト-チェックボックス 2.0.6, 2.0.7, 2.0.8, 2.0.9
@nstudio/ネイティブスクリプトローディングインジケーター 5.0.1, 5.0.2, 5.0.3, 5.0.4
@nstudio/ui-collectionview 5.1.11, 5.1.12, 5.1.13, 5.1.14
@nstudio/web 20.0.4
@nstudio/web-angular 20.0.4
@nstudio/xplat 20.0.5, 20.0.6, 20.0.7
@nstudio/xplat-utils 20.0.5, 20.0.6, 20.0.7
@operato/ボード 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/データ・グリスト 9.0.29, 9.0.35, 9.0.36, 9.0.37
@operato/graphql 9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@オペレータ/ヘッドルーム 9.0.2, 9.0.35, 9.0.36, 9.0.37
@operato/ヘルプ 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/i18n 9.0.35, 9.0.36, 9.0.37
@オペレータ/入力 9.0.27, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/レイアウト 9.0.35, 9.0.36, 9.0.37
@operato/ポップアップ 9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/プル・トゥ・リフレッシュ 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42
@operato/shell 9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39
@operato/スタイル 9.0.2, 9.0.35, 9.0.36, 9.0.37
@operato/utils 9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@teselagen/バウンスローダー 0.3.16, 0.3.17
@teselagen/liquibase-tools 0.4.1
@teselagen/range-utils 0.3.14, 0.3.15
@teselagen/react-list 0.8.19, 0.8.20
@teselagen/react-table 6.10.19
@thangved/コールバックウィンドウ 1.1.4
@things-factory/添付ファイルベース 9.0.43, 9.0.44, 9.0.45, 9.0.46, 9.0.47, 9.0.48, 9.0.49, 9.0.50
@things-factory/auth-base 9.0.43, 9.0.44, 9.0.45
@things-factory/email-base 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46, 9.0.47, 9.0.48, 9.0.49, 9.0.50, 9.0.51, 9.0.52, 9.0.53, 9.0.54
@things-factory/env 9.0.42, 9.0.43, 9.0.44, 9.0.45
@things-factory/統合基盤 9.0.43, 9.0.44, 9.0.45
@things-factory/統合マーケットプレイス 9.0.43, 9.0.44, 9.0.45
@things-factory/シェル 9.0.43, 9.0.44, 9.0.45
@tnf-dev/api 1.0.8
@tnf-dev/コア 1.0.8
@tnf-dev/js 1.0.8
@tnf-dev/mui 1.0.8
@tnf-dev/react 1.0.8
@ui-ux-gang/devextreme-angular-rpk 24.1.7
@yoobic/デザインシステム 6.5.17
@yoobic/jpeg-camera-es6 1.0.13
@yoobic/yobi 8.7.53
空軍参謀総長 0.3.1
エアパイロット 0.8.8
アングラートティクス2 14.1.1, 14.1.2
ブラウザWebDriverダウンローダー 3.0.8
コンデンサ通知ハンドラー 0.0.2, 0.0.3
コンデンサプラグインヘルスアプリ 0.0.2, 0.0.3
キャパシタプラグイン-アイヘルス 1.1.8, 1.1.9
コンデンサプラグイン・ボナージュ 1.0.2, 1.0.3
コンデンサアンドロイドパーミッション 0.0.4, 0.0.5
config-cordova 0.8.5
cordova-plugin-voxeet2 1.0.24
cordova-voxeet 1.0.32
create-hest-app 0.1.9
db-evo 1.1.4, 1.1.5
デベロップメントエクストリーム-アンギュラー-RPK 21.2.8
エンバーブラウザサービス 5.0.2, 5.0.3
ember-headless-form 1.1.2, 1.1.3
ember-headless-form-yup 1.0.1
ember-headless-table 2.1.5, 2.1.6
ember-url-hash-polyfill 1.0.12, 1.0.13
エンバー・ベルクロ 2.2.1, 2.2.2
出会い遊び場 0.0.2, 0.0.3, 0.0.4, 0.0.5
ESLint設定ファイル - CrowdStrike 11.0.2, 11.0.3
ESLint設定ファイル - CrowdStrike Node.js版 4.0.3, 4.0.4
eslint-config-teselagen 6.1.7
グローバル化-RPK 1.7.4
graphql-sequelize-teselagen 5.3.8
HTMLからBase64画像への変換 1.0.2
jsonルールエンジン簡易版 0.2.1
ジャンプゲート 0.0.2
koa2-swagger-ui 5.11.1, 5.11.2
mcfly-セマンティックリリース 1.3.1
mcp-ナレッジベース 0.0.2
mcp-ナレッジグラフ 1.2.1
mobioffice-cli 1.0.3
モノレポ・ネクスト 13.0.1, 13.0.2
mstate-angular 0.4.4
mstate-cli 0.4.7
mstate-dev-react 1.1.1
mstate-react 1.6.5
ng2-ファイルアップロード 7.0.2, 7.0.3, 8.0.1, 8.0.2, 8.0.3, 9.0.1
ngx-bootstrap 18.1.4, 19.0.3, 19.0.4, 20.0.3, 20.0.4, 20.0.5
ngx-color 10.0.1, 10.0.2
ngx-toastr 19.0.1, 19.0.2
ngx-trend 8.0.1
ngx-ws 1.1.5, 1.1.6
oradm-to-gql 35.0.14, 35.0.15
oradm-to-sqlz 1.1.2
自動アノテーション 0.0.9
pm2-gelf-json 1.0.4, 1.0.5
printjs-rpk 1.6.1
react-complaint-image 0.0.32
react-jsonSchema-フォーム条件式 0.3.18
remark-preset-lint-crowdstrike 4.0.1, 4.0.2
rxnt認証 0.0.3, 0.0.4, 0.0.5, 0.0.6
rxnt-ヘルスチェック-NestJS 1.0.2, 1.0.3, 1.0.4, 1.0.5
rxnt-kue 1.0.4, 1.0.5, 1.0.6, 1.0.7
swc-plugin-component-annotate 1.9.1, 1.9.2
tbssnch 1.0.2
テセラゲン間隔木 1.1.2
tg-クライアントクエリビルダー 2.14.4, 2.14.5
tg-redbird 1.3.1
tg-seq-gen 1.0.9, 1.0.10
サンクベド・リアクトグリッド 1.0.3
ts-ガウス 3.0.5, 3.0.6
ts-インポート 1.0.1, 1.0.2
tvi-cli 0.1.5
ve-bamreader 0.2.6
ve-editor 1.0.1
verror-extra 6.0.1
VoIPコールキット 1.0.2, 1.0.3
wdio-web-レポーター 0.1.3
yargs-help-出力 5.0.3
ユー・スタイルズ 6.0.326

ストーリーは展開中…

修復に関する助言

  • 使用しているバージョンを確認してください
  • npmキャッシュをクリーンアップしてください
  • リポジトリ内のすべてのパッケージを再インストールしてください
  • パッケージロックファイルを使用し、固定バージョンを使用することを確認してください

Aikido影響を受けているかどうかを見分ける方法:

Aikido の場合は、中央フィードとマルウェア問題のフィルターを確認してください。この脆弱性はフィード上で100/100の重大問題として表示されます。ヒント:Aikido リポジトリを毎晩Aikido 、フル再スキャンの手動実行も推奨します。

まだAikido でない場合は、アカウントを作成しリポジトリを接続してください。当社の独自マルウェア対策は無料プランに含まれています(クレジットカード不要)。

将来の保護のため、npm、npx、yarn...のセキュアなラッパーAikido (オープンソース)の使用をご検討ください。Safechainは現在のワークフローに組み込まれ、npm、npx、yarn、pnpm、pnpxコマンドをインターセプトし、インストール前にパッケージをマルウェアに対して検証します。 Aikido - オープンソースの脅威インテリジェンス。 脅威がマシンに到達する前に阻止します。

4.7/5

今すぐソフトウェアを保護しましょう

無料で始める
CC不要
デモを予約する
データは共有されない - 読み取り専用アクセス - CC不要

今すぐ安全を確保しましょう

コード、クラウド、ランタイムを1つの中央システムでセキュアに。
脆弱性を迅速に発見し、自動的に修正。

クレジットカードは不要。