Force Push Issue in repos #207212
Replies: 3 comments
|
💬 Your Product Feedback Has Been Submitted 🎉 Thank you for taking the time to share your insights with us! Your feedback is invaluable as we build a better GitHub experience for all our users. Here's what you can expect moving forward ⏩
Where to look to see what's shipping 👀
What you can do in the meantime 💻
As a member of the GitHub community, your participation is essential. While we can't promise that every suggestion will be implemented, we want to emphasize that your feedback is instrumental in guiding our decisions and priorities. Thank you once again for your contribution to making GitHub even better! We're grateful for your ongoing support and collaboration in shaping the future of our platform. ⭐ |
|
Hi @waqas-0, This is a critical supply-chain attack. Based on your payload analysis, here is why the re-compromise keeps happening and the exact steps to stop it immediately: 1. The Root Cause: "Build-Time Exfiltration Loop"You noted that Even if you revoked your personal GitHub tokens, the attacker likely stole a Deployment Token, Vercel/Netlify Integration Secret, or Fine-Grained PAT stored inside your hosting platform's build secrets. 2. Immediate Action Steps to Lock Down the RepoStep A: Stop Force-Pushes Immediately (Repository Ruleset)Do not wait to find the token—block the vector right now:
Step B: Nuke & Rotate ALL CI/CD Build Secrets
Step C: Check Hidden GitHub Access PointsCheck these specific locations for leaked write-access:
3. Purging Objects & Getting Audit Logs (Official Support)Please note that community members in GitHub Discussions cannot inspect private repo audit logs or purge orphaned Git objects.
Block force pushes first, rotate your build env secrets second! Hope this helps you eliminate the backdoor. If this guidance helps resolve the issue, please consider marking this as the accepted answer. |
|
Same campaign hit our organizations on Oct 11, 2026 (~05:19–05:24 UTC, two waves Indicators in our case:
What worked for us:
Nobody on our side opened the infected checkouts, so the payload never ran |
Uh oh!
There was an error while loading. Please reload this page.
🏷️ Discussion Type
Bug
Body
Subject: Repeated unauthorized force-pushes injecting malware into my private repository
Hello,
My private repository
waqas-0/Hyperzodhas been force-pushed to by an unauthorized party three times in the past several days. Each time, every branch was reset to a single commit carrying obfuscated malicious JavaScript. I have cleaned the repository three times, and it has been re-compromised within roughly an hour on each occasion — so the credential being used is still valid.What happens each time
All branches (
main,feature/platform-admin-mobile-v2,fix/backend-port-and-supabase-wiring) are force-updated to one commit. That commit appends obfuscated JavaScript to exactly three files:apps/storefront-web/postcss.config.mjsapps/merchant-dashboard/postcss.config.mjsapps/platform-admin/postcss.config.mjsThese normally contain 81 bytes each. After each attack they contain roughly 30–33 KB.
Malicious commits
Attack | Commit SHA | Payload per file -- | -- | -- 1 | 64385e5c91e6b19092f6346266f86055cb6a0758 | 31,475 bytes 2 | 6d7aca74ca860770306ebe25499dc81695ce83d7 | 33,006 bytes 3 | ad451efd9378606c3f322f2da55872f22603a0f7 (main) and 8a8c982ed48ce386f2432270c567dcf32b94e593 (other branches) | 30,208 bytesThe payload differs in each attack, so it is being actively rebuilt rather than replayed.
Why this is urgent
postcss.config.mjsexecutes during every Next.js build. Any CI or hosting provider building this repository runs the attacker's code with the full build environment — including secrets — in scope. Static inspection of the payload (I have not executed it) showscreateRequire,global.r = require,spawn,eval,process.env, and outbound calls todrpc.organd an…pc.io/ethendpoint, consistent with credential and cryptocurrency-wallet theft.Impersonation
Each malicious commit is authored using my own account's email address, with a timestamp and commit message copied verbatim from a legitimate earlier commit of mine (
760b518f78d6c8969e69a631ff1d07ea5da97b0c). In a deploy history the malicious commit is visually indistinguishable from the real one. I did not author these commits.What I have already done
What I need from you
I have not attached the payload. I can provide the full contents of any affected file on request.
Thank you, waqas-0
All reactions