概要:GitHub Actionsを狙ったタイポスクワッティング攻撃
11月7日金曜日、Veracode脅威リサーチは、GitHub Actionsを利用する開発者を標的とした危険なタイポスクワッティングキャンペーンを発見しました。悪意あるnpmパッケージ「@acitons/artifact」は、削除されるまでに206,000回以上ダウンロードされており、GitHubが所有するリポジリに重大な脅威をもたらし、機密性の高い認証トークンを危険にさらす可能性がありました。
この悪意あるパッケージは、公式のGitHub Actions Toolkitの一部である正規の「@actions/artifact」npmパッケージを模倣していました。攻撃者はパッケージ名で「ti」と「it」を入れ替えるという古典的なタイポスクワッティングの手法を用い、依存関係の名前を誤って入力する開発者を狙いました。この巧妙な偽装は効果を発揮し、疑うことを知らない開発者から数十万回のダウンロードを集めました。
巧妙なポストインストール攻撃の詳細
Veracodeの研究者たちは、パッケージの6つの悪意あるバージョンを特定しました。それぞれがパッケージインストール時に実行されるポストインストールフックを含んでいました。このフックは、一般的なアンチウイルス製品による検出を回避する難読化されたマルウェアをダウンロードし、実行しました。発見時、この悪意あるバイナリはVirusTotalでゼロのアンチウイルスベンダーによって検出されており、脅威の高度な性質を浮き彫りにしました。
攻撃チェーンは慎重に設計されていました。マルウェアは、Shell Script Compiler (shc) ツールを使用してコンパイルされた難読化されたシェルスクリプトで構成されていました。実行されると、環境変数を変更してペイロードをアクティブ化した後、bashから自身を再実行しました。これにより、難読化されたJavaScriptファイル「verify.js」を含むNodeパッケージが抽出され、実行されました。分析により、これはGitHub自体を標的とした精密なキャンペーンであることが明らかになりました。
verify.jsスクリプトには、GitHub Actionsビルド中にのみ設定されるGitHub固有の環境変数のチェックが含まれていました。悪意あるバージョンはマルウェア作成者によって削除されていました。マルウェアには明示的な標的ロジックが含まれており、リポジトリの所有者がGitHub組織自体を含む特定の標的と一致しない限り、静かに終了しました。最も重要なことに、マルウェアはビルド環境内で利用可能な認証トークンを窃取するように設計されていました。一度取得されると、脅威アクターはこれらのトークンを使用してGitHubを装った新しい悪意あるアーティファクトを公開し、下流のユーザーを危険にさらし、連鎖的なサプライチェーン攻撃を引き起こす意図がありました。
技術的な洗練と意図的な有効期限
このキャンペーンは、高度な運用セキュリティ実践を示していました。各悪意あるバイナリには、特定の期日後に自己終了するように設定されたハードコードされた有効期限が含まれていました。主要なサンプルはUTCの11月6日に期限切れとなり、別のサンプルは翌日に期限切れとなるように設定されていました。これは、長期的な検出を避けるための意図的な計画と、期間限定のキャンペーンを示唆しています。
GitHubは、2人のGitHubユーザーが削除されたことから、このマルウェアを特定したようです。難読化された「verify.js」内にはデータ窃取コードが見つかりました。データ窃取は暗号化されたチャネルを通じて行われました。マルウェアはリモートのコマンド&コントロールサーバーからAES暗号化キーを取得し、暗号化されたデータをGitHub Appベースのエンドポイントに送信することで、攻撃者のインフラストラクチャをさらに隠蔽していました。
Veracodeはnpmに悪意あるパッケージを通知し、その削除につながりました。Veracode Package Firewallの顧客は、研究者が脅威をトリアージした金曜日に即座に保護を受けました。さらに、Veracodeの研究者たちは、11月上旬に同じキャンペーンから「8jfiesaf83」という別の悪意あるパッケージの12バージョンを発見し、ブロックしました。
サプライチェーン攻撃への警告
この事件は、OWASP Top 10 2025で3番目に重要な脆弱性カテゴリにランク付けされているサプライチェーン攻撃の脅威が拡大していることを浮き彫りにしています。この攻撃は、タイポスクワッティングがCI/CDインフラストラクチャを侵害し、機密性の高い認証情報にアクセスするための効果的な手段であり続けていることを示しています。GitHub Actionsを使用する組織は、依存関係管理の慣行を精査し、パッケージインストールに追加の検証レイヤーを実装する必要があります。
