PolinRiderサプライチェーン攻撃キャンペーンが大規模に拡大しています。攻撃者はGitHubメンテナーアカウントを侵害し、複数のエコシステムにまたがって感染パッケージのバージョンを公開していることが判明しました。
調査の結果、npm、Packagist、Goモジュール、そしてChrome拡張機能において、108個の固有パッケージ・拡張機能にわたる162件の悪意あるリリース成果物が確認されました。この活動は、開発者を標的とする北朝鮮系の大規模クラスター「Contagious Interview」または「Famous Chollima」と関連付けられています。
PolinRiderの手口は、これまで通り開発者を的確に狙った計画的なものです。攻撃者はGitHubアカウントを侵害するか、アカウント復旧の悪用や期限切れドメインを悪用する手口でメンテナー権限を取得し、正規のリポジトリを改変して難読化されたJavaScriptローダーを仕込みます。
これらのローダーは主に2つの手法で隠蔽されています。ひとつは、実行可能なコードが標準の表示幅を超えるように空白でパディングした1行のペイロードを埋め込む方法、もうひとつは偽の.woff2フォントファイルとしてペイロードを偽装する方法です。
実行のトリガーとなるのは開発者向けツールであることが多く、特に注目されるのが「runOn」:「folderOpen」と設定されたVS Codeのタスク構成です。この設定により、開発者がプロジェクトを開いた時点で隠されたペイロードが実行されてしまいます。
典型的な事例として、Xpos587というGitHubアカウントが挙げられます。このアカウントでは、2026年6月23日という短い時間帯に複数の無関係なリポジトリが改変されており、アカウント乗っ取りに一致する挙動が確認されました。
Socketによると、テレメトリデータからは本キャンペーンがnpmにとどまらず他のエコシステムにも拡大していることが分かります。npm成果物に加え、80件の侵害されたGoモジュール、10件のPackagistパッケージ、そして1件のChrome拡張機能が確認されました。
このケースでは、リポジトリの改変後に悪意あるGoモジュールのリリースが公開されており、攻撃者が公開用の認証情報を入手した場合、リポジトリの侵害がレジストリの成果物にまで波及し得ることを示しています。
GitHubメンテナーアカウント
PolinRiderが用いる重要な回避手法のひとつが、Git履歴の書き換えです。攻撃者はフォースプッシュや日付を偽装したコミットを行い、悪意ある変更をあたかも古く無害なものであるかのように見せかけます。
この手口により、GitHubのファイル表示画面や見た目上のコミットタイムスタンプを侵害の兆候の判断材料として頼ることができなくなります。防御側は、単に見かけ上のコミット履歴だけでなく、リポジトリのアクティビティログとフォースプッシュのイベントを確認する必要があります。
markfetchをはじめとするXpos587の他のプロジェクトに対するSocketの分析でも、まさにこのパターンが確認されています。リポジトリのページ自体は変更されていないように見える一方で、Activityタブでは最近の履歴書き換えが明らかになっています。
Xpos587の事例では、対象アカウント配下のリポジトリが改変された後に、影響を受けたGoモジュールの悪意あるバージョンが公開されました。
難読化を解除すると、JavaScriptローダーはブロックチェーンおよび公開RPCサービス(TRON、Aptos、BNB Smart Chain)に接続し、暗号化された第2段階のペイロードを取得することが分かりました。
これらのペイロードは埋め込まれたXORキーで復号され、eval()を通じて実行されます。確認されている後続ペイロードには、DEV#POPPERおよびOmniStealerがあり、リモートアクセス機能、認証情報・ウォレットの窃取、そしてsocket.io経由のC2機能を提供します。
ただし、このローダーのアーキテクチャはモジュール式であるため、攻撃者の対応次第で今後さらに別のマルウェアファミリーを配信できる可能性があります。
防御側は、影響を受けたバージョンをインストールした環境については侵害を受けたものと想定して対応すべきです。直ちに取るべき対応として、フォレンジック証跡の保全、悪意ある成果物を取得したすべての開発者マシンの特定、影響を受けたバージョンの削除、そして既知の正常なロックファイルからの再構築が挙げられます。
さらに、フォルダを開いた際に実行するよう設定されたVS Codeのタスク設定や、通常とは異なるファイルタイプを実行するコマンド(例:node が.woff2ファイルを実行するケースなど)についても調査対象とすべきです。
npm、GitHub、PyPI、RubyGems、クラウド、CI/CD、SSH、アプリケーションの各キーなど、露出した機密情報のローテーションは、クリーンな環境のマシンから実施する必要があります。
リポジトリについては、.vscode/tasks.json、config.js、vite.config.js、eslint.config.js、およびフォント・静的アセットのディレクトリに不審な変更がないか監査し、レジストリの公開履歴をリポジトリのアクティビティと突き合わせて、想定外のリリースがないか確認する必要があります。
侵害指標(IoC)
Xpos587 — GitHubアカウントXpos587/git2mdXpos587/markfetchArtiffusion-Inc/mirofishsevenspan — Packagist名前空間7span — GitHub組織7span/react-list
注: IPアドレスおよびドメインは、誤って名前解決やハイパーリンク化されることを防ぐため、意図的にディフェング(無害化)処理を施しています(例: [.])。再度有効な形式に戻す作業は、MISP、VirusTotal、あるいは自組織のSIEMなど、管理された脅威インテリジェンス基盤上でのみ行ってください。
翻訳元: https://gbhackers.com/github-maintainer-accounts/