Dependency Firewall early access: 50% off the base fee. See pricing

RubyGems Dependency Firewall

A gem can execute third-party code when installed. Bytesafe blocks malware, vulnerable packages and policy violations before they reach your build. New releases can also be delayed, reducing exposure before malicious packages or vulnerabilities are identified.

Dependency Firewall sits in front of your existing repository, protecting developers, CI/CD pipelines and AI agents.

EU-based company · Software supply chain security since 2018.

Logs

Firewall rubygems-ci
StatusPackageRule
Allowed
rack@3.2.3
Exception
Blocked
strong_password@0.0.7
Known malware
Allowed
puma@7.0.4
Log all downloads
Blocked
sidekiq@8.0.8
Delay 7 days
Blocked
rest-client@1.6.13
Known malware
Allowed
rails@8.0.3
Log all downloads
Allowed
nokogiri@1.18.10
Log all downloads
Allowed
rspec@3.13.1
Log all downloads

Intercepts every RubyGems package request before it reaches you.

Every package install is a potential entry point. Traditional SCA tools find problems after packages are already in your environment. Dependency Firewall intercepts every RubyGems request before it reaches your developers, CI/CD pipelines or AI agents.

You define the rules: block packages with known CVEs, block known malicious packages, or delay newly published versions for a configurable period to give the ecosystem community time to surface zero-day threats.

Works in front of enterprise repository platforms and any RubyGems registry. No agent installs. No workflow changes.

Public RubyGems.org registry

Vulnerable and malicious versions included

Risky packages
Bytesafe

Dependency Firewall

Policy engine
Vetted packages only

Developers and CI/CD

Internal environment

What Dependency Firewall does for RubyGems

Each firewall runs the checks you turn on, on every package request. Rules block or log, and every decision is recorded.

Malware blocking
Blocks packages that match malware data, including malicious payloads and suspicious install hooks. Every block is logged with the package and the rule.
Vulnerability blocking
Blocks versions with CVEs above a CVSS or EPSS score you set, per firewall. New advisories apply on the next request.
Package delay
Holds newly published versions for a window you set, so malware feeds can catch a bad release before your builds install it.
Exception workflow
Developers request an exception from the blocked install. The team you choose approves it, adjusting scope or expiry, or denies it with a comment. Every request and decision is in the audit log.
Dependency confusion
Upstream priority rules make internal package names always resolve from your private registry. A public package with the same name cannot take its place.
Package observations
Every package that passes records first-seen and last-seen time and request counts. When a new advisory lands, you see which firewalls served the package and since when.
Audit log
Every allow, block and exception is logged with the package, version, rule, requester and time. Export it to your SIEM.

Half the base fee for your first 3 months

€49.50 instead of €99 per month, plus €100 usage credit. Start with a 14-day trial. See what's new

How RubyGems installs go through the firewall

Your package manager asks the firewall instead of the public registry. The firewall fetches the package from upstream, checks it against your rules and serves it only if it passes.

  1. 1

    Change the registry setting

    Point Bundler or gem at the firewall, on laptops and CI runners. Lockfiles, manifests and install commands stay the same.

  2. 2

    Set the rules

    Block by CVSS or EPSS score, known malware, license or package age. Shared rules go on a baseline firewall that team and CI firewalls inherit, and they run first.

    Rules on a firewall: block downloads with CVSS above 7, log all downloads, and a 7-day delay inherited from npm-baseline
    Rules on the npm-ci firewall. The 7-day delay is inherited from npm-baseline. Shown for npm.
  3. 3

    Read the log

    A version held back by a rule is left out of the version list, so the package manager resolves an older one. A blocked download fails the install. Every decision is logged with the rule and who asked.

    Firewall log: lerna, nx and js-yaml versions blocked by the 7-day delay, other packages allowed
    New versions held by the delay rule, next to allowed downloads. Shown for npm.

Point Bundler at Bytesafe Dependency Firewall

Set Bundler's mirror config to route rubygems.org through the firewall. Every Gemfile keeps naming rubygems.org, so there are no Gemfile or Gemfile.lock changes and the project stays portable.

Works with the repositories you already use

JFrog Artifactory
Sonatype Nexus
GitLab
GitHub Packages
Azure Artifacts
AWS CodeArtifact

Inside Dependency Firewall

The screens your developers and security team work with.

1 of 7 · Logs

Live firewall logs

Every request is logged: package name, version, status, ecosystem, which firewall evaluated it, which rule triggered and who requested it. Filter by firewall or user, and tail live during incidents or CI/CD runs.

Developers get a fast answer when an install fails, and AppSec gets an audit trail for every decision.

Live request log with blocked packages and rule details
Live request log with blocked packages and rule details

Known attacks on RubyGems.org

Malicious releases, account takeovers and dependency confusion have all been used against packages there.

rest-client

Account takeover

An attacker used a maintainer's password, leaked in an earlier breach, to publish four malicious versions of rest-client. Version 1.6.13 ran a hidden payload from Pastebin.com, but only in installations where Rails.env started with p, as in production. The gem was downloaded about 1,000 times before RubyGems pulled it and locked the account.

SleeperGem

Dormant account hijack

Two dormant RubyGems maintainer accounts were hijacked within hours of each other in July 2026. One published four malicious versions of git_credential_manager, a new package whose dropper fetched a payload from a fake Forgejo repository, disabled SSL verification, and ran it via PowerShell or shell, first checking around 30 CI-platform environment variables so it would only fire on developer machines. The other compromised account belonged to a Fastlane plugin already at 574,661 downloads.

GemStuffer

Build pipeline RCE

Over 2,000 packages hit RubyGems.org in two days in May 2026, most of them junk from a registration flood, but some carrying a working exploit: a crafted .yardopts file that RubyDoc.info evaluates when it builds a gem's documentation, letting code run on RubyDoc's own servers. RubyGems suspended new signups for several days to add rate limiting. Researchers suspect automated agents drove the flood; OpenAI says it cannot confirm whether the packages came from AI agents or people.

Also blocks vulnerable and malicious container images before they reach a build agent or production node.

Container Dependency Firewall

Compared with other enterprise dependency firewalls

Other enterprise dependency firewalls are often bundled into repository platforms. Dependency Firewall is an independent firewall that works with any registry and is built in the EU.

CriterionDependency FirewallOther enterprise firewalls
Works with your existing repositoryYes, as a proxy in front of itBundled into their platform most often
Deploys in minutesYesUsually weeks of platform work most often
Predictable pricingOne meter sets the price, no overageSeveral axes with overage most often
EU data residencyYesNo, US-based most often

Frequently asked questions

How do I point Bundler at Bytesafe Dependency Firewall?
Set bundle config set --global mirror.https://rubygems.org to the firewall URL, then set the matching credential in bundler's global config. Every existing Gemfile keeps naming rubygems.org, so there are no Gemfile or Gemfile.lock changes and the project stays portable. The dashboard generates the exact commands for your firewall when you create it.
Does gem install work, or only Bundler?
Both. For gem install, pass the firewall with --clear-sources --source instead of adding it with gem sources --add: adding a source makes RubyGems fetch the legacy Marshal index, which the firewall does not serve, while passing it per command goes through the compact index.
Does gem push work through the firewall?
Yes. Pushes and yanks are forwarded to the registry you configure as the publish target, and scanned for malware and secrets first. gem push authenticates with GEM_HOST_API_KEY rather than Bundler's own credentials, so set that separately for the publish path.
Is RubyGems support production ready?
Yes. The full rule set applies: the compact index, .gem downloads, the legacy gemspec route older RubyGems clients still request, and gem push and gem yank, on the same vulnerability, malware and license data as every other ecosystem. See docs.bytesafe.dev/firewall/ecosystems/rubygems for current status.
Can different RubyGems projects have different policies?
Yes. You can create separate firewalls per project. They are lightweight and easy to clone. You can also differentiate by the user or token used for the session. Firewall configurations are small JSON files that can be managed in Git.
Can RubyGems packages be delayed before they reach developers?
Yes. Dependency Firewall can hold newly published package versions for a window you configure before they reach developers or pipelines. Centralizing delay rules means the protection applies automatically across all teams and pipelines without each project configuring it separately.
What happens if a RubyGems package passes through but malware is found later?
The firewall tracks all packages via observations: first-seen date, last-seen date, and which firewalls they passed through. When new malware data surfaces, you can see exactly which projects downloaded the affected package and when.
Can firewall rules be automated?
Yes. All configuration is available via API. Configurations can be version-controlled in Git and deployed through your existing automation. All changes are tracked with full rollback support.
Does Dependency Firewall work with enterprise repository platforms?
Yes. Dependency Firewall speaks the same protocols as your package managers, so it is fully transparent to enterprise repository platforms and package registries, including JFrog Artifactory, Sonatype Nexus, GitLab, GitHub Packages and Azure Artifacts.
How is licensing structured?
Two plans: Cloud for SaaS and Enterprise for custom deployment, Managed Cloud or On-Premise. Cloud is priced on whichever you use most: active users, packages scanned or downloads served. See pricing for plan details and add-ons.

Put RubyGems installs behind the firewall

Try the setup above on one project and check the firewall log after the next install. Or book a demo and go through your registries and rules with an engineer.

Book a Demo