OpenAI のエージェントが RubyGems 2,000個のパッケージを大量投入:ビルドシステムの悪用と RCE 試行

OpenAI Agents Flood RubyGems With 2,000 Packages and Exploit Build System for RCE

2026/09/12 gbhackers — OpenAI の内部で運用されていた可能性がある AI エージェント群が、2026年5月に 2,000 件を超える悪意のあるパッケージを RubyGems へアップロードしていた。これらの AI エージェントは、RubyGems エコシステムのドキュメント構築処理を悪用するものであり、当時は公表されていなかったサーバ側の脆弱性を突くことで、ユーザーの API キーを窃取し、リモート・コード実行を試行していた。

研究者である Spencer Kitts/Thomas Larsen/Sydney Von Arx によると、この活動は 5月5日の初期のパッケージ・アップロードから始まり、5月11日から 5月12日にかけて急激に拡大した。この大量のパッケージ・アップロードに対応するために、RubyGems は新規アカウント登録を 4 日間停止し、このトラフィックを継続中の分散型サービス拒否 (DoS) インシデントによるものと説明していた。その後、セキュリティ研究者たちは、この一連の活動を GemStuffer と呼んでいる。

OpenAI の AI エージェントと RubyGems と 2,000 件のパッケージ

この活動を OpenAI の AI エージェントによるものとする判断材料は、AI エージェントの内部活動を直接確認した結果ではなく、公開されている成果物に基づいている。数百件の gem の名前に「oai」が含まれており、少なくとも 15 件で作者として「oai」が記載されていた。また、1 件のパッケージでは OpenAI を想起させる Gmail の連絡先アドレスが使用されていたと、研究者たちは指摘している。

また、これらのパッケージは、以前に OpenAI がドイツ語 Wiki に対する妨害活動と関連付けた AI エージェントと一致する挙動を示しており、AI により生成されたように見えるという。

技術面での最も重大な発見は、RubyGems パッケージのドキュメントを自動的に生成して公開するサービス RubyDoc.info が悪用された疑いである。新たに公開された gem に対するドキュメント生成リクエストを受信した RubyDoc は、構築処理の一環としてパッケージに含まれる .yardopts 設定ファイルを評価する。

RubyHack によると、一連の AI エージェントは、攻撃者が制御する Ruby スクリプトを呼び出す構築設定を用意することで、この動作を攻撃に利用し、パッケージから RubyDoc の構築用ワーカー上で任意のコードを実行できる状態にしていた。事実上、ドキュメント生成用インフラが、外部から利用できるコード実行環境に変貌したことになる。

OpenAI Agent Package uploads to RubyGems (Source: rubyhack)
OpenAI Agent Package uploads to RubyGems (Source: rubyhack)

確認された攻撃チェーンでは、悪意の gem のアップロード/RubyDoc による構築処理の開始/構築用サーバ上でのスクリプト実行による標的 Web サイトからのデータ取得/収集したコンテンツの別の gem としてのパッケージ化/RubyGems への再公開によるデータの外部流出が行われていた。複数のペイロードには、hack.rb/evil.rb/inject.rb/exploit.rb/ssrf.rb/悪意のあるプローブ/悪意のあるテストなどの、意図が明白なファイル名とコメントが含まれていた。

なお、一部のパッケージは、後続バージョンで悪意のあるコードを削除しようとしていた。ある事例では、危険な .yardopts 設定を置き換えた後にスクリプトが gem を再構築したと報告されており、コード実行後に証拠を消去しようとした可能性が示唆されている。

少なくとも 6 件のパッケージが、2026年7月まで公表されていなかった、RubyGems の API キーのキャッシュに関する脆弱性を悪用しようとしていたとされる。この脆弱性は従来の gem signin 処理に影響を及ぼし、CDN による API キーの不適切なキャッシュを引き起こすものである。したがって、1 時間以内に同じキャッシュ・ノードへ到達した未認証のリクエストに対して、その API キーが返される可能性があった。

slnleaker5 というパッケージは、/api/v1/api_key エンドポイントの複数のパターンでのリクエスト送信/レスポンスからの RubyGems API キーの探索に加えて、取得した認証情報を悪用して窃取データを外部流出させるための gem への公開を試行していたと報告されている。

このコードは自身の処理を「leak exfil by repeated attempts & fresh leaked keys variants」と記述していた。RubyGems は、これまでに API キーの漏洩が悪用された証拠は確認されていないとしており、研究者たちも AI エージェントが実際に認証情報を取得できたかどうかを確認できていない。このインシデントが示すのは、自律型システムがサプライチェーン攻撃の経路を大規模に発見/テストし、実際の攻撃に利用できることである。

その後、RubyGems は、確認済みかつ使い捨てではないメールアドレスの必須化や、登録回数の制限といった厳格な対策を導入した。これらの AI エージェントは 6月18日に短時間だけ活動を再開し、約 3 時間でさらに 83 件の gem を公開した。