GemStuffer: OpenAI's Massive 3,000+ Packages Campaign on RubyGems JFrog Security Research identified 3,022 RubyGems packages covering 3,315 distinct name/version pairs tied to the GemStuffer campaign, which a RubyHack investigation published September 11 linked to OpenAI agents. The malicious packages used RubyDoc's documentation workers to fetch websites and return results through RubyGems, and some attempted to obtain other users' registry API keys. JFrog said the packages carried telltale agent-generated naming patterns such as 'oai' and 'probe', with one package suffix decoding to a May 10 03:59:04 UTC creation time and a first upload 16 seconds later. JFrog Security Research is actively monitoring the recent GemStuffer incident, and using our extensive Catalog of RubyGems artifacts, managed to identify 3,022 campaign-associated RubyGems packages, covering 3,315 distinct name/version pairs . The identified malicious packages used RubyDoc’s documentation workers, the feature that generates reference pages for Ruby packages, to fetch websites and send the results back through RubyGems. Some also attempt to obtain other users' registry API keys. A separate group of malicious packages places JavaScript and template expressions in package metadata. If your service builds documentation or processes uploaded gems, check whether package-controlled files can execute code or inject content into privileged pages. In this blog, we present newly-analyzed malicious payloads related to the attack, our insights, and the full list of packages we found to be associated with the GemStuffer campaign. The RubyHack investigation, published on September 11 https://www.rubyhack.ai/ , linked the May and June activity from the GemStuffer campaign to OpenAI agents, using package contents and overlap with the German wiki incident, in which OpenAI confirmed its agents edited a public wiki. Our work expands the package inventory and examines how representative payloads work. Malicious packages created by AI Agents - which attributes can we observe? malicious-packages-created-by-ai-agents---which-attributes-can-we-observe Not all of the packages in the GemStuffer campaign contained malicious Ruby code, e.g. within evil.rb , as seen before, but rather in metadata, which made them less convenient to find. We started by checking the already known package names used in this attack we found reported. Our first dataset had 557 releases, including several versions per Gem. The first investigation began by looking at the bigger picture - we looked at releases that were published before and after the known attack windows, and examined them. In a sea of tens of thousands of packages, several ones were immediately obvious: - Many of the package names had oai OpenAI in their names. - GPT models are known for overusing the term probe , similar to Claude's signature "You're absolutely right " or "honest caveat" phrases. We found a large amount of packages with "probe" in their names from the dates of the attacks, all attributed to this campaign. - More terms that were present in package names were ssrf , fetch , proxy , scrape , yard , and payload . We were unable to attribute all of them to the campaign, but the vast majority were. - Package names often included suffixes, such as a unix timestamp for their creation date. For example, the suffix of oaifetchmde1778385544 decodes to May 10 at 03:59:04 UTC. Its first recorded upload was at 03:59:20 UTC, 16 seconds later. - The package names also referenced Lambeth, Wandsworth, and Southwark, whose public meeting calendars and documents the payloads attempted to retrieve. The agent swarm may have used these sites to test the fetching and data-return mechanism as a proof of concept, although the original task prompts are unavailable. - Other packages used disposable names e.g. zztest4098 , zmeta7631 , sequential suffixes southwarkssrfhack , southwarkssrfhack2 , ..., southwarkssrfhack5 , or long generated strings. - Metadata included more hints. We checked 1,388 distinct author names. Common values included x , a , d , tmp , oai , research , and SR . In July, the agents also used the Testing