• 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.
  • @darklamer@lemmy.dbzer0.com
    link
    fedilink
    English
    36723 days ago

    The developer said he forgot that his secret keys were in the repository.

    If you have your secret keys in your repository you’ve already fucked up, long before you accidentally make that repository public.

    • @BrianTheeBiscuiteer@lemmy.world
      link
      fedilink
      English
      9423 days ago

      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.

      • @lurch@sh.itjust.works
        link
        fedilink
        English
        5523 days ago

        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.

        • @barsquid@lemmy.world
          link
          fedilink
          English
          622 days ago

          What’s the general consensus on storing encrypted data in the repo with the keys outside? I see people recommend that but I’m too paranoid and my secrets are very small in size so it hasn’t been necessary.

          • @lurch@sh.itjust.works
            link
            fedilink
            English
            10
            edit-2
            22 days ago

            the format of the encrypted file can give the attackers an advantage. if your code reads the decrypted file, the attacker can guess the first line is a comment or the name of a setting. a savvy person can combine that with the algorithm to perform a “known plaintext attack”, for example by generating a number of possible passwords that would lead to files starting like that.

            • @Natanael@slrpnk.net
              link
              fedilink
              English
              422 days ago

              That’s not quite the definition of known plaintext attack (cryptography nerd here), that’s bruteforce with a “crib” to use older terminology (known patterns which allows you to test candidate keys).

              A known plaintext attack is defined as an attack on the algorithm to extract the key faster than bruteforce with analytical attacks.

          • @Takios@discuss.tchncs.de
            link
            fedilink
            English
            822 days ago

            I’ve seen that done for configuration management like Salt or Ansible. The repos for that were always hosted on internal Gitlab instances though.

          • @elephantium@lemmy.world
            cake
            link
            fedilink
            English
            222 days ago

            I see some of that in my job. We put encrypted data in settings files, and the keys for decryption are provided on the VMs where we deploy. The developers never actually see the keys.

            I suppose it’s as secure as the process for managing the production VMs, assuming the encryption isn’t just md5!

      • @JimmyMcGill@lemmy.world
        link
        fedilink
        English
        1522 days ago

        I basically always do a git add -p

        Very useful command and it works with other git commands as well.

        Everytime a colleague asks me for help with git that’s the one rule I suggest them to use.

      • @Nithanim@programming.dev
        link
        fedilink
        English
        822 days ago

        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.

      • andrew
        link
        fedilink
        English
        622 days ago

        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.

        https://git-scm.com/docs/gitignore

        • @BrianTheeBiscuiteer@lemmy.world
          link
          fedilink
          English
          422 days ago

          For personal projects that’s definitely a good idea. For team projects I like to keep that stuff in the project still so the “experience” of working in the project is mostly consistent.

          • @bellsDoSing@lemm.ee
            link
            fedilink
            English
            221 days ago

            I started using git-secret 2 years ago. It’s nice for making secrets part of the repo, while not being readable by anyone that isn’t explicitely allowed to do so (using GPG).

        • @Kazumara@discuss.tchncs.de
          link
          fedilink
          English
          221 days ago

          Better yet you can configure gitignore globally for git.

          I think you really need the project specific gitignore as well, to make sure any other contributor that joins by default has the same protections in place.

      • @sugar_in_your_tea@sh.itjust.works
        link
        fedilink
        English
        120 days ago

        git add -u is pretty nice, it only adds modified files.

        I usually do git add -p which is interactive (helps avoid committing debugging prints and whatnot), but the other is nice for bigger refactors.

      • @bamboo
        link
        English
        723 days ago

        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.

  • @dhork@lemmy.world
    link
    fedilink
    English
    12223 days ago

    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.

  • Todd Bonzalez
    link
    fedilink
    English
    10922 days ago

    I can’t believe someone would be so stupid and careless as to develop Web3 software.

  • Johanno
    link
    fedilink
    English
    9322 days ago

    They made 2 errors.

    1. Use crypto

    2. Storing the key anywhere close to the repo.

  • @lowleveldata@programming.dev
    link
    fedilink
    English
    8223 days ago

    It must be automated for it to happen in 2 minutes. Which implies these kind of things happen often enough for someone to write a script for it.

    • @tiramichu@lemm.ee
      cake
      link
      fedilink
      English
      91
      edit-2
      23 days ago

      Yes, it absolutely is automated.

      There are bots running constantly looking for things that match patterns for exploitable credentials in public commits.

      AWS credentials

      SSH keys

      Crypto wallets

      Bank card info

      If you push secrets to a public github repo, they will be exploited almost immediately.

      • @daddy32@lemmy.world
        link
        fedilink
        English
        922 days ago

        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…

        • @Voroxpete@sh.itjust.works
          link
          fedilink
          English
          322 days ago

          Not really. All of the underlying mechanics of crypto are so simple that they can be very easily interacted with by bots. Bots make up the vast majority of all crypto trades; mostly wash trading, but also front-running attacks, scams or outright thefts like this one. There are so many exploitable flaws in crypto that every bug is basically a self-executing bug bounty.

    • partial_accumen
      link
      fedilink
      English
      57
      edit-2
      23 days ago

      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.

    • TheHarpyEagle
      link
      fedilink
      English
      2022 days ago

      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.

  • k_rol
    link
    fedilink
    English
    5422 days ago

    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.

  • 👍Maximum Derek👍
    link
    fedilink
    English
    38
    edit-2
    23 days ago

    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.

    • @barsquid@lemmy.world
      link
      fedilink
      English
      923 days ago

      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.

    • @sugar_in_your_tea@sh.itjust.works
      link
      fedilink
      English
      220 days ago

      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.

  • Jo Miran
    link
    fedilink
    English
    1223 days ago

    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.