By NHI Mgmt Group Editorial TeamDomain: Breaches & IncidentsSource: CorgeaPublished July 19, 2026

TL;DR: A malicious RubyGems campaign used a fake git_credential_manager package and republished dormant gems to turn trusted dependency updates into developer-workstation compromise, with loaders that disabled TLS verification, fetched remote payloads, and attempted persistence, according to Corgea. Dormant package ownership is now an initial access path, and transitive library load must be treated as an execution boundary.


At a glance

What this is: This is an analysis of a RubyGems supply-chain compromise where malicious and republished packages were used to deliver a staged payload to developer workstations.

Why it matters: It matters because IAM and NHI teams must treat package trust, developer endpoints, and stored credentials as one attack surface when supply-chain abuse can reach secrets and session material.

By the numbers:

👉 Read Corgea's analysis of the RubyGems sleeper compromise and developer workstation persistence


Context

Ruby package supply-chain abuse is no longer a niche issue, because attackers can use dormant package ownership and transitive dependencies to turn a routine bundle update into code execution on developer endpoints. In this case, the relevant identity dimension is not a human login flow but the trust relationship between packages, maintainers, and the machines that load them.

For identity and NHI practitioners, the key problem is that the same workstation often holds Git credentials, API tokens, browser sessions, and cloud access material. Once malicious code reaches that endpoint, the boundary between software supply chain risk and secret exposure disappears, which makes this a governance problem for IAM, secrets management, and developer platform teams alike.


Key questions

Q: What fails when a trusted package can execute code during normal library load?

A: The trust model fails because reviewers often inspect install scripts while ignoring code that runs as soon as a dependency is required. That makes transitive packages an execution path, not just a distribution path. Teams should review require-time behaviour, treat dependency changes as code execution changes, and assume a compromised maintainer or republished package can reach developer secrets quickly.

Q: Why do dormant packages create supply-chain risk in developer environments?

A: Dormant packages are risky because attackers can exploit stale ownership, low monitoring, and existing trust in old dependency names. A republished version can slip into bundles that assume the package is stable and safe. This becomes especially dangerous when the package is loaded on developer workstations that already contain credentials, tokens, and session material.

Q: How do security teams know if a package compromise is actually contained?

A: They should confirm three things: the bad version no longer appears in lockfiles, SBOM records no longer resolve to it, and running services no longer load it. If any one of those still matches, the compromise is not contained. Re-scan after remediation and require evidence from both code and runtime.

Q: Who should own response when a developer package exposes credentials?

A: Ownership should sit across application security, endpoint operations, and IAM because the blast radius spans code, host, and identity. AppSec can confirm the package path, endpoint teams can remove persistence, and IAM teams can revoke secrets and sessions. When secrets may have been exposed, the response is an identity incident as much as a software one.


Technical breakdown

How transitive Ruby dependencies became the execution path

The critical mechanism here is not the malicious gem alone, but the way a republished trusted package pulled that gem into existing bundles. In Ruby, top-level code in a dependency can run when a library is required, which means load time can become an execution boundary rather than a passive read operation. That matters because many defenders still focus on install hooks and miss runtime library loading as a place where code can fetch and execute a second-stage payload. In this case, dormant package reuse amplified reach by piggybacking on existing trust and dependency resolution.

Practical implication: Treat dependency load as an execution event and review transitive package changes with the same scrutiny as executable code changes.

Why TLS suppression and remote payload fetches matter

The staged loader disabled certificate verification and fetched content from a remote Forgejo host before spawning shell or PowerShell. That combination tells you the package was acting as a downloader, not as a conventional library. TLS verification bypass removes a core trust check, while remote payload retrieval shifts the heavy malicious logic away from the registry artifact and into a mutable off-registry stage. This pattern reduces detection opportunities in package reviews because the on-registry code can look small and innocuous while the real behavior happens later.

Practical implication: Flag any dependency that disables TLS verification or downloads executable content at runtime as a high-priority supply-chain risk.

How workstation persistence changed the incident from malware to compromise

The later-stage payload did more than run a script. It copied itself into user-level storage, attempted persistence through systemd user units and cron, and even probed for privilege escalation paths on Linux hosts. That is a host compromise pattern, not a simple package infection. The attacker also biased execution away from CI environments by checking for many CI variables and exiting when it detected them, which suggests a deliberate focus on developer endpoints where credentials and session material are more likely to be exposed.

Practical implication: Extend containment beyond package removal and investigate user services, cron, and local credential stores on any machine that loaded the affected gems.


Threat narrative

Attacker objective: The objective was to establish durable developer-workstation access that could be used to harvest secrets, survive cleanup, and create a broader supply-chain foothold.

  1. Entry began with malicious RubyGems releases and dependency grafts inside dormant but trusted packages, turning ordinary bundle updates into a supply-chain foothold.
  2. Escalation occurred when the loaded gem disabled TLS verification, fetched a second-stage payload from a remote host, and executed it through shell or PowerShell.
  3. Impact followed on developer workstations through persistence attempts, local privilege escalation probes, and the exposure of credentials and session material on infected hosts.
  • LiteLLM PyPI package breach — LiteLLM PyPI supply chain attack, credentials stolen from users.
  • MITRE ATT&CK Enterprise Matrix — MITRE ATT&CK Enterprise — adversary tactics and techniques, threat detection, attack chain mapping, credential access, lateral movement, privilege escalation.

Read our 52 NHI Breaches Analysis report for a comprehensive view of breaches impacting Non-Human Identities including AI Agents.


NHI Mgmt Group analysis

Dormant package ownership is now a credential-adjacent attack surface. The compromise worked because trust in a package name, not just a login credential, was sufficient to get code running on developer machines. That expands the IAM threat model into software supply-chain governance, where maintainership, package reputation, and dependency provenance all need lifecycle controls. Practitioners should treat dormant packages as high-risk identity assets, not neutral code artifacts.

Transitive dependency load is the real execution boundary. The most important control gap is the assumption that only install-time hooks are dangerous. In this incident, the meaningful risk emerged when normal Ruby loading triggered code that fetched and executed a stage-two payload. This is precisely the kind of boundary that OWASP Non-Human Identity Top 10 and NIST Cybersecurity Framework 2.0 style governance need to account for in developer ecosystems. Practitioners should map dependency load paths to execution risk.

Developer endpoints remain the highest-value secret concentration points. The malware’s choice to avoid CI and persist on workstations shows that attackers still see local developer environments as the shortest path to reusable secrets, tokens, and cloud access. That makes workstation hardening, secret minimisation, and local credential hygiene part of NHI governance rather than separate hygiene tasks. Practitioners should align endpoint controls with secrets exposure assumptions.

Hard-coded trust bypasses create a reusable compromise pattern. Disabling TLS verification, fetching remote payloads, and launching shell or PowerShell is not just suspicious behaviour, it is a named concept worth tracking: runtime trust collapse. Once a dependency can override transport trust and chain into execution, the package registry becomes only the first stage of a wider compromise path. Practitioners should hunt for any dependency that can self-upgrade from library into downloader.

Supply-chain detection must include persistence artefacts, not just package hashes. The Linux artefacts here included systemd user units, cron entries, and a copied payload outside the gem directory. That means detection logic based only on known-bad versions will miss the real problem after the initial install window closes. Practitioners should extend SBOM and package monitoring into host-level artefact review when package compromise is suspected.

From our research:

  • The average estimated time to remediate a leaked secret is 27 days, despite 75% of organisations expressing strong confidence in their secrets management capabilities, according to The State of Secrets in AppSec.
  • Only 44% of developers are reported to follow security best practices for secrets management, exposing a significant developer behaviour gap.
  • Ultimate Guide to NHIs , Lifecycle Processes for Managing NHIs shows why lifecycle control matters when compromised workstations may retain privileged material after package removal.

What this signals

Runtime trust collapse is the useful concept for teams to track here. The risk is not only that a malicious package exists, but that a dependency can override transport trust, fetch a payload, and execute it during ordinary library load. That shifts security monitoring from registry hygiene to runtime behaviour on developer endpoints, where secrets and cloud access are often concentrated.

This is a reminder that package governance, secrets management, and endpoint hardening cannot be run as separate programmes. If a development host can carry long-lived Git credentials or cloud tokens, then a supply-chain incident can immediately become an identity incident. The practical direction is shorter-lived access, stronger local scoping, and better host telemetry linked to OWASP Non-Human Identity Top 10.

Teams that focus only on CI miss the attacker’s preferred target. The malicious loader tried to avoid monitored pipelines and persist on workstations, which means the control gap is often at the developer endpoint, not the build system. That should push organisations to connect endpoint response with identity revocation and to use NIST Cybersecurity Framework 2.0 as the common governance language.


For practitioners

  • Hunt for the affected versions and their republished dependencies Search lockfiles, bundle caches, and local gem inventories for git_credential_manager 2.8.0 through 2.8.3, Dendreo 1.1.3 and 1.1.4, and fastlane-plugin-run_tests_firebase_testlab 0.3.2. Confirm whether any developer workstation or build host loaded them during the exposure window.
  • Inspect runtime-loading dependencies for downloader behaviour Review Ruby gems and plugins that execute code on require, disable TLS verification, or pull remote payloads during normal library load. Prioritise packages that use shell, PowerShell, curl-style download patterns, or off-registry execution stages.
  • Check developer endpoints for persistence artefacts Look for ~/.local/share/gcm/, user-level systemd units, cron entries, and unexpected binaries such as /usr/local/sbin/ping6 on Linux hosts. Treat these as signs of host compromise, not isolated package anomalies.
  • Rotate secrets that may have been present on infected machines Invalidate Git credentials, SSH keys, cloud tokens, and browser-backed session material that existed on any host that loaded the malicious gems. Assume local secret exposure until endpoint telemetry proves otherwise.
  • Reduce the value of developer endpoints as secret vaults Move toward tighter secrets scoping, shorter-lived credentials, and controlled local access for developer tooling. The goal is to make a compromised workstation far less useful to an attacker who reaches it through a package chain.

Key takeaways

  • This incident shows how dormant package trust can become an initial access path into developer environments.
  • The practical scale is worse than the package list suggests, because persistence and local secrets make workstation cleanup the real challenge.
  • Teams that manage secrets, endpoints, and dependency trust together will reduce the blast radius faster than teams treating this as a pure AppSec event.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-03This incident centers on secret and credential exposure through compromised package trust.
MITRE ATT&CKTA0006 , Credential Access; TA0003 , Persistence; TA0004 , Privilege EscalationThe chain includes credential exposure, persistence, and escalation on developer hosts.
NIST CSF 2.0PR.AC-4Least-privilege access and identity control reduce blast radius after workstation compromise.
NIST SP 800-53 Rev 5IA-5Authenticator management is relevant because compromised hosts can expose reusable secrets and tokens.
CIS Controls v8CIS-5 , Account ManagementAccount governance and offboarding are essential when local secrets may persist after removal.

Use CIS-5 to identify and revoke account material that may have been exposed on infected developer machines.


Key terms

  • Dormant Package Ownership: A dormant package is a software dependency that has not changed for a long time but still retains trust in dependency trees and developer workflows. Attackers target it because low activity, weak monitoring, and stale maintainer assumptions can make a republished version look legitimate while hiding malicious code.
  • Release Trust Collapse: A failure mode where teams assume the package publisher, signing path, and build pipeline are trustworthy when one or more of those identities has been compromised. The result is that malicious code can inherit legitimacy and pass controls that only inspect artefacts, not the trust chain behind them.
  • Developer Endpoint Secret Concentration: Developer endpoint secret concentration describes the accumulation of credentials, tokens, sessions, and deployment material on workstations used for coding and release tasks. It increases blast radius because one compromised host can expose multiple identity systems, cloud environments, and source-control accounts at once.
  • Dependency Grafting: Dependency grafting is the practice of republishing or modifying a trusted package so that it pulls in a malicious dependency chain. It is effective because consumers trust the parent package, not only the new payload, which lets attackers fan out compromise through existing bundles.

What's in the full analysis

Corgea's full analysis covers the operational detail this post intentionally leaves for the source:

  • Version-by-version package chronology showing how the malicious chain evolved across the affected RubyGem releases.
  • Process-tree and persistence details from the Linux payload, including systemd user units, cron, and privilege-escalation attempts.
  • Environment-variable checks used to evade CI execution and bias the malware toward developer workstations.
  • Source excerpts and artefacts that help AppSec teams reproduce detection logic in package review pipelines.

👉 Corgea's full post covers the malicious package chain, host persistence indicators, and response guidance.

Deepen your knowledge

The NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, machine identity security, secrets management, and identity lifecycle controls. It is suitable for practitioners who need to connect identity risk with wider security operations and governance.
NHIMG Editorial Note
Published by the NHIMG editorial team on August 19, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org