Open Source · · 1 day

Dormant RubyGems accounts woke up to publish a backdoor

Attackers took over two long-idle RubyGems maintainer accounts and published the first releases in years for Dendreo and a fastlane plugin. The loader skipped CI environments and installed a persistent daemon on developer workstations instead.

Between July 18 and 19, 2026, malicious versions of two long-dormant Ruby gems appeared on RubyGems.org, published from maintainer accounts that had been quiet for years. Researchers named the campaign SleeperGem.

The tell was the publishing history. Dendreo, a gem whose public release line had stopped at 1.1.2 in 2020, gained versions 1.1.3 and 1.1.4 on July 18. fastlane-plugin-run_tests_firebase_testlab, untouched since 2019, gained 0.3.2 on July 19. The two gems belong to different maintainers, LR-DEV and pinkroom, which points to at least two compromised accounts rather than one. A third gem in the campaign, git_credential_manager, was newly created to impersonate Microsoft's Git Credential Manager, and is not treated here as a compromised project.

The stage-one Ruby code disabled TLS certificate verification with OpenSSL::SSL::VERIFY_NONE and fetched a second stage from an attacker-controlled Forgejo instance at git.disroot.org, then spawned /bin/sh or PowerShell. Before doing any of that it looked around. The loader checked roughly thirty CI-related environment variables and exited if it believed it was running inside GitHub Actions, GitLab CI, CircleCI, Jenkins, Travis, or Vercel. That is the inversion worth noting: most 2026 npm and PyPI worms went hunting for build runners because that is where the cloud credentials live. SleeperGem deliberately avoided them, presumably because build systems are monitored and laptops are not.

On a developer machine it dropped a native daemon into ~/.local/share/gcm/ and installed redundant persistence through both a systemd --user unit and cron, with a setuid-root shell planted after passwordless sudo had already granted root by way of /usr/local/sbin/ping6. The operators iterated visibly across the four git_credential_manager releases over about nine hours, moving execution into the require() path in 2.8.2 with the final script commented out, then re-enabling it in 2.8.3, which the rubygems-security-team yanked.

Notes

  • Only the hijacked pre-existing gems are recorded as artifacts. The campaign's third gem, git_credential_manager 2.8.0 to 2.8.3, was created by the attacker to impersonate Microsoft's tool and is out of scope here.
  • The loader checks roughly thirty CI-related environment variables and exits under GitHub Actions, GitLab CI, CircleCI, Jenkins, Travis or Vercel, targeting workstations rather than build runners.
  • Two maintainer accounts were involved, LR-DEV and pinkroom. Reported exposure of over 574,000 counts historical downloads of the gem names, not installs of the malicious versions.
  • RubyGems yanked the malicious versions, but exact complete archives for both Dendreo releases and the fastlane plugin were recovered from public incident-analysis captures and reproduce RubyGems' retained SHA-256 values.

Appendix · Affected releases

Dendreo rubygems fixed 1.1.2
1.1.3 sha256 dd75857e…b19b2765 download unavailable
1.1.4 sha256 cd37b556…9f6905df download unavailable
  • The public release line had stopped at 1.1.2 on 2020-10-24 before 1.1.3 and 1.1.4 appeared on 2026-07-18. Both have since been yanked and 1.1.2 is again the latest version.
  • RubyGems.org's retained yanked-version page maps SHA-256 dd75857ec8f3cc768931592b83c1c3b13eee3723c6aefde7f50c4069b19b2765 to the complete Dendreo 1.1.3 gem archive.
  • RubyGems.org's retained yanked-version page maps SHA-256 cd37b55603dea2ec624e255124f270681b5689a26905dfad02cc3bab9f6905df to the complete Dendreo 1.1.4 gem archive.
0.3.2 sha256 c55d9f4b…8b0ce9a2 download unavailable
  • The gem had seen no releases since 0.3.1 on 2019-03-04 before 0.3.2 appeared on 2026-07-19. 0.3.2 has since been yanked and 0.3.1 is again the latest version.
  • RubyGems.org's retained yanked-version page maps SHA-256 c55d9f4bbe6b82bb44464bf6703392e595455b0037fb77dd41ade58a8b0ce9a2 to the complete fastlane-plugin-run_tests_firebase_testlab 0.3.2 gem archive.

Indicators

  • domaingit.disroot.org
  • directory~/.local/share/gcm/
  • file/usr/local/sbin/ping6
  • accountRubyGems: LR-DEV
  • accountRubyGems: pinkroom

References

  1. SleeperGem: Compromised git_credential_manager, Dendreo, and fastlane RubyGems Drop a Persistent Backdoor - StepSecuritystepsecurity.io
  2. SleeperGem: hijacked dormant RubyGems accounts turned require into a persistent developer backdoor - Corgeacorgea.com
  3. SleeperGem Uses Three Malicious RubyGems Packages to Target Developer Machines - The Hacker Newsthehackernews.com
  4. SleeperGem RubyGems attack evades CI to hit developer laptops - Developer Techdeveloper-tech.com
  5. SleeperGem: RubyGems supply chain attack targets dormant maintainer accounts - Aikidoaikido.dev
  6. Dendreo 1.1.3 - RubyGems.orgrubygems.org
  7. Dendreo 1.1.4 - RubyGems.orgrubygems.org
  8. fastlane-plugin-run_tests_firebase_testlab 0.3.2 - RubyGems.orgrubygems.org

Source record: oss/attacks/sleepergem-rubygems/meta.yaml