SAPの開発者エコシステムを標的とした、新たなnpmサプライチェーン攻撃が発生している。
現時点で追跡している影響を受けるパッケージは以下の通りです:
@cap-js/sqlite - v2.2.2@cap-js/postgres - v2.2.2@cap-js/db-service - v2.10.1mbt@1.2.48
このパターンは見慣れたものですが、少し異なります。信頼できるパッケージが新しい preinstall フック、フックは新しい setup.mjs ファイル、そしてそのローダーはBun JavaScriptランタイムをダウンロードし、 execution.js.
このペイロードは、11.7 MBの認証情報窃取および拡散フレームワークです。ローカルの開発者認証情報、GitHubおよびnpmのトークン、GitHubシークレット、ならびにAWS、Azure、GCP、シークレット 収集します。その後、暗号化された結果をパブリックなGitHubリポジトリを通じて外部へ流出させます。
このマルウェアは、これらのリポジトリにハードコードされた説明を付けています:
ミニ・シャイ・フルードが現れた
何が起きたのか
この改ざんされたパッケージは、npmのライフサイクル機能を利用しています。これまでの調査では、 package.json 以下を追加するために修正されました:
"scripts": {
"preinstall": "node setup.mjs"
}つまり、悪意のあるコードは実行中に自動的に実行されるということです npm installインストールが完了する前から。
この悪意のあるパッケージは、2つのファイルを追加します:
setup.mjsexecution.js
通常のパッケージコードは、依然として正規のSAPパッケージのように見えます。 @cap-js/sqlite@2.2.2 サンプルでは、通常のファイルはクリーンに一致する @cap-js/sqlite@2.2.1 バイト単位で。妥協案は、インストールフックに加え、ペイロードファイルを追加するというものです。
想定される侵入経路
ある公開された手がかりから、考えられる原因が浮上しています。それは、CircleCIを介したプルリクエストのビルドにおいて、npmトークンが露出していたことです。
それは、私たちが SAP/クラウドMTAビルドツール4月29日、ある 短期間のドラフトPR 『~』 feat: ci speedup ~から開かれた gruposbftechrecruiter/harkonnen-navigator-149. そのPRは数分以内にクローズされ、その後ブランチが強制プッシュされたため、現在のGitHubの差分には何も表示されなくなりました。
CircleCI 重要な部分は残した。PRビルド上の pull/1223 コミットを確認しました a959014aa7b7fc37a9b5730c951776e7db2920a6、これにバンローダーが追加され、 bin/config.mjs、に難読化されたペイロードを追加した bin/mbt.js、そしてテストコマンドを次のように変更しました:
node ./bin/config.mjs && node ./bin/mbtそのテストはPRジョブで実行され、CircleCIには以下を含む、一部が伏せられたプロジェクトシークレット記載されていました。 CLOUD_MTA_BOT_NPM_TOKEN, CLOUD_MTA_BOT_GITHUB_TOKEN、CircleCIのOIDCトークン、Docker Hubの認証情報、Cloud Foundryの認証情報、およびその他のリリース関連の変数。
ログには、Octokitに関する警告も表示されていました。 投稿apiこれは、マルウェアのGitHubからの情報流出の挙動と一致しています。
これにより、CircleCIのプルリクエストビルドが、最初の認証情報窃取の最大の容疑者となる。
マルウェアの実行方法
第一段階、 setup.mjsは、Bunのブートストラップツールです。OSとアーキテクチャを確認し、Bunをダウンロードします 1.3.13 必要に応じてGitHubから取得し、バイナリを解凍して、Bunを使用して実行する execution.js.
const BUN_VERSION = '1.3.13';
const ENTRY_SCRIPT = 'execution.js';
const url = `https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/${asset}.zip`;
execFileSync(binPath, [entryScriptPath], { stdio: 'inherit', cwd: SCRIPT_DIR });第2段階、 execution.jsは、単一の大きな難読化されたペイロードです。これは、 ctf-scramble-v2、CI環境で実行されているかどうかを確認し、ロシア語のロケール設定が適用されている場合は終了し、CI以外のマシンではデーモン化されます。
それが奪うもの
このペイロードは、開発者のノートパソコンとCI/CD の両方を標的として設計されています。
以下を収集しようとします:
- GitHubトークン(以下を含む)
gh 認証トークン - npmトークン
.npmrc - 環境変数
- GitHub Actionsシークレット
- AWS STS ID、シークレット シークレット、およびSSMパラメータ
- Azure サブスクリプション、Key Vault の名前、および Key Vault のシークレット値
- GCP プロジェクトの識別情報と Secret Manager の値
- Kubernetes サービスアカウントのトークン
- Claudeの設定ファイル、MCPの設定ファイル、GCPトークンデータベース、Azureトークンキャッシュ、Signalの設定ファイル、Electrumウォレット、およびVPN設定ファイル
GitHub Actions のパスについては特に懸念される。ペイロードには、検索を行う組み込みの Python ヘルパーが含まれており、 /proc ~のために ランナー・ワーカー プロセスは、そのメモリを読み取り、ランナーからマスクされた秘密構造を抽出します。
GitHub からの情報流出と拡散に関するキーワード
このマルウェアは、データ流出の経路としてGitHubを利用している。
新しい伝播キーワードは次のとおりです:
「GitHubに何が起きているんだ?」このマルウェアは、GitHubのコミットからこの文字列を検索し、一致するコミットメッセージをトークンのデッドドロップとして利用します。一致するコミットメッセージは OhNoWhatsGoingOnWithGitHub:<base64> GitHubトークンに変換され、リポジトリへのアクセス権限が確認されます。
マルウェアがリポジトリを作成できる場合、ランダム化された「Dune」をテーマにした名前を使用し、リポジトリの説明を次のように設定します:
ミニ・シャイ・フルードが現れたそして、暗号化された結果ファイルを以下の場所に書き込みます:
results/results-<timestamp>-<counter>.jsonデータはコミット前にAES-256-GCMを使用して圧縮および暗号化され、AESキーは埋め込まれたRSA公開鍵でラップされます。

伝播ロジック
このペイロードには、開発およびリリースワークフロー全体に展開するためのロジックが含まれています。
分析対象のサンプルにおいて、このマルウェアは、以下のGitHub Actionsのリリース自動化を確認します。 cap-js/cds-dbs. そのリポジトリのコンテキスト内にリリースワークフローが存在する場合、以下の方法でパッケージのtarballを変更できます:
- 現在のペイロードを
execution.js - 執筆
setup.mjs - 設定
scripts.preinstall = "node setup.mjs" - パッチバージョンのインクリメント
- tarballの再パッケージ化
また、盗まれたGitHub Actionsトークンを使用して、リポジトリにファイルをプッシュしようと試みます:
.vscode/tasks.json.vscode/setup.mjs.claude/execution.js.claude/setup.mjs.claude/settings.json
それらのコミットでは、以下を使用しています:
タスク:依存関係更新著者との対談:
claude <claude@users.noreply.github.com>SAPを標的として
対象となるパッケージは、通常のSAP開発ワークフロー内に配置されています。 @cap-js/sqlite, @cap-js/postgres、および @cap-js/db-service はSAP CAPデータベース・エコシステムの一部であり、一方で MBT SAP Cloud MTAのビルドワークフロー周辺で使用されます。
そのため、このキャンペーンはパッケージ数は少ないものの、潜在的な影響力は大きいと言えます。これらのパッケージは、GitHub、npm、クラウドの認証情報、およびエンタープライズ環境のシークレットアクセス権を持つ開発者のマシンやCIランナー上で実行される可能性が高いです。
検知と緩和
ロックファイル、パッケージキャッシュ、CIログ、内部レジストリ、アーティファクトストア、および開発者マシンを検索し、以下の項目を探します:
@cap-js/sqlite - v2.2.2@cap-js/postgres - v2.2.2@cap-js/db-service - v2.10.1mbt@1.2.48setup.mjsexecution.jspreinstall実行中のスクリプトnode setup.mjs- パン
1.3.13パッケージのインストール中のダウンロード
GitHubで検索:
- 「」のコミット検索結果
「GitHubに何が起きているんだ?」:https://github.com/search?q=OhNoWhatsGoingOnWithGitHub&type=commits - 説明付きのレポジトリ
ミニ・シャイ・フルードが現れた - 以下を含むコミット
「GitHubに何が起きているんだ?」 - 「」というタイトルのコミット
タスク:依存関係更新 - 作成者:
claude <claude@users.noreply.github.com> - 予期せぬ
.claude/または.vscode/setup.mjsファイル results/results-*.json新しく作成されたパブリックリポジトリ内のファイル
影響を受けるパッケージがインストールされている場合は、シークレットローテーションしてください。ローテーションの対象をnpmトークンに限定しないでください。この攻撃は、GitHub、npm、クラウドプロバイダー、Kubernetes、シークレット、およびローカルの開発者向けツールを標的としています。
方法 Aikido これをどのように検知するか
もしあなたが Aikido ユーザーの方は、中央フィードを確認し、マルウェア関連の問題でフィルタリングしてください。これにより、100/100の重大な問題として表示されます。 Aikido は毎晩自動的に再スキャンを行いますが、今すぐ手動で再スキャンを実行することをお勧めします。
まだ会員でない場合は Aikido をご利用でない場合は、アカウントを作成してリポジトリを連携できます。マルウェア対策機能は無料プランに含まれており、クレジットカードは不要です。
チーム全体をより広くカバーするには、 Aikidoの「エンドポイント保護」は、チームのデバイスにインストールされたソフトウェアパッケージを可視化し、管理することを可能にします。ブラウザ拡張機能、コードライブラリ、IDEプラグイン、依存関係、すべてを一元管理できます。マルウェアがインストールされる前に阻止しましょう。
将来的なセキュリティ対策として、オープンソースの「Aikido Chain」の導入をご検討ください。Safe Chainは既存のワークフローに組み込まれ、npm、npx、yarn、pnpm、pnpxの各コマンドをインターセプトし、インストール前にAikido データベースと照合してパッケージを検証します。
侵害の痕跡
影響を受けるパッケージ:
@cap-js/sqlite - v2.2.2@cap-js/postgres - v2.2.2@cap-js/db-service - v2.10.1mbt@1.2.48
分析対象のハッシュ @cap-js/sqlite@2.2.2 サンプル:
setup.mjs:4066781fa830224c8bbcc3aa005a396657f9c8f9016f9a64ad44a9d7f5f45e34execution.js:6f933d00b7d05678eb43c90963a80b8947c4ae6830182f89df31da9f568fea95- 組み込み型GitHubランナー用メモリダンプツール:
29ac906c8bd801dfe1cb39596197df49f80fff2270b3e7fbab52278c24e4f1a7
文字列とマーカー:
ミニ・シャイ・フルードが現れた「GitHubに何が起きているんだ?」(伝播キーワード / GitHub コミットのデッドドロップマーカー)ctf-scramble-v2tmp.987654321.lockタスク:依存関係更新claude@users.noreply.github.com
URLとエンドポイント:
hxxps://github[.]com/oven-sh/bun/releases/download/bun-v1.3.13/hxxps://api.github[.]com/search/commits?q=OhNoWhatsGoingOnWithGitHub&sort=author-date&order=desc&per_page=50hxxp://169.254.169.254hxxp://169.254.170.2hxxp://[fd00:ec2::254]

