Behavioral Risk Brief: SleeperGem
The Claim
Governance frameworks that treat package name recognition and maintainer history as ongoing proof of safety create systemic risk when a compromised artifact can behave differently
depending on where it executes. Zero Trust for Code addresses this by requiring a pre-execution trust decision on what a package will do in a specific environment, rather than relying
The Incident
Researchers identified malicious versions of three RubyGems packages published to RubyGems.org in a campaign named SleeperGem. One package, “git_credential_manager”, impersonated Microsoft’s official Git Credential Manager, while the other two were Dendreo and a fastlane plugin. Dendreo and the fastlane plugin were legitimate but dormant packages last updated in 2019 and 2020 before malicious updates were pushed from reactivated maintainer accounts. Each release acted as a loader that checked for roughly 30 CI-related environment variables associated with platforms such as GitHub Actions, GitLab, CircleCI, Jenkins, and Vercel. If any were detected, the payload exited; otherwise, it downloaded a second-stage payload from an attacker-controlled host and installed a persistent native daemon on the developer’s machine.
The Governance Failure
The governance failure is not that malicious versions reached the registry, but that the trust in these packages was based on signals that assumed behavior stays constant once established: a recognizable name, a maintainer with account history, and in two cases, years of clean, dormant existence. None of those signals accounted for what a specific installed version would actually do,
and none of them accounted for the possibility that the artifact itself would behave differently depending on the environment it reached.
This is compounded by how the malware was built to defeat exactly the kind of monitoring most organizations rely on. By checking for CI environment variables before acting, the payload was designed to pass cleanly through any build system where automated scanning or sandboxing might catch it and only reveal its actual behavior on a developer’s own machine, typically where that scrutiny is far lighter. An organization that validated this package inside a CI pipeline and considered that it was sufficient would have observed an artifact that did nothing at all.
The underlying breakdown is the absence of a trust decision that accounts for where and how an artifact executes, not just whether it was scanned somewhere at some point. Dependency inheritance made this worse, since developers who never made an explicit decision to install “git_credential_manager” were still exposed to it through other packages that quietly pulled it in. Trust extended once, at the point a dependency was declared, without any mechanism to re-evaluate what that dependency introduced later.
The Regulatory and Business Exposure
- Persistent, unauthorized access to developer machines through a native daemon installed outside CI-monitored environments.
- Compromise inherited through dependency relationships, exposing organizations that never directly installed the malicious package.
- Reliance on maintainer history and package dormancy as safety signals, providing no evidence of current version behavior.
What Your Auditors Will Ask
- How do you validate what a package will do differently across CI environments versus developer workstations?
- How do you account for risk introduced through transitive dependencies your teams never directly selected?
- What controls detect a long-dormant package receiving updates after years of inactivity?
- How do you verify that a package’s behavior in a monitored build environment reflects its behavior everywhere else it runs?
- What evidence do you maintain that execution was evaluated on developer machines specifically?
A consistent signal is the disconnect between where an organization’s monitoring is strongest and where an artifact actually executes. Confidence built entirely on CI-level scrutiny leaves developer machines, where this payload was designed to activate unexamined.
Zero Trust for Code Value
Zero Trust for Code introduces a trust decision at the point where a package is about to execute, evaluating what it will do in that specific environment rather than relying on a name, a maintainer’s history, or a scan performed somewhere else entirely. This means a package is assessed for what it does on the machine where it actually runs, whether that machine is a CI
runner or a developer’s own workstation.
This directly addresses the governance weakness exposed by SleeperGem: the assumption that an artifact behaves the same way everywhere, and that reputation signals such as account age or
years of dormancy are evidence of safety rather than simply an absence of prior scrutiny. By requiring a pre-execution trust decision independent of environment, organizations can evaluate
what a package attempts to do on a developer machine even when that same package does nothing at all inside a monitored CI pipeline.
The result is a governance model where trust is assessed at every point of execution rather than inherited once from a dependency declaration or a clean publishing history. This closes the
distance between where an organization is confident and where an artifact is actually running.
Governance Action Brief
- Establish governance controls that evaluate package behavior separately for CI environments and developer workstations.
- Require a pre-execution trust decision for transitive dependencies, not only for packages directly declared by a project.
- Enforce execution policies on developer machines with the same rigor currently applied to CI/CD pipelines.
- Treat maintainer account age, package dormancy, and prior clean history as insufficient evidence of current version safety.
- Maintain a record of what a package was permitted to execute, evaluated per environment rather than assumed uniform across all of them.
Sources
Analysis based on reporting from The Hacker News (July 20, 2026) and CodeHunter Labs evaluation of governance gaps in environment-dependent execution trust, and alignment with NIST 800-53 and NIST SSDF integrity control objectives.










