Web3 developer Brian Guan lost $40,000 after accidentally making his wallet keys public on GitHub.
Web3 developer Brian Guan lost $40,000 after accidentally posting his wallet's secret keys publicly on GitHub, with the funds being drained in just two minutes.
The crypto community's reactions were mixed, with some offering support and others mocking Guan's previous comments about developers using AI tools like ChatGPT for coding.
This incident highlights ongoing debates about security practices and the role of AI in software development within the crypto community.
One of the first things you should do in a repo is add a .gitignore file and make sure there are rules to ignore things like *secret* or *private* etc. Also, I pretty much never use git add . because I don't like the laziness of it and EVERY TIME one of my coworkers checked in secrets they were using that command.
Even though that's a good extra precaution, per person config data, such as keys, should be stored outside of the repo, eg. in the parent directory or better in the users home dir. There is zero reason to have it in the repo. Even if you use a VM/containers, you can add the config in an extra mount/share.
I never understood why everyone uses it as a ignore list. In my own and work repositories I always exclude everything by default and re-add stuff explicitly. I have had enough random crap checked in in the past by coworkers. Granted, the whole source folder is fully included but that has never been a problem.
Better yet you can configure gitignore globally for git. I do this mostly to avoid polluting repo ignore files with my editor specific junk but *.key and similar can help prevent accidents.
Does Microsoft's GitHub offer any pre-receive hook configuration to reject commits pushed that contain private keys? Surely that would be a better feature to opt all users into rather than Windows Copilot.
I have no sympathy for him, if he is a crypto developer he knows how important those private keys are. And he also knows people scrape public areas all the time looking for keys just like that. The whole point of crypto is to be immutable, so that money is simply lost to him now.
He seems to know how much of a dumb mistake that was, although his description of himself was a bit more colorful.
You're not wrong about how important those keys are and how he definitely should have known better. But I at least have a little sympathy for the guy. Everyone makes mistakes from time to time, even with important stuff. Hopefully they are lucky enough not to lose 40k on one but unfortunately he wasn't. Whether he should have known better or not, that just plain sucks.
The whole point of crypto is to be immutable, so that money is simply lost to him now.
IIRC there are several cases where some group of people lost big enough coins and force most of the miners to fork to get their money back. Not bitcoin though.
The scanning part is definitely automated by many different actors (for the gains or the "lulz"), but being this fast, also automated key usage (account draining) must have been implemented which is a bit more impressive...
If it was a script I wrote, it would have successfully stolen the $40k, but also stolen my own money and deposit both sets of money into a second intended victims account because I forgot to clear a variable before the main loop runs again.
Oh yes absolutely, there are bots constantly crawling any open source code. A friend of mine accidentally leaked their discord API key, nuked a whole server within minutes.
I'm sad I didn't see any comments saying he shouldn't be using a $40k wallet key to test his software in the first place. Anything could happen with simple code mistakes...just get an empty wallet or one with a few bucks in it.
If there was any sort of password / highly entropic string detection in their build pipeline it would have caught a wallet's keys. They aren't an excuse for lack of diligence, but they should still be in every pipeline where passwords or keys might have to get used.
I'm terrible about building pipelines for most of my personal projects though, so I'm throwing rocks from my glass house here.
I like your CI plan but maybe they just needed some sort of sane policy. Like never commit plaintext keys to any repo. Never work with a $40k key in a new project under development. Never convert a private repo to public.
A CI pipeline wouldn't fix this since the code would be committed before the pipelines run. This needs to be caught on the dev's machine with a pre-commit or pre-push hook.
I use a text file version of a novel to back up my keys, then I store the key map in multiple cloud drives. For example, if the word is "lighting" then my key map for that word would be 487,5 (line 487, word 5). Easy to crack, if you know what novel I am using.
To get my codes you have to play Alone in the Dark 2, and have the original 2 sided playing cards, then translate that into Brittanic runes and find the latitude and longitude of the given city on a cloth map from the original Ulitma.