ghtier

User plane incidents

Real incidents where a stolen or phished personal credential (a PAT, an SSH key, a session cookie) was the entire attack.

July 2023

Dependabot impersonation

Attackers used stolen personal access tokens to push commits faked to look like automated Dependabot contributions across hundreds of public and private repositories. They added a hook.yml workflow file that shipped GitHub secrets to an external server on every push, and appended obfuscated JS to every .js file in the project to harvest form passwords.

Permissions abused

contents:writeworkflow scope (classic PAT)

On the permission reference

Reported by: Checkmarx noted that PAT activity logging was only visible to enterprise accounts at the time

Click to open →
January 2024

Mercedes-Benz source code exposure

An employee committed a token to a public repo. It gave unrestricted and unmonitored access to the entire source code on the internal GitHub Enterprise Server, exposing database connection strings, cloud access keys, blueprints, design documents, SSO passwords, and API keys. The first token granted full ownership of the account; inside one of its private repos sat a second token to the GHE instance, a classic chained-credential blast radius that ran from the user plane straight into the enterprise plane.

Permissions abused

Classic PAT (full account access)Chained token → GitHub Enterprise Server access

On the permission reference

Click to open →
2025–2026

OAuth consent phishing at scale

A campaign hit roughly 12,000 repositories with fake "Security Alert" issues, tricking developers into authorizing a malicious OAuth app that then held full control of their accounts and code. Because the link lands on the real GitHub authorization screen, it passes SPF/DKIM, bypasses MFA, and grants a persistent token without ever touching a password. Device-code phishing against GitHub follows the same shape: research reports success rates above 90% in authorized engagements, and a broadly scoped phished token yields private repos, Actions secrets, and more.

Permissions abused

OAuth App authorization (broad scope)Device-code phishing

On the permission reference

Click to open →
December 2022 – January 2023

CircleCI session-cookie theft

Malware on an engineer's laptop stole a 2FA-backed session cookie, letting the attacker impersonate an employee who had rights to generate production tokens. Customer environment variables, tokens, and SSH keys were exfiltrated, and encryption keys made at-rest encryption moot. CircleCI rotated every customer GitHub OAuth token on their behalf. Worth noting for tiering purposes: a session cookie sat above MFA in the trust chain.

Permissions abused

2FA-backed session cookie (bypasses PAT/SSH controls)

Reported by: CircleCI incident report

Click to open →
May 2026

GitHub's internal repositories taken through a VS Code extension

On 18 May 2026 GitHub detected and contained the compromise of an employee's device through a poisoned VS Code extension from a third party. Aikido reports that GitHub confirmed the extension as Nx Console, which has more than 2.2 million installs and a verified publisher; the bad release was pulled from the VS Code Marketplace within about 18 minutes. That was enough. The attacker claimed about 3,800 repositories, and GitHub said the claim was directionally consistent with its own investigation. Only GitHub's internal repositories were affected, but GitHub rotated the GitHub Enterprise Server signing key as a precaution, and every GHES customer had to rotate the GPG public key used to verify upgrades. Nobody needed a GitHub permission to start this: the extension ran with the developer's own access.

Permissions abused

Everything the developer's machine could reachDeveloper tokens and cloned code

On the permission reference

Reported by: GitHub

Click to open →
October 2025 – March 2026

GlassWorm: editor extensions that steal GitHub tokens and force-push

GlassWorm started on 17 October 2025 as malicious VS Code extensions on Open VSX and the VS Code Marketplace. The loader is written in invisible Unicode characters, so it shows as blank space in editors, terminals and GitHub's diff view. Once installed, it takes GitHub, Git, npm and Open VSX credentials from the developer's machine, uses them to infect more extensions, and turns the machine into a proxy with remote access. From late 2025 the stolen GitHub tokens were also used against repositories. In March 2026 the same actor took the latest real commit in hundreds of Python repositories, added an obfuscated payload to files such as setup.py, and force-pushed it to the default branch. The author and commit message were kept, so only the committer date gives it away. Aikido found at least 151 affected repositories through code search in 3 to 9 March, and StepSecurity found hundreds more across hundreds of accounts, which it tracks as ForceMemo and ties to GlassWorm through the same command wallet. A force-push like this only works where the branch allows it.

Permissions abused

Tokens stored on the developer's machinecontents:write (force-push to the default branch)

On the permission reference

Reported by: Aikido, StepSecurity

Click to open →