§ 01 · Executive summary
Executive summary for non-technical stakeholders.
The headline. On 18 May 2026, an automated campaign codenamed Megalodon pushed roughly 5,718 malicious commits to ~5,561 public GitHub repositories in a single ~six-hour window, injecting malicious GitHub Actions workflows that harvest CI/CD secrets, cloud credentials, SSH keys, and identity tokens and ship them to attacker infrastructure. This is a software supply-chain attack at the build-pipeline layer — the attackers never touched application code, only the automated workflows that build and ship it. At least one downstream open-source package family, @tiledesk/tiledesk-server (versions 2.18.6–2.18.12), was published in compromised form, turning repository edits into distribution risk for everyone who installs it.
Why this matters even if you were not a directly compromised repository. The defining danger of this incident is cascade.
CI and cloud secrets harvested from a compromised build run can be reused to reach other repositories, cloud accounts, and deployment pipelines. Poisoned packages can be pulled by downstream consumers, inserting malicious code into production or build environments — even for organisations that never touched the originally compromised repositories. The most realistic near-term threat to your organisation is not encryption of your systems; it is secondary compromise from exposed build-pipeline secrets and trust in poisoned dependencies.
Why the attribution question does not change your defences
Megalodon closely imitates the tradecraft of a prolific supply-chain actor called TeamPCP (tracked by Google as UNC6780), who days earlier open-sourced its “Shai-Hulud” attack framework and helped launch a competition rewarding the biggest supply-chain attack. That open-sourcing is the only confirmed link between the two — it does not mean TeamPCP ran Megalodon. The firm that analysed the code (OX Security) assesses Megalodon is most likely a separate copycat actor, not TeamPCP operating directly, with no direct links or claims of responsibility connecting them; reporting is not unanimous, so attribution is rated Low confidence. Treat the technique — not the actor’s name — as the actionable threat, and prioritise containment over attribution.
Why it matters even if you are not a GitHub-heavy shop
Almost every modern organisation consumes open-source packages built in pipelines like these. The root cause of the initial access was not a GitHub product vulnerability — it was compromised developer credentials harvested from infostealer-infected machines. Hudson Rock cross-referenced the accounts behind the malicious commits and found over a third (331 of 978 unique usernames) matched computers already infected by infostealers, concluding the affected accounts were “exclusively sourced from infostealer data.” Against a cybercrime-intelligence database tracking 20M-plus infostealer-infected machines, that makes the precondition for an attack like this already present across the sector.
What to do now
Hunt your repositories for the injected workflow signature and block the reported C2. Rotate GitHub tokens, OAuth grants, deploy keys, and any cloud / registry secrets reachable from your build pipelines. Audit recent workflow-file changes for base64 -d | bash patterns and unexpected workflow_dispatch logic. If you consume @tiledesk/tiledesk-server, pin away from 2.18.6–2.18.12. Preserve CI runner logs before cleanup. See Part 2 for sequenced actions.
Risk level — High
This is driven by the combination of large-scale repository compromise, theft of CI/cloud/identity secrets, and confirmed downstream package poisoning — not by ransomware, and not negated by the unconfirmed attribution. The follow-on secondary-compromise risk is the live threat.
Confidence — High (incident) / Low (attribution). Most core technical claims — scale, timing, workflow-injection mechanism, secret-harvesting behaviour, C2 endpoint, and downstream package compromise — are supported by independent reporting. Direct attribution to TeamPCP is an unconfirmed hypothesis which is not corroborated by two independent technical sources.
Update — early June 2026
Two developments since the initial 29 May assessment, both reinforcing this report’s conclusions:
Platform response — npm burned the bypass-2FA tokens. On 19 May 2026, in response to the TeamPCP spree and the Mini Shai-Hulud worm, npm invalidated all granular access tokens with write access that bypass two-factor authentication and urged maintainers to move to OIDC Trusted Publishing. Per Microsoft’s security blog, GitHub removed 640 malicious packages and invalidated 61,274 such tokens. This is a material defensive change — but as Socket noted, it “buys breathing room” rather than closing the underlying hole: the worm remains active and simply resumes harvesting the new tokens maintainers issue.
The copycat prediction has already played out — the “Miasma” wave. On 1 June 2026, ~32 packages (≈95–96 versions, pushed in three same-day waves as takedowns lagged; ~80,000–117,000 weekly downloads) under the trusted @redhat-cloud-services npm namespace were published in compromised form carrying a new Mini Shai-Hulud variant self-identifying as “Miasma: The Spreading Blight.” Critically, the packages were published via GitHub Actions OIDC from a compromised Red Hat employee account — bypassing npm token security entirely, which is exactly the OIDC-abuse vector this report flagged as the central risk (§ 01, Part 2) and which routes around the token invalidation above. Notably, every malicious version carried a valid npm provenance attestation — a real-world confirmation of this report’s point that provenance proves origin, not benignity. Red Hat removed the packages within ~2 hours and stated the compromise was limited to internal development tooling with no evidence of customer impact. Every major analysis (Wiz, Orca, Aikido, OX Security, Socket, SafeDep) frames attribution the same way this report frames Megalodon’s: strong TTP overlap with TeamPCP, but a copycat using the open-sourced tooling cannot be ruled out. Miasma is direct, independent confirmation of this report’s forward-looking judgement that the Shai-Hulud leak would spawn recurring copycat campaigns. (A dedicated Protos Labs report on Miasma is in preparation; this note is context only.)
Update (6 June) — the worm has accelerated, not slowed. On 3 June 2026 a follow-on Miasma variant dubbed “Phantom Gyp” (StepSecurity) compromised 57 more packages across 286+ versions in under two hours, weaponising binding.gyp / node-gyp to execute at install while evading the preinstall/postinstall monitors many teams added after earlier waves; the largest victim, @vapi-ai/server-sdk, sees ~408K monthly downloads. Separately, Whiteintel reported the compromised Red Hat developer’s GitHub credentials and a live MFA-bypassing session cookie sat in infostealer logs for ~49 days before the 1 June attack — reinforcing that infostealer-sourced access remains the root cause.
§ 02 · Incident overview
Latest position.
Where the timeline lives
The campaign chronology — including the TeamPCP context waves, the 12 May open-sourcing, Megalodon, and the copycats — is in the Mini Shai-Hulud campaign timeline at the top of this page. This section covers the confirmed technical detail specific to the Megalodon incident.
Confirmed technical observations
- —Mass malicious commits pushed to thousands of GitHub repositories during a compressed window on 18 May 2026.
- —Injected GitHub Actions workflows containing a base64-decoded bash payload executed in CI, used to harvest secrets and exfiltrate them to attacker infrastructure.
- —At least one concrete infrastructure observable: the exfiltration/C2 endpoint at
216[.]126[.]225[.]129 on port :8443 (reported across all primary sources; a :8080 live-ingest observation is single-source and unverified — see IOC table), tagged with the campaign string megalodon. - —Two payload variants: a mass variant (workflow named
SysDiag, triggers on every push/PR) and a targeted variant (workflow named Optimize-Build, dormant workflow_dispatch trigger fired on demand). - —Confirmed downstream package compromise:
@tiledesk/tiledesk-server 2.18.6–2.18.12.
What is confirmed exposed
CI environment variables and secrets; cloud credentials (AWS / GCP / Azure, including instance-metadata and IMDS paths); SSH private keys; Docker, .npmrc, .netrc, Kubernetes, Vault, and Terraform credentials; source-embedded secrets across a 30-plus pattern regex sweep; and — most consequentially — GitHub Actions OIDC tokens (ACTIONS_ID_TOKEN_REQUEST_URL / ACTIONS_ID_TOKEN_REQUEST_TOKEN) plus GITHUB_TOKEN, GitLab, and Bitbucket tokens. (The harvesting capability is established from payload analysis; the valid-credential initial-access mechanism is SafeDep’s stated hypothesis — see Part 2 § 01.)
Claimed or single-source (treat cautiously)
- —Attribution to TeamPCP. Some reporting (e.g. Rescana and downstream outlets) attributes Megalodon directly to TeamPCP. The researchers closest to the campaign (OX Security) assess it is more likely a copycat. Treat direct attribution as a low-confidence hypothesis.
- —Historical related infrastructure. A related endpoint,
144[.]172[.]116[.]48:8080, surfaced in adjacent reporting (first seen ~8 May 2026). Treat as Medium confidence / contextual. - —Total data exfiltrated. Any figure for total volume stolen comes from single-vendor observation of the C2 and is not independently corroborated.
What is not yet known
- —Repository-by-repository scope. Counts are anchored to researcher observation (SafeDep: 5,561 repos / 5,718 commits; OX’s independent YAML-file count was lower, ~3,500 then ~2,900 as repos were cleaned). Exact blast radius should be treated carefully.
- —Package artifact hashes. No full tarball SHA-256 or SRI value for the compromised Tiledesk versions was obtained in collected evidence as of 4 June 2026 — a retrospective-detection gap.
- —Advisory tracking. No GHSA, OSV, npm advisory, or CVE identifier for Megalodon as of 4 June 2026.
- —Whether any portion of the stolen-credential corpus has already been used for follow-on intrusions beyond the original campaign window.
§ 03 · Organisational impact
What this means for your organisation.
If you operate GitHub repositories with CI/CD
You are a potentially directly affected party. Your immediate priorities are: hunting for the injected workflow signature across your repositories and forks; rotating GitHub PATs, deploy keys, Actions secrets, OIDC trust relationships, and repository-scoped tokens for any exposed build environment; rotating cloud credentials and invalidating temporary tokens reachable from CI runners; auditing recent workflow-file changes; and preserving CI runner and workflow-run logs before cleanup. See Part 2 for sequenced actions.
On the “is it TeamPCP?” question. Do not delay credential-rotation, workflow-audit, or egress-detection work on the basis of attribution. Whether the operator is TeamPCP or a copycat does not change the technique, the secrets at risk, or the response.
If you consume open-source packages (i.e. everyone)
You are affected by the broader supply-chain exposure in three ways:
- —Direct downstream poisoning. If you installed
@tiledesk/tiledesk-server 2.18.6–2.18.12, you pulled a backdoored package from a legitimate, trusted publishing channel. Pin to the last clean release (2.18.5) or a verified clean version and rotate any secrets exposed to those build/runtime environments. - —Indirect exposure via your dependencies’ pipelines. Any of your upstream maintainers whose repository was poisoned could republish compromised artifacts without realising it — exactly as happened to Tiledesk. The npm account was never touched; the source repository was.
- —Trust-chain abuse generally. Stolen CI/cloud secrets enable attackers to impersonate build pipelines and move laterally. Provenance and attestation badges do not help here — the parallel Mini Shai-Hulud wave produced validly SLSA-attested malicious packages, and the 1 June Miasma wave did the same. Provenance proves origin, not benignity.
What will probably happen next
In order of likelihood:
- 1.Reuse of harvested CI/cloud/identity secrets to access additional repositories, cloud accounts, or deployment pipelines (secondary compromise).
- 2.On-demand triggering of dormant
Optimize-Build backdoors in repositories that were poisoned but not yet cleaned. - 3.Further downstream package poisoning where a poisoned repo feeds a published npm/PyPI package.
- 4.Additional copycat campaigns using the open-sourced Shai-Hulud framework, given the public tooling and the contest incentive. (Already materialised: the 1 June “Miasma” wave against
@redhat-cloud-services — see § 01 update.) - 5.(Lower probability, longer horizon) Targeted extortion of organisations whose proprietary code or secrets are confirmed stolen.
§ 04 · Threat actor profile
Threat actor context: TeamPCP and the Shai-Hulud enabler.
Read this first — the attribution in one paragraph. Megalodon (18 May 2026) is a separate, unattributed campaign that imitates TeamPCP’s tradecraft. TeamPCP is the confirmed actor behind the surrounding 2026 supply-chain campaigns (Trivy, TanStack, the GitHub breach, etc.) and the enabler of Megalodon — by open-sourcing its Shai-Hulud framework on 12 May. But the firm that analysed Megalodon’s code (OX Security) assesses it is most likely a copycat, not TeamPCP operating directly, and there are no direct links, shared IOCs, or claims of responsibility tying the two. Attribution is unconfirmed / Low confidence. This section profiles TeamPCP because it is the relevant context and enabler — not because it is confirmed to be the Megalodon operator. Reporting is not unanimous: some outlets (e.g. Rescana) attributed Megalodon directly to TeamPCP, which is precisely why this report does not assert it either way.
Behavioural profile
TeamPCP (tracked by Google Threat Intelligence Group as UNC6780; aliases include PCPcat, ShellForce, DeadCatx3) is a financially motivated cybercrime group that emerged in late 2025, initially exploiting cloud misconfigurations and a Next.js vulnerability to deploy a credential-theft and cryptomining botnet. Through 2026 it became one of the most prolific supply-chain actors on the internet. Its signature is indirect initial access: rather than attacking targets directly, it backdoors widely trusted developer and security tooling that organisations already run in their pipelines, then harvests the elevated secrets those pipelines hold.
Prior and adjacent campaigns
TeamPCP’s confirmed supply-chain victims through 2026 include Aqua Security’s Trivy scanner (CVE-2026-33634, which affected 1,000-plus organisations including Cisco), Checkmarx KICS, LiteLLM, the Telnyx SDK, TanStack (CVE-2026-45321, CVSS 9.6), Mistral AI, OpenAI, Grafana Labs, and GitHub itself (confirmed 20 May 2026, via a poisoned Nx Console VS Code extension — CVE-2026-48027, CVSS 9.3 — that was live on the VS Code Marketplace for ~18 minutes on 18 May and let the group exfiltrate ~3,800 internal repositories). Both CVE-2026-45321 and CVE-2026-48027 were added to CISA’s Known Exploited Vulnerabilities catalogue on 27 May 2026. The group has also announced partnerships with BreachForums, LAPSUS$ (a joint $95,000 listing for the GitHub data), and the ransomware crew VECT.
The Shai-Hulud framework — important context
The pivotal event for Megalodon is not a TeamPCP operation at all — it is TeamPCP’s public release of its tooling. On 12 May 2026 the group open-sourced the complete “Shai-Hulud” framework (the Shai-Hulud 3.0 worm) via two GitHub repositories under an MIT licence, and a competition was announced offering $1,000 in Monero for the biggest supply-chain attack conducted with it. This democratised industrial-scale pipeline poisoning to any actor who wanted it.
It is worth being precise about the causal claim here: OX Security noted at the time of the contest announcement that it had not yet observed attacks leveraging the open-sourced variant, and the first confirmed Shai-Hulud clones it detected were four npm packages on 17 May. Treating Megalodon (18 May) as the first major copycat campaign this release enabled is therefore a reasonable analytic inference from timing and tradecraft, not an established, source-confirmed fact — no source directly links Megalodon’s code to the leaked framework.
Since the leak, the observed copycat campaigns include Megalodon (18 May) and the Miasma wave against @redhat-cloud-services (1 June) — both assessed by their analysing vendors as TTP overlap with TeamPCP that cannot be firmly attributed, precisely because the public tooling lets any actor replicate the tradecraft. Neither is confirmed to be TeamPCP. (Miasma is covered as context in this report’s § 01 update; a dedicated Protos Labs report on it is in preparation.)
Attribution strength relative to Megalodon
Surface-level similarities exist — npm package poisoning, fake bot author identities, and anti-forensic hardcoded commit dates (Megalodon commits carry a forged date of 17 September 2001; TeamPCP’s leaked source used a forged date of 1 January 2099). But the researchers closest to Megalodon do not attribute it firmly to TeamPCP:
- —OX Security lead researcher Moshe Siman Tov Bustan assesses Megalodon is most likely “a different threat actor copying their behavior and style, but not much of the code itself,” noting no direct links, no shared identifying IOCs, and no claim of responsibility — “for now, the connection remains unconfirmed.”
- —Megalodon lacks the public encryption key TeamPCP required for entries in its own contest — evidence it is not even a contest submission.
- —The Mini Shai-Hulud activity has strong TeamPCP attribution; Megalodon has only circumstantial overlap, actor-adjacent tradecraft, and media characterisation.
- —Dissent: not all reporting agrees — Rescana and some downstream outlets attributed Megalodon directly to TeamPCP. No code-analysis evidence supports that direct attribution, but the split is why this report rates attribution Low rather than ruling either way.
Our assessment. Medium-low confidence that Megalodon is TeamPCP operating directly; high confidence that it is TeamPCP-inspired / Shai-Hulud-enabled. Collaboration or shared stolen-credential access between actors cannot be ruled out. For CISOs: defend against the technique, not the brand.
Root cause: infostealer-sourced access
The most operationally important finding about how Megalodon got in: Hudson Rock cross-referenced the GitHub usernames behind the malicious commits against its cybercrime-intelligence database and found over a third matched computers already infected by infostealers, concluding the access enabling the campaign was sourced from infostealer data. This makes developer-endpoint compromise, not a GitHub product vulnerability, the true root cause — and means the precondition for the next campaign already exists across tens of thousands of organisations.