攻撃者は休止中のメンテナーアカウントにメール乗っ取り攻撃を実行し、認証情報を盗むマルウェアを含む新しいnode-ipcバージョンを公開しました。
node-ipcという人気のあるnpmパッケージが侵害され、ハッカーが認証情報を盗むマルウェアをバンドルした悪意のあるバージョンを公開しました。侵害の根本原因は、メンテナーのアカウントを乗っ取るために攻撃者が登録した期限切れのドメイン名でした。
node-ipcパッケージは過去にマルウェアがコードに追加されています。2022年3月、ロシアのウクライナ侵攻に続いて、プロジェクトの作成者は意図的に悪意のあるコードを追加し、ロシアまたはベラルーシのIPアドレスを持つシステム上のファイルを削除しました。
Node-ipcは、すべての主要プラットフォーム全体でさまざまな種類のソケットを介したローカルおよびリモートプロセス間通信をサポートするNode.jsモジュールです。1つのユースケースはJavaScriptで複雑なマルチプロセスニューラルネットワークを実装することですが、このモジュールは他の424個のプロジェクトの依存関係としても使用されており、週に約700Kのダウンロード数があります。
木曜日に、攻撃者はプロジェクトの3つの異なるブランチにわたって3つのトロイの木馬化されたバージョンを公開した:9.1.6、9.2.3、12.0.1。すべての新しいバージョンには、node-ipc.cjsファイル内に80KBの難読化された認証情報盗聴ペイロードが含まれていました。
悪意のあるコードは、CI/CDツール、クラウドサービスおよびインフラストラクチャ、Kubernetes、SSH、およびAIコーディングエージェントの認証情報を幅広く検索して盗みます。データはHTTP接続ではなくDNS TXTクエリを介して流出します。
node-ipcは数百の他のパッケージの依存関係であり、さらに多くのパッケージの依存関係になる可能性があるため、この攻撃は広い被害範囲を持つ可能性があります。ユーザーは侵害されたバージョンのいずれかがインストールされているかどうかをすぐにシステムをスキャンして確認し、侵害されている場合は、マシンとそのマシンに保存されているアクセストークン、環境変数、およびAPIキーを侵害されたものとして扱うべきです。
包括的な認証情報収集とステルス流出
悪意のあるペイロードは、他のアプリケーションがrequire(‘node-ipc’)を通じてパッケージをロードするたびに復号化され実行されます。トロイの木馬化されたバージョンは即座の検出を回避するため完全に機能するように設計されており、DNS TXTを介したデータ流出などの攻撃者が取った他の決定と合わせて、ステルス性が最優先事項であったことを示唆しています。
実行されると、悪意のあるコードはオペレーティングシステムのバージョン、ホスト名、環境変数を含むホストシステムに関する情報を収集します。その後、検出されたOSに基づいてさまざまな場所の認証情報を探し始めます。
「ペイロードはmacOSとLinux/デフォルトプラットフォーム用に個別にデコードされたターゲットリストを選択します」とSocket.devの研究者は彼らの分析で述べている。「リストは同じではありません。分析されたペイロードでは、macOSリストには113個のパターンが含まれ、Linux/デフォルトリストには127個のパターンが含まれています。」
ターゲットリストは広範であり、以下を含みます:
- AWS、Azure、GCP、OCI、DigitalOcean、Scaleway、Hetzner、Fly、Vercel、Railway、Alibaba Cloud、IBM Cloud、Linode、MinIO、Snowflake、Doppler、およびSalesforceの設定ファイル;
- SSHキーとSSH設定;
- Kubernetes、Docker、Helm、Rancher、およびサービスアカウント資料;
- npm、Yarn、Netrc、Git、GitHub CLI、GitLab CLI、およびHubの認証情報;
- Terraform認証情報およびtfvarsファイル;
- .env、.env.local、.env.production、データベース設定ファイル、シェル履歴、およびデータベースCLI履歴;
- macOS Keychainデータベースファイル;
- macOS上のFirefoxプロファイルキーデータベースファイル;
- Linuxキーリングおよび KWalletファイル;
- FileZilla、Remmina、OpenVPN、および関連する接続プロファイル;
- Microsoft TeamsローカルストレージおよびIndexedDBパス。
ブラウザの認証情報ストアは直接的には対象外ですが、macOS keychainデータベースはシステムおよびブラウザの認証情報を含むことができるため、これらの認証情報も侵害されたものと見なされ、ローテーションする必要があります。
収集されたすべてのデータはGZIPファイルにアーカイブされ、その後チャンクに分割され、Microsoftの正規のAzure Static Web Appsドメインと同様の名前を持つ攻撃者制御ドメインでDNS TXTクエリを作成することで流出します。
攻撃者が彼らのドメイン名のDNSサーバを制御しているため、感染したシステムによって作成されたTXTレコードクエリを確認でき、流出したバイトからそれら側でアーカイブを再構成できます。Socket研究者は、500KBのファイルをこの方法で流出させるには約29,400個のTXTクエリが必要であると推定しています。
「ペイロードはデコードされたサンプルで永続性を確立しない」と研究者は述べた。「cron、launchd、rc.d、サービスインストール、または第2段階のダウンロードは観察されていません。運用上の影響は実行ウィンドウに集中しています:収集、アーカイブ作成、DNS TXT流出、およびクリーンアップの試み。」
期限切れドメインがメール乗っ取りにつながった
悪意のあるnode-ipcバージョンはatiertantというnpmアカウントから公開されました。このアカウントはパッケージへのメンテナーアクセス権を持つ複数の開発者の1人に属しています。Atiertantは以前、彼のアクセス権を使用して新しいnode-ipcバージョンを公開したことがなく、2022年以来、node-ipcまたは彼がアクセスできる他のnpmパッケージでのアクティビティはありません。
セキュリティ研究者は気づきました、atiertantのアカウントのメールアドレスはatlantis-software.netというドメインでホストされており、2025年1月に期限が切れており、今月初めに攻撃者によって再登録された可能性が高いです。その後は、メールサーバをセットアップし、atiertantのメールアドレスを再作成し、アカウントのパスワードリセットを実行するだけの問題でした。
これはオープンソースソフトウェアプロジェクトが直面するセキュリティの課題のいくつかを強調しています。休止中および未使用のアカウントについてアクセスリストを定期的にレビューすることは企業の一般的なセキュリティ推奨事項ですが、オープンソースプロジェクトは志願者のグループによって維持されており、特にこれらのプロジェクトが高度な成熟度と機能の完全性に達して頻繁な更新を受けなくなった場合、人々がプロジェクトへの貢献から長い休憩を取ることは珍しくありません。
攻撃者は最初からnode-ipcを標的にしなかった可能性も高いです。彼らはカスタムドメイン名のメールアドレスを持つアカウントについてnpmを検索し、それらのドメイン名のいずれかが期限切れになっているかどうかを確認しました。つまり、同じ方法を使用してメール乗っ取りに対して脆弱な他の休止中のアカウントがそこにある可能性があります。
Socket.devレポートは、ユーザーと開発者の両方に対する追加の推奨事項、およびセキュリティチームが検出を作成するために使用できるファイルハッシュおよび他の侵害の指標を含みます。