概要
- 2026年6月18日、GitHub上で大規模なマルウェア配布キャンペーンを発見
- 10,000件以上のリポジトリがTrojanマルウェアを配布していることを特定
- これらのリポジトリは異なる名前・コントリビューターを持ち、フォークではない
- 独自のパターンに基づくスクリプトで検出を実施
- GitHubの対応遅延やAPI制限、攻撃手法の考察
GitHub上の大規模マルウェア配布キャンペーン発見
- 2026年6月18日、 GitHub上で大量のマルウェア配布リポジトリ を発見
- 10,000件以上 のリポジトリがTrojanマルウェアを配布
- すべて異なる コントリビューター、異なる リポジトリ名、 フォーク ではない独立したリポジトリ
- 共通パターン: READMEにzipアーカイブへのリンク 追加、コミット履歴のコピー、数時間ごとにコミットの削除と再追加
- 自作スクリプト でこれらのリポジトリを検出
発見の経緯
- Googleで自身のプロジェクト名を検索した際、 他者によるコピーリポジトリ を発見
- コミット履歴やコントリビューターもコピーされている
- READMEに zipアーカイブへのリンク が追加されていた
- GitHubでタグ検索中にも 同様のリポジトリ を発見
- これらのリポジトリは 数時間おきにコミットを削除し、同じ内容で再コミット
- GitHubサポートに削除依頼 を送るも2週間以上反応なし
- 1ヶ月後、ようやくGitHub側で対応・削除
マルウェアの実態
- zipアーカイブには以下の4ファイルが含まれる
- Application.cmd または Launcher.cmd
- loader.exe, luajit.exe, もしくは別名のexeファイル
- ランダムな名前のcsoまたはtxtファイル
- lua51.dll
- VirusTotal でアーカイブ内のexeを直接スキャンすると Trojan検出
- アーカイブのリンクのみではウイルス検出されない
検出パターンの確立とスクリプト開発
- 共通パターンを抽出し、 検出スクリプト を作成
- 数時間ごとにコミット削除・再コミット
- READMEのみが更新
- READMEにzipアーカイブへのリンク
- 他リポジトリのコミット履歴をコピー
- 新規リポジトリ(フォークではない)
- コントリビューター・リポジトリ名が全て異なる
- GitHub API制限 (1トークンあたり1時間5,000リクエスト)により、全リポジトリの網羅は困難
- gharchive サービスを利用し、直近数日間のコミットプッシュイベントを抽出
- 1日あたり1,600万件のコミットプッシュ、うち数時間ごとに更新されるリポジトリは3,000件
- 追加フィルター
- ユーザーによるコミットのみ
- 最終コミットと前回コミットの間隔が1ヶ月以上
- 複数コントリビューター
- 最終的に 14件 のみが完全一致
- 当初の「数時間ごと更新」フィルターが厳しすぎたと判明
- フィルターを「24時間以内に1〜24回更新」に変更
- 40,000件 の候補から 10,000件 がパターンに一致
GitHubの対応と現状
- これらのリポジトリは 数ヶ月〜1年以上前から存在
- GitHubは 自動検出・自動削除 を行っていなかった
- スクリプトで検出したリストを GitHub上で公開
- その後、 GitHubが順次削除を開始 し、大半が削除済み
攻撃者の手法と目的の考察
- 新規リポジトリのみをクローン し、検索エンジンの上位表示を狙う
- コミットの削除と再コミット でGitHubのセキュリティアルゴリズムの回避を試みる
- コミット履歴とコントリビューターのコピー で信頼性を偽装
- 人気リポジトリではなく新規を狙う理由 は、低ボリューム検索ワードでの上位表示とタグ経由の流入を狙うため
- READMEのみを更新、「Update README.md」という同一コミット名を使うのも自動検出回避の一環と推測
残された課題と疑問
- なぜ GitHubの自動検出 が機能しなかったのか
- exeファイルの正体 ・挙動の詳細
- 実際の 被害規模 やダウンロード数
- さらなる 攻撃パターンの進化 の可能性
結論と提言
- GitHub API制限 のため、個人では全リポジトリの網羅的監視は不可能
- GitHub運営は 全リポジトリの静的解析・ウイルススキャン が可能な立場
- 今回は 個別通報を断念、セキュリティチームへの直接連絡を推奨
- 2024年4月には 109件の同様事例 を報告した記事も存在
- GitHubが削除対応を開始 し、現在はほとんどのリポジトリが削除済み
参考リンク・スクリプト
- Git Malware Finder(GitHubリポジトリ検出スクリプト)
- How 109 Fake GitHub Repositories Delivered SmartLoader and StealC(2024年4月記事)