ハッカーが大規模なサプライチェーン攻撃を仕掛け、170個以上のnpmパッケージと2つのPyPiライブラリを侵害した。これらは合わせて週に2億回以上ダウンロードされており、開発者とクラウドの機密認証情報を盗むために使用されている。
悪意のあるnpmパッケージには、インストール中に静かに実行される隠されたプレインストールスクリプトが含まれている。このスクリプトはローダーをデプロイし、ランタイム環境をダウンロードして、開発者マシンやCI/CDパイプライン内で大きく難読化されたJavaScriptペイロードを起動する。
典型的な認証情報スティーラーとは異なり、このマルウェアはデータ盗難で止まらない。npm公開トークンを積極的に検索し、正当なパッケージコードを修正し、悪意のあるコンポーネントを注入し、感染したバージョンを再公開する。
これにより、再帰的に拡散することができ、侵害された環境を伝播ポイントに変える。
JFrogのセキュリティ研究者は、このキャンペーンを再浮上した「Shai-Hulud」マルウェアに関連付けており、現在ワーム様の動作を示し、開発エコシステム全体で自律的に拡散している。
PyPiバリアントは異なるアプローチに従っている。パッケージのインポートプロセス内にダウンローダーを埋め込み、攻撃者が管理するインフラから遠隔Pythonペイロードをフェッチする。
研究者は、このペイロードがクラウドプラットフォーム、ローカルシステム、および開発者ツールを対象とした完全な機能を持つ認証情報スティーラーに進化したことを確認した。
170個のnpmパッケージが乗っ取られた
侵入は信頼できるGitHub Actionsリリースワークフロー内で開始された。攻撃者は、信頼されていないフォークされたコードが特権環境内で実行されることを許可する設定ミスを悪用した。
1つのレイヤーはPBKDF2-SHA256とキャンペーンソルト svksjrhjkcejgを使用し、その後、文字列ごとのIVからストリームキーを導出する。

結果として、悪意のあるパッケージは正当な認証情報と信頼できる公開パイプラインを使用して公開された。パッケージはマルウェアを含んでいるにもかかわらず、本物に見えるため、検出は大幅に難しくなる。
CI/CD環境内にいったん入ると、マルウェアはランナーメモリから直接、機密GitHub Actionsトークンとoidc IDデータを抽出する。これらのトークンはnpm公開アクセスと交換され、攻撃者は大規模で侵害されたパッケージをプッシュすることができる。

ペイロードは、感染したシステムから以下を含む広範囲の秘密を抽出するように設計されている:
- GitHubトークンとアクションシークレット。
- npm公開認証情報。
- 環境変数、ファイル、およびインスタンスメタデータからのAWS認証情報。
- Kubernetesサービスアカウントトークンとクラスタシークレット。
- HashiCorp Vaultトークン。
- SSH鍵、.npmrcファイル、シェル履歴、APIキーなどのローカル開発者データ。
クラウド環境では、マルウェアは積極的にAWS EC2メタデータサービスとKubernetes APIをクエリして、リーチを拡大する。また、名前空間全体でシークレットを列挙し、機密構成を抽出することもできる。
検出を回避するために、マルウェアは暗号化されたペイロードとPBKDF2およびAES-256を使用した実行時の復号化を含む複数の難読化レイヤーを使用する。これにより静的解析が困難になり、コア機能を隠されたままにできる。
盗まれたデータは複数の冗長チャネルを通じて流出される:
- 攻撃者が管理するサーバへの暗号化されたアップロード。
- 盗まれたトークンを使用して作成されたGitHubリポジトリ。
- 隠されたデータペイロードを含むGitHubコミット。
- 分散型Session/Oxenネットワークエンドポイント。
注目すべき指標の1つは、「[email protected]」によって作成されたコミットの使用であり、ディフェンダーは脅威ハンティングに使用できる。
特に危険な機能は「デッドマンスイッチ」である。マルウェアは、盗まれたGitHubトークンを監視する永続的なバックグラウンドサービスをインストールする。トークンが取り消された場合、マルウェアはユーザーのシステムをワイプするなどの破壊的なアクションをトリガーする可能性がある。
これにより、ディフェンダーは認証情報を取り消す前に永続性メカニズムを慎重に削除する必要があり、インシデント対応が複雑になる。

更新されたPythonペイロードは攻撃をさらに拡大する。AWS、GCP、Azure、Kubernetes、Vault、および1PasswordやBitwardenのようなパスワードマネージャーから認証情報を盗む。
場合によっては、システムサービスに偽装した2段目のペイロードをデプロイできる。このステージには、特定の条件下でLinuxシステム全体を削除できる破壊的なルーチンが含まれており、キャンペーンのエスカレーションを強調している。
このキャンペーンは、最新のサプライチェーン攻撃がどのように信頼メカニズムをバイパスし、エコシステム全体でワームのように拡散するかを示している。検証済みパイプラインを通じて構築されたパッケージでも、攻撃者がビルドプロセス自体を侵害すると、悪意のあるものになる可能性がある。
JFrogは、そのセキュリティソリューションが24時間以内にすべての悪意のあるパッケージを検出およびブロックしたことを確認したが、このインシデントは、開発環境全体でCI/CD制御、ランタイム監視、および認証情報衛生をより厳密に必要とすることを強調している。
翻訳元: https://gbhackers.com/170-npm-packages-hijacked/