Skip to main content
3,000 Stolen GitHub Tokens Found on Dark ForumsIncident
4 min readFor Security Engineers

3,000 Stolen GitHub Tokens Found on Dark Forums

What Happened

Flare researchers discovered active listings for compromised developer credentials and access tokens on underground forums—weeks before these same credentials appeared in public supply-chain incidents. This pattern repeated across multiple cases: GitHub personal access tokens, Vercel deployment keys, and AWS credentials surfaced in dark web marketplaces, then later showed up as entry points in disclosed breaches.

In the Vercel incident, attackers compromised a trusted third-party AI tool using credentials that had been advertised on underground forums. The attack chain started with stolen developer access, not a zero-day exploit. Your perimeter didn't fail—someone bought the keys to walk through your front door.

Timeline

Week -4 to -2: Compromised GitHub tokens and Vercel deployment credentials appear in dark web marketplace listings. Sellers advertise access to specific organizations' repositories and CI/CD pipelines.

Week -1: No detection. Your SIEM logs show normal developer activity because the tokens are legitimate. Rate limiting doesn't trigger because the access pattern mimics a real developer's workflow.

Week 0: Attackers use purchased credentials to inject malicious code into a dependency or modify build scripts. The code passes your automated scans because it's committed by a "trusted" account with valid credentials.

Week +1 to +2: Modified packages propagate through your build pipeline. Production deployments include the compromised code.

Week +3: You discover the incident through customer reports, external researcher notification, or—if you're lucky—your runtime detection catches anomalous behavior.

The warning signs existed for 2-4 weeks. You just weren't looking in the right place.

Which Controls Failed or Were Missing

Token Lifecycle Management: The stolen credentials remained valid for weeks or months. Your team likely treats GitHub personal access tokens as "set and forget" rather than rotating them on a schedule. No automated expiration, no anomaly detection on token usage patterns.

Geographic and Behavioral Access Controls: A developer token that normally commits from California at 9 AM suddenly pushes code from Eastern Europe at 3 AM. Your source control platform logged this—did anyone review it?

Third-Party Integration Vetting: The Vercel incident involved a compromised AI tool in your supply chain. You validated the tool when you added it. Did you reassess its security posture quarterly? Did you monitor for credential leaks associated with that vendor?

Threat Intelligence Feeds: Your security stack ingests CVE feeds, malware signatures, and IP reputation lists. It doesn't monitor underground forums where your organization's name appears alongside "GitHub access available."

Privileged Access Monitoring: Developers with write access to production repositories are privileged users. You monitor your database admins and cloud administrators. Why not the accounts that can modify your entire codebase?

What the Relevant Standard Requires

NIST CSF v2.0 – PR.DS-6 requires you to detect integrity anomalies. That includes unauthorized changes to your software supply chain, but detection assumes you have visibility into precursor events. If credentials leak and you don't know, you can't detect their misuse.

ISO/IEC 27001:2022 – Control 5.18 (Access management) requires periodic review of access rights. "Periodic" should mean something more frequent than "when someone leaves the company." If your GitHub tokens don't expire and you don't audit their usage, you're not meeting this control.

NIST 800-53 Rev 5 – SA-10 (Developer Configuration Management) requires you to protect the integrity of software and information during development. Protecting integrity means knowing when your development credentials are compromised and available for purchase.

PCI DSS v4.0.1 – Requirement 6.3.2 mandates that your organization maintains an inventory of bespoke and custom software. If you can't track which credentials have access to modify that software, your inventory control is incomplete.

SOC 2 Type II – CC6.1 (Logical and Physical Access Controls) requires restricting access to your systems. The auditor will ask how you detect and respond to compromised credentials. "We don't monitor dark web forums" won't satisfy that requirement if your credentials are actively traded there.

Lessons and Action Items for Your Team

Implement Credential Expiration Policies: GitHub supports token expiration. Enforce 90-day maximum lifetimes for personal access tokens. Automate the rotation process to minimize disruption.

Deploy Token Scanning on All Repositories: GitHub's secret scanning is free for public repos and included in Enterprise. Enable it. Configure it to scan for your organization's patterns—AWS keys, API tokens, database credentials. This catches secrets before they reach underground forums.

Subscribe to a Dark Web Monitoring Service: Flare isn't the only option. RecordedFuture, Digital Shadows, and Cybersixgill all monitor underground forums for credential leaks and access sales. Budget $15,000-$50,000 annually depending on your organization size. Compare that to the cost of a supply-chain incident.

Create Behavioral Baselines for Developer Accounts: Your SIEM can track commit times, IP addresses, and repository access patterns. Alert on deviations: commits from new countries, access at unusual times, bulk downloads of source code. Treat developer accounts like privileged users because they are.

Audit Third-Party Tool Access Quarterly: List every integration that can read or write to your repositories. For each one, verify: Does this tool still need this access? Has the vendor had any security incidents? Are their credentials appearing in breach databases? Revoke access for anything you can't justify.

Test Your Detection: Generate a test GitHub token, "leak" it to a controlled environment, and see if your monitoring catches it. If you don't detect a known-leaked credential, you won't detect a real one.

The attackers are already monitoring for your credentials. The question is whether you are.

GitHub Secret Scanning

Topics:Incident

You Might Also Like