GitHub Internal Repositories Exfiltrated
Data Breach | HIGH severity Published 2026-05-20
Executive Summary
On May 18, 2026, GitHub detected and contained a compromise of an employee device that led to the exfiltration of approximately 3,800 internal repositories. The attack vector was a poisoned Visual Studio Code extension — later identified as Nx Console — installed as part of a broader TanStack npm supply chain attack. The threat actor TeamPCP listed the stolen source code for sale on a cybercrime forum with an asking price of $50,000, later joined by LAPSUS$ for a joint listing of $95,000.
GitHub confirmed the breach on May 20 and stated that no customer repositories, organizations, or enterprises were affected. The exfiltrated data was limited to GitHub's own internal repositories. However, those repos contained operational tooling, authentication workflows, infrastructure configurations, and excerpts of customer support interactions.
In response, GitHub rotated critical secrets, isolated the compromised endpoint, and initiated a GitHub Enterprise Server signing key rotation requiring action from all GHES administrators. The breach is linked to TeamPCP's broader Mini Shai-Hulud supply chain campaign, which has also compromised the durabletask PyPI package and multiple npm packages.
Timeline
| Date | Event | Source |
|---|---|---|
| 2026-05-18 | GitHub detects compromise of employee device via poisoned VS Code extension; begins incident response | GitHub Blog |
| 2026-05-19 | GitHub rotates critical secrets, continues log analysis | GitHub Blog |
| 2026-05-20 | GitHub publicly confirms breach; TeamPCP lists stolen data on Breached forum for $50,000+ | GitHub, BleepingComputer, Hacker News |
| 2026-05-21 | GitHub links breach to TanStack npm supply chain attack; Nx Console extension identified as vector | GitHub, BleepingComputer |
| 2026-05-22 | LAPSUS$ joins TeamPCP; joint listing raised to $95,000; Durabletask PyPI package confirmed compromised by same actor | Dark Web Informer, Wiz |
| 2026-05-24 | GitHub Enterprise Server signing key rotation begins; GHES admins instructed to rotate GPG keys | GitHub Blog |
| 2026-05-26 | GitHub confirms ongoing investigation, advises GHES customers to prepare for increased security update cadence | GitHub Blog |
Technical Analysis
Affected Systems and Software
The exfiltration was limited to GitHub's own internal repositories — approximately 3,800 repositories containing source code, internal tooling, and infrastructure configuration. Affected categories included GitHub Actions, Copilot internal projects, CodeQL tools, internal infrastructure, security tools, and programs such as Codespaces and Dependabot.
No customer repositories, organizations, or enterprises were directly accessed. However, some internal repositories contained excerpts of customer support interactions.
GitHub Enterprise Server customers were indirectly affected: GitHub rotated the GHES signing key, requiring all GHES administrators to run a key rotation script to continue receiving and verifying updates.
Root Cause
An employee installed a malicious version of the Nx Console VS Code extension. This extension had been compromised as part of the TanStack npm supply chain attack. The poisoned extension provided the attacker with access to the employee's device and, from there, to GitHub's internal network and repositories.
TeamPCP, the threat actor behind this breach, has been running a sustained software supply chain campaign targeting the developer ecosystem — compromising npm and PyPI packages, hijacking maintainer accounts, and deploying the Mini Shai-Hulud self-replicating malware.
Attack Vector
The full kill chain:
- Supply chain compromise: Attackers compromised the TanStack npm package and the Nx Console VS Code extension distribution.
- Initial access: A GitHub employee installed the poisoned extension.
- Credential access: The extension harvested credentials and tokens from the employee's development environment.
- Lateral movement: Using stolen credentials, the attacker accessed GitHub's internal repositories and organizations.
- Exfiltration: Approximately 3,800 internal repositories were copied.
- Monetization: Data listed on Breached forum for $50,000, later raised to $95,000 in a joint listing with LAPSUS$.
Threat Actor
TeamPCP is a financially motivated threat actor group active since at least early 2026. Attribution is based on forum communications and operational patterns.
The group operates the Mini Shai-Hulud self-replicating malware, which targets developer environments, steals cloud and password manager credentials, and propagates through AWS SSM and Kubernetes. They have compromised multiple high-profile packages: durabletask (Microsoft PyPI), guardrails-ai, and multiple npm packages.
LAPSUS$ joined the sale of GitHub data on May 22. LAPSUS$ is a known extortion-focused group that previously targeted Microsoft, Okta, Nvidia, Samsung, and Ubisoft.
TeamPCP stated the data would be destroyed if a single buyer is found. If no buyer emerges, the data will be leaked at no cost. The group claims this was not a ransom attempt.
Malware Analysis
The credential stealer deployed through the durabletask package:
- Capability: Harvests credentials from major cloud providers (AWS, GCP, Azure), password managers (1Password, Bitwarden), SSH keys, Docker credentials, VPN configuration, and shell history.
- Propagation: Spreads to other EC2 instances via AWS SSM SendCommand and to other pods via kubectl exec. Uses stolen tokens for lateral movement.
- Persistence: Installs as a dropper fetching second-stage payload from
check.git-service[.]comwith fallback tot.m-kosche[.]com. - C2 resilience: Uses FIRESCALE — searches GitHub public commit messages for backup C2 addresses encoded as base64.
- Destructive capability: On systems with Israeli or Iranian locale
settings, has a 1-in-6 probability of playing audio and running
rm -rf /*. - Platform: Targets Linux systems. The durabletask package has approximately 417,000 monthly downloads.
Impact
End Users
No direct impact on individual GitHub users. Customer repositories and personal accounts were not accessed. However, users of the durabletask PyPI package (versions 1.4.1, 1.4.2, 1.4.3) should audit their environments and rotate credentials stored on any machine where the package was installed.
System Administrators
GitHub Enterprise Server administrators must rotate the GPG signing key immediately. Run the key rotation script from GitHub:
curl -fsSL https://enterprise.github.com/security/2026-05-24/rotate-gpg.sh -o rotate-gpg.sh
chmod ug+x ./rotate-gpg.sh
./rotate-gpg.sh
sudo ./rotate-gpg.sh
For HA or cluster topologies, run via ghe-cluster-each. SHA256 digest of
the script: 3009bf5cdef034e153008cc375a05ac0bdbb1a2a325b22adb300c028e3766b43.
Without rotation, future GHES version upgrades will fail verification with: "Error: The file provided is not a valid GitHub Enterprise Server package."
Developers
The breach demonstrates supply chain risk through IDE extensions. Mitigations:
- Audit installed VS Code extensions. Remove extensions that are not actively maintained or from unverified publishers.
- Restrict extension auto-updates in development environments. Pin extensions to known-good versions.
- Treat developer workstations as high-value targets. Separate development credentials from production access. Use hardware security keys.
- Monitor for the durabletask package (versions 1.4.1–1.4.3). If installed, rotate all credentials accessible from affected machines — including cloud provider keys, password manager vaults, SSH keys, and Docker credentials.
- Scan for Mini Shai-Hulud IOCs (see below).
Proof-of-Concept and Exploit Code
No public proof-of-concept or dedicated tooling found for this specific breach as of 2026-06-25. The attack used a supply chain compromise of an existing VS Code extension and the Mini Shai-Hulud credential stealer — both of which are operational malware, not publicly released exploit code.
Indicators of Compromise
File Hashes
None available from automated sources. The compromised VS Code extension version and the malicious durabletask packages (1.4.1, 1.4.2, 1.4.3) should be treated as indicators.
Network Indicators
| Type | Value | Context |
|---|---|---|
| Domain | check.git-service[.]com |
Mini Shai-Hulud primary C2 |
| Domain | t.m-kosche[.]com |
Mini Shai-Hulud fallback C2 |
YARA Rules
None found.
Suricata / Snort Signatures
None identified.
Sigma Rules
None found. Search SigmaHQ for community rules.
Threat Hunting Queries
Splunk — Detect connections to Mini Shai-Hulud C2 domains
index=network
| where dest_domain IN ("check.git-service.com", "t.m-kosche.com")
| table _time, src_ip, dest_ip, dest_domain, bytes_out
Sentinel KQL — Identify durabletask package installations
DeviceProcessEvents
| where ProcessCommandLine contains "durabletask"
| where ProcessCommandLine contains "1.4.1" or ProcessCommandLine contains "1.4.2" or ProcessCommandLine contains "1.4.3"
| project TimeGenerated, DeviceName, ProcessCommandLine, AccountName
Mitigation and Remediation
Immediate Actions
- GitHub Enterprise Server administrators: run the GPG key rotation script immediately on all nodes.
- Audit all machines for durabletask versions 1.4.1 through 1.4.3. Remove the package and rotate all credentials.
- Block outbound connections to
check.git-service[.]comandt.m-kosche[.]comat the network perimeter. - Scan VS Code extension inventories for unknown or recently updated extensions from unverified publishers.
- Review AWS SSM command history for unauthorized
SendCommandinvocations with theAWS-RunShellScriptdocument.
Long-term Recommendations
- Enforce allowed-lists for IDE extensions in enterprise environments.
- Require hardware security keys for all developer accounts with access to production infrastructure or package registries.
- Monitor PyPI and npm dependency trees for unexpected version bumps in packages maintained by small teams or single maintainers.
- Implement code signing for internal tools and verify signatures before execution.
Vendor Advisories
- GitHub: Investigation Update and GHES Key Rotation — Official incident response and key rotation instructions
- GitHub: Initial Breach Confirmation — May 20 statement on X
- Nx Console Security Advisory — Extension compromise details
- Wiz: Durabletask Supply Chain Attack — Technical analysis of the connected PyPI compromise
References
- GitHub Blog — Investigation Update and Key Rotation — GitHub (2026-05-20 through 2026-05-26)
- GitHub confirms breach of 3,800 repos via malicious VSCode extension — BleepingComputer (2026-05-20)
- GitHub Breached — Employee Device Hack Led to Exfiltration of 3,800+ Internal Repos — The Hacker News (2026-05-20)
- GitHub hacked after poisoned VS Code extension infects employee device — Cybernews (2026-05-20)