攻撃者、npmの信頼済み公開機能を悪用してGHAPPIERキャンペーンを展開

攻撃者がnpmの信頼済み公開(trusted publishing)機能を悪用したサプライチェーン攻撃で、これまで報告されていなかったローダー「GHAPPIER」を、正当な出所証明(プロベナンス)が付与された悪意あるリリースを通じて正規パッケージに紛れ込ませていたことが分かりました。

9月20日に公開されたレポートの中でCloudSEKは、何者かが9月9日に105分間にわたり@dforge-core/dforge-mcpのメンテナーアカウントを使用していたと報告しています。最初の悪意あるリリースであるバージョン0.2.20は失敗し、パッケージのインストール自体を破壊してしまいました。その後、ローダーを仕込んだバージョン0.2.21が公開され、35分38秒間にわたり最新バージョンとして留まりました。

攻撃者はすでにメインブランチへのプッシュ権限を持っていました。CloudSEKはその経緯までは特定できなかったとしながらも、悪意ある拡張機能やパッケージに感染した開発者のマシンが原因である可能性を指摘しています。

有効なプロベナンス、しかし出所は不正

攻撃者はまず3行を変更し、メインブランチへのあらゆるプッシュがリリースワークフローを起動するようにしました。その14分後には、無人でも公開できるようワークフロー自体を書き換えています。ビルドはOIDC信頼済み公開機能を使ってGitHub Actions上で実行され、その証明(アテステーション)は現在もSigstoreの公開ログに残っており、攻撃者のコミットが記録されています。

「プロベナンスが証明するのは、成果物がどこでビルドされたかであって、そのソースが正当なものであったかどうかではありません」とCloudSEKは述べています。レジストリはリポジトリのCI IDを信頼するため、プッシュ権限がそのまま公開権限となり、このリリースはnpmの監査署名も問題なく通過してしまいました。

このローダーは99KBのファイル内のわずか1行にすぎず、4段階から成る攻撃チェーンの入り口となっていました。最終的には汎用のリモートシェルにたどり着き、実行と同時に自身をディスクから削除する仕組みになっています。ローダーが起動するのはインストール時ではなくMCPサーバーが起動された際だったため、0.2.21をインストールしても起動しなかったシステムではローダーは実行されませんでした。

CloudSEKは、GitHubやnpm、あるいはいずれのパッケージに対しても不正な侵入行為は確認していないとしています。「この報告に記載されたすべての行為は、盗まれた鍵を使って行われた、認可された操作です」と同社は述べています。

npmサプライチェーン攻撃についてさらに読む: 攻撃者がRed HatのnpmスコープをハイジャックしクラウドのシークレットDを窃取

PolinRiderとの関連、北朝鮮の関与は未確認

CloudSEKはGHAPPIERを少なくとも65件の公開リポジトリ、73個の感染ファイル、22個のアカウントにわたって追跡しました。別の被害者のリポジトリで見つかった2つ目のペイロードは、OpenSourceMalwareが2026年3月から追跡しているPolinRiderというキャンペーンと完全に一致していました。

このペイロードは、約0.20ドルという少額のEthereum取引から設定情報を読み込む仕組みになっており、停止すべきドメインや押収すべきホストが存在しません。他の研究者はPolinRiderを北朝鮮によるものと結び付けていますが、CloudSEKは自社が独自に行った1件の検証ではそれを裏付けられなかったとしています。

CloudSEKは、PolinRiderにこれまで確認されてきた認証情報窃取の手口が、メンテナーアカウントへの侵入経路として最も可能性が高いとの見方を示しています。また、いずれの組織においても侵害の成功を示す証拠は見つかっていないとしています。

レポート公開時点で、OSVやGitHubのデータベース、あるいはメンテナー自身からのアドバイザリは公開されていませんでした。ただし、取り下げから5日が経過した時点でも、攻撃チェーンの各段階は依然として応答する状態にあったといいます。

CloudSEKは、パッケージをバージョン0.2.22に固定すること、0.2.21を指定しているロックファイルはそれ自体を侵害の兆候として扱うこと、そしてインプラント本体ではなく攻撃チェーンが残す痕跡を捜索することを推奨しています。また、リリースワークフローのトリガー部分に対する変更を検知して警告を発する仕組みも推奨しています。今回のケースでは、この変更はワークフローが公開可能になる14分前に行われていました。

翻訳元: https://www.infosecurity-magazine.com/news/attackers-abuse-npm-trusted/

本記事は infosecurity-magazine.com の記事を翻訳・要約したものです。