信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
GemStuffer——150本超の偽RubyGemがパッケージレジストリを「データ流出チャネル」として悪用した新型手法
GemStufferは150本超の偽Gemを使い、英国地方議会の公開データをRubyGems経由で外部へ持ち出す前例のない手法。開発者への直接攻撃ではないが、パッケージレジストリが攻撃インフラ化する新パターンを示した。
一言結論
GemStufferは従来のサプライチェーン攻撃(悪意あるコードを開発者に実行させる)とは異なり、RubyGemsレジストリ自体をデータ流出の経路として使う。英国地方政府ポータルのデータを150本超の偽Gemに埋め込み外部へ送出。RubyGemsは新規アカウント登録を一時停止し、パッケージレジストリが攻撃インフラとして利用される新パターンが確立された。
何が起きたか
2026年5月13日、セキュリティ企業 Socket.dev と The Hacker News が GemStuffer キャンペーンを報告した。
攻撃者は 150本以上の偽 RubyGem を公式レジストリ(rubygems.org)にアップロードし、英国の地方議会ポータルから取得したデータをパッケージに埋め込んで外部サーバーへ送出した。RubyGems.org はこの事態を受けて 新規アカウント登録を一時停止した。
GemStuffer 基本情報:
発見: 2026年5月13日(Socket.dev 報告)
標的: RubyGems レジストリ
規模: 150本超の偽 Gem
流出元: 英国地方議会ポータル(Lambeth・Wandsworth・Southwark 区等)
流出データ: 議会カレンダー・議題一覧・委員会リンク(公開情報)
対応: RubyGems が新規アカウント登録を一時停止
従来のサプライチェーン攻撃との違い
GemStuffer を理解するうえで最も重要な点は、攻撃の目的とターゲットが通常とは逆であることだ。
❌ 従来のサプライチェーン攻撃:
攻撃者 → [悪意ある Gem を publish]
開発者 → [gem install 悪意あるGem]
開発者のマシン → [マルウェア実行・クレデンシャル窃取]
目的: 開発者を踏み台にする
✅ GemStuffer の手法:
攻撃者 → [英国議会ポータルをスクレイピング]
攻撃者 → [データを Gem に埋め込んで rubygems.org に publish]
rubygems.org → [Gem のメタデータ・ファイルを外部配信]
攻撃者のサーバー → [Gem の公開 API / CDN 経由でデータ回収]
目的: レジストリ自体をデータ流出の「宛先」として使う
つまり、開発者が GemStuffer の Gem をインストールしても直接の被害はない。攻撃者が悪用したのは RubyGems のインフラそのもの(公開 CDN・検索 API・Gem ファイルのパブリックアクセス)だ。
仕組みの詳細
データの埋め込み方法
偽 Gem の構造は通常の Ruby Gem に酷似しているが、内部に以下を含む:
# 偽 Gem 内部の構造(概念的な例)
# lib/council_data_XXXXXXXX.rb
# 表向きは何かのユーティリティに見せかける
module FakeUtility
VERSION = "1.0.0"
# 実際にはスクレイピングしたデータが定数として埋め込まれている
EXFIL_PAYLOAD = {
source: "lambeth.gov.uk/council/calendar",
data: "BASE64_ENCODED_SCRAPED_CONTENT_...",
timestamp: "2026-05-12T18:34:00Z"
}.freeze
end
データ回収の仕組み
攻撃者は Gem のアップロード(push)に使った API キーを使い、Gem のダウンロード統計や別のエンドポイント経由でデータが意図した場所に届いていることを確認できる。あるいは単に rubygems.org の CDN URL から Gem ファイルを取得するだけでよい。
流出フロー:
1. 攻撃者が英国地方議会サイトをスクレイピング
2. スクレイピングデータを Gem ファイルに埋め込む
3. gem push --key <hardcoded_api_key> fake_gem-1.0.gem
4. rubygems.org の CDN (https://gems.rubygems.org/gems/...) に公開される
5. 攻撃者サーバーが CDN URL から Gem を取得し、埋め込みデータを抽出
パッケージレジストリは本来「配信」のための仕組みだが、今回はその公開 CDN を「受信箱」として逆用した。
なぜ公開データなのか
流出したのは Lambeth 区・Wandsworth 区・Southwark 区等の議会カレンダーや議題リストといった誰でも閲覧できる公開情報だ。なぜわざわざパッケージレジストリを使って流出させるのか。
考えられる理由:
| 理由 | 説明 |
|---|---|
| エクスフィルチャネルのテスト | 秘密情報を流す前の実証実験 |
| ファイアウォール迂回 | 企業ネットワーク内の CI/CD から rubygems.org は通常許可されている |
| 痕跡の難読化 | 正規の Gem トラフィックに紛れ込む |
| C2 チャネル候補 | 公開情報を「疑似 C2 指令書」として利用する下地作り |
公開データであること自体は法的・倫理的に問題が少ないが、同じ手法で機密データを流せることを示した点が深刻だ。
RubyGems の対応
対応タイムライン:
2026-05-13 Socket.dev が偽 Gem 群を検出・通報
2026-05-13 RubyGems が偽 Gem 150本超を削除
2026-05-13 RubyGems が新規アカウント登録を一時停止
2026-05-14 The Hacker News が報告
(継続中) RubyGems がアカウント検証フローを強化中
新規登録の停止は、攻撃者が大量の使い捨てアカウントで Gem をアップロードしていたため。
開発者・組織への影響と対応
直接の被害リスクは低いが
GemStuffer の Gem をインストールしても、直接のマルウェア感染は確認されていない。しかし以下の間接的リスクがある:
リスク1: 名前の衝突(Typosquatting の懸念)
- 偽 Gem が正規パッケージに似た名前を使う場合
- → Gemfile.lock で正確なバージョンと SHA を固定する
リスク2: CI/CD パイプラインの悪用
- 同じ手法で悪意あるコードを内部システムへ送り込める可能性
- → gem install 時の --verify-signatures オプション活用
リスク3: 次フェーズへのエスカレーション
- 今回は実証。次はクレデンシャルや内部データが対象になりうる
今すぐできる対策
# Gemfile でバージョンと source を明示する
source "https://rubygems.org" do
gem "rails", "7.2.1" # 曖昧な指定より固定が安全
end
# Gemfile.lock を必ずコミットし、想定外の変化をレビューする
# CI では bundle install --frozen を使う
bundle install --frozen
# gem に署名があるか確認
gem cert --list
# 既存の Gemfile.lock を監査して不審な gem がないか確認
bundle audit check --update
パッケージレジストリが「攻撃インフラ」になる時代
GemStuffer は npm・PyPI・RubyGems・NuGet などのパッケージレジストリが 攻撃者に都合のよいインフラとして利用されるパターンを新たに確立した。
既存のパターン:
- タイポスクワッティング(typosquatting)
- 依存関係ハイジャック(dependency confusion)
- メンテナアカウント奪取
新しいパターン(GemStuffer):
- レジストリを「データ流出チャネル」として利用
- 開発者への攻撃ではなく、レジストリ自体を踏み台化
まとめ
| 項目 | 内容 |
|---|---|
| キャンペーン名 | GemStuffer |
| 発見日 | 2026年5月13日 |
| 規模 | 150本超の偽 RubyGem |
| 手法 | レジストリを流出チャネルとして悪用 |
| 流出データ | 英国地方議会の公開情報 |
| 開発者の直接被害 | 現時点では確認されていない |
| RubyGems の対応 | 偽 Gem 削除・新規登録一時停止 |
これまでのサプライチェーン攻撃の常識は「悪意あるパッケージを開発者にインストールさせる」ものだったが、GemStuffer はその方向性を逆転させた。今後、パッケージレジストリをデータ流出・C2 チャネルとして使う攻撃が増える可能性があり、セキュリティチームはパッケージレジストリへのアウトバウンドトラフィックの監視も視野に入れる必要がある。
参考リンク
- GemStuffer Abuses 150+ RubyGems to Exfiltrate Scraped U.K. Council Portal Data - The Hacker News
- GemStuffer Campaign Abuses RubyGems as Exfiltration Channel - Socket.dev
- RubyGems Suspends New Signups After Hundreds of Malicious Packages Are Uploaded - The Hacker News
免責: 本記事の攻撃フロー図は公開情報をもとにした概念的な説明であり、実際のエクスプロイトコードではない。