Back to all lessons
Awareness Lessons
3 days ago

OVHcloud CLI Poisoned via GitHub Release Swap, Stealing Credentials for 94 Minutes

An attacker who had compromised an OVHcloud contributor's GitHub account swapped legitimate CLI release binaries with malicious ones containing a credential stealer, remaining undetected for 94 minutes and infecting roughly 250 users. The root cause is a combination of weak account security on a trusted contributor's identity and an absence of binary integrity verification in the release pipeline. This matters because developers and AI agents implicitly trust official release assets, making a tampered binary a high-yield, low-noise attack vector. The 94-minute detection gap demonstrates that without automated release integrity monitoring, supply chain substitutions can achieve significant reach before any alert fires.

Tactical Insight

Immediate actions

  • Revoke and rotate all credentials associated with the compromised contributor account and audit all recent GitHub Actions and release activity from that account.
  • Publish cryptographic checksums (SHA-256) and GPG-signed manifests for every release asset and communicate the verification steps prominently to users.
  • Notify all ~250 affected downloaders and provide a credential-rotation runbook for cloud CLIs and configuration files targeted by the stealer.

Long-term improvements

  • Enforce mandatory MFA (preferably hardware security keys) on every GitHub account that has write or release permissions to the organization's repositories.
  • Implement a signed-release pipeline (e.g., Sigstore/cosign) so that no binary reaches the GitHub Releases page without a cryptographic attestation tied to a protected CI/CD identity.
  • Apply least-privilege branch and release protection rules so that a single contributor account cannot publish a release without a secondary approval step.

Detection measures

  • Deploy automated binary-diffing or hash-comparison checks that alert within minutes whenever a release asset is replaced or updated outside of a defined CI/CD workflow.
  • Integrate GitHub audit-log streaming into a SIEM with alerting on unexpected release-asset upload events, especially outside business hours or from unfamiliar IP ranges.

Back this up with a control

All controls and vendors

Training helps people spot this. These controls make the attack fail even on the day someone does not.