悪意あるnpmパッケージが、Windows、Linux、macOSシステム全体の開発者を標的とした新しいソフトウェアサプライチェーンキャンペーンで、北朝鮮関連のPylangGhostリモートアクセストロイ(RAT)を配信しています。
最初の悪意あるバージョンは2026年2月末に出現し(@jaime9008/math-service 1.0.1–1.0.2)、その後2026年3月1日に公開されたreact-refresh-update 1.0.1–1.0.4が続きました。
以前の1.0.0バージョンはどちらのファミリーでも無害でしたが、これは信頼を構築した後に静かに武装化された更新に置き換える一般的な戦術です。
各悪意あるtarballは異なるハッシュ値を含んでいます。理由は著者がローダーをエンコードするために非決定論的なオブfuscatorを使用したためです。
研究者はreact-refresh-updateと@jaime9008/math-serviceという2つのnpmパッケージを、隠されたJavaScriptローダーをバンドルするトロイの木馬化された依存関係として特定しました。
react-refresh-updateでは、感染ポイントは/runtime.jsおよび/babel.jsに位置し、@jaime9008/math-serviceは/lib/lib.jsにローダーを隠しています。
パッケージの残りの部分は予想通りに動作するため、通常の開発またはCIビルド中に侵害を検出することは困難です。
これらの汚染されたバージョンをインストールまたは更新する開発者は、npm installまたはランタイム初期化中に攻撃者が制御するコードを無意識に実行します。
悪意あるNPMパッケージ
埋め込まれたローダーは、単純なデコード→復号化→evalチェーンに従って次段階のスクリプトを復元します。
悪意あるコンテンツはBase64エンコードされており、ハードコードされたキー文字列fdfdfdfdf3rykyjjgfkwiを使用してXOR暗号化されており、暗号化解除されたJavaScriptが実行される前にランタイムで適用されます。
スクリプトはZIPアーカイブを一時ディレクトリに書き込み、システムのtarユーティリティを使用して抽出し、WindowsではStart.vbsスクリプト、またはUnix系システムではシェルスクリプト(macspatch.sh)を起動します。
関数と変数名はわずかにオブfuscationされていますが、分析はプラットフォーム固有のペイロードのステルスダウンロードと実行に焦点を当てた明確なステージングパターンを示しています。
復号化されると、Node.jsコードはhttps、fs、child_process、path、os、およびaxiosをインポートして、クロスプラットフォームダウンローダーを実装します。
抽出されたアーカイブにはPylangGhost RATが含まれています。これはPython系のリモートアクセストロイで、2025年中盤にシスコタロスによって最初に文書化されたもので、ラザラスエコシステムの一部である有名なチョルリマとして知られている北朝鮮と関係のあるグループにリンクされています。
これはmalicanbur[.]proドメインでOS固有のURLを構築し、Windowsではwinnmrepair_ml2j.releaseなどの構成を持つ、LinuxおよびmacOS用の同等のアーチファクトと同じものです。
PylangGhostはモジュール型のPythonコードベースとそのコマンドおよびハードコードされたコマンド&コントロール(C2)エンドポイントを定義するconfig.pyファイルを使用します。
このキャンペーンでは、config.pyは173.211.46[.]22:8080を指しており、npmに焦点を当てた独立したレポーティングでPylangGhostが初めてレジストリに出現したときに観測されたインジケーターと一致します。
PylangGhostは完全なリモートコントロール、ファイル管理、および多くのブラウザ拡張機能と暗号資産ウォレットからクッキーと秘密を盗む広範な認証情報盗難機能を提供します。
以前のアクティビティは、暗号およびテクノロジー専門家を標的とした偽の求人機会を通じてRATが配置されていたことを示していました。npmパッケージでの再利用はソフトウェアサプライチェーンベクターへの明らかな拡大を示しています。
winnmrepair_ml2j.releaseからのWindows ZIPはVirusTotalにアップロードされており、静的および動的署名によるPylangGhostファミリーをさらに確認しています。
対策
このキャンペーンは、単一の悪意ある依存関係がいかに開発者のワークステーションとCI/CDパイプラインを静かに侵害し、国家主体の行為者にソースコードと秘密への長期的なアクセスを与えることができるかを強調しています。
チームはreact-refresh-updateおよび@jaime9008/math-serviceのプロジェクトを直ちに監査し、バージョン1.0.1–1.0.4および1.0.1–1.0.2をそれぞれロールバックまたは削除する必要があります。
防御者はmalicanbur[.]proおよび173.211.46[.]22:8080への発信トラフィックもブロックし、一時ディレクトリからのstart.vbsおよびmacspatch.shの実行をハント、config.pyおよびnvidia.pyを含むPylangGhostのPythonモジュールをスキャンする必要があります。
将来、組織は依存関係バージョンをピン留めし、厳密なロックファイルを有効にし、npmメタデータのみに頼るのではなく、パッケージコンテンツとインストール時の動作を検査する自動化されたサプライチェーンセキュリティツールを使用することを推奨されています。
高い価値を持つ開発者環境では、ビルドインフラストラクチャの分離、エグレスフィルタリングの強制、npm install中の異常なアーカイブ抽出とスクリプト実行の監視により、同様のキャンペーンへの露出を大幅に削減できます。
翻訳元: https://gbhackers.com/pylangghost-rat/