ブログ一覧に戻る
ベストプラクティス2026年7月19日3分で読めます

SleeperGem:長期休眠アカウントを悪用したRubyGemsサプライチェーン攻撃

SleeperGem: RubyGems supply chain attack targets dormant maintainer accounts

ベストプラクティス

この記事のポイント

【なぜ重要か】 RubyGemsでは珍しいサプライチェーン攻撃が確認された。長年更新されていない正規メンテナーアカウントを乗っ取り、悪意のあるgemを公開するという手口で、単一アカウントの侵害にとどまらず、無関係な別メンテナーのアカウントも同時に侵害されていた。npmやPyPIでは1年以上前から見られた攻撃パターンが、RubyGemsでも初めて本格的に確認された事例となる。...

【なぜ重要か】 RubyGemsでは珍しいサプライチェーン攻撃が確認された。長年更新されていない正規メンテナーアカウントを乗っ取り、悪意のあるgemを公開するという手口で、単一アカウントの侵害にとどまらず、無関係な別メンテナーのアカウントも同時に侵害されていた。npmやPyPIでは1年以上前から見られた攻撃パターンが、RubyGemsでも初めて本格的に確認された事例となる。

【ポイント】

  • 攻撃者はgit_credential_managerという新規gemを約9時間かけて4バージョン(2.8.0〜2.8.3)立て続けに公開し、段階的にペイロード配信の仕組みを構築した。最終的にはgemをrequireするだけで(明示的なインストールや実行なしに)悪意のあるスクリプトが起動するよう設計された。
  • ペイロードはpublic Forgejoインスタンス(git.disroot[.]org)上のリポジトリからバイナリを取得する仕組みで、証明書検証を意図的に無効化した上でダウンロードし、シェルまたはPowerShellに渡して実行する。
  • GitHub Actions、GitLab CI、CircleCI、Travis、Jenkinsなど約30種類のCI環境変数を検出した場合は何も実行しない仕組みが組み込まれており、使い捨てのCIランナーではなく開発者のラップトップを狙って設計されていた。
  • 同一攻撃者が管理する別のgem(Dendreoなど)にも新バージョンが公開され、git_credential_managerが依存関係として追加された。さらに、累計574,661ダウンロードを持つfastlane-plugin-run_tests_firebase_testlab(全く無関係な別メンテナーのgem)にも悪意のあるバージョンが公開されており、侵害は少なくとも2つの無関係なアカウントに及んでいた。
  • 攻撃対象となったのは6〜7年間更新のなかった休眠アカウントで、「SleeperGem」という名称はこの「眠っていた普通のアカウントを乗っ取る」手口に由来する。

【まとめ】 RubyGemsにおいても、長期間更新のない休眠メンテナーアカウントがサプライチェーン攻撃の足がかりになることが実証された。RubyGemsを利用する開発者・セキュリティ担当者は、依存関係に含まれるgemのメンテナーアカウントの状態や、突然公開された新バージョンに対して注意を払い、不審なgemが依存関係に混入していないか定期的に確認することが推奨される。

原文を読む

Aikido Security Blog

英語で詳細な技術情報を確認

原文を読む

コメント・質問

この記事についてのコメントや質問を投稿できます

コメントを投稿するにはログインが必要です

ログインする

読み込み中...