I found 10k GitHub repositories distributing Trojan malware

(orchidfiles.com)

247 points | by theorchid 5 hours ago ago

70 comments

  • bananamogul 4 minutes ago

    I reported a repo containing obvious nulled software to GitHub in February 2024.

    The title is "nulled WHMCS" and it's a full copy of that software with copy protection removed. It couldn't be more cut and dried.

    The repo is still there 2+ years later and GitHub has taken no action.

    If GitHub can't respond to tickets pointing out obvious pirated software, I don't think they care about anything anyone puts up.

  • danso 9 minutes ago

    Being reminded of this anecdote from NYMag's recent cover story (which had previously been reported in a WSJ story[0]) about a Disney engineer who downloaded an AI-gen tool from Github and "checked the code himself, it had looked legitimate":

    https://archive.is/yAUNy

    > He had no idea why the hackers had targeted him or what their plan was, whether they would drain his family’s finances or stalk his home. Eventually, after running another anti-virus program, he found a piece of malware hidden in a plug-in he had downloaded from GitHub, the open-source coding site, one day in February when he was messing around with an AI image generator. He had checked the code himself, it had looked legitimate, and others had reviewed it positively. But it seems it contained a Trojan-horse virus that gave the hackers free rein of his PC. Once inside, they just had to wait for Van Andel to log in to 1Password. From there, they were able to steal all his credentials, plus many of his multifactor-authentication codes, so every time Van Andel logged in to an app, a website, or an account, they could follow behind him. They’d had access for months.

    [0] https://www.wsj.com/tech/cybersecurity/disney-employee-ai-to...

  • emodendroket 3 hours ago

    I have to say, the principle that open-source software can't do anything nefarious because the source is open just hasn't held up for a lot of reasons -- including that nobody has the time to inspect the code, let alone ensure that it matches the binaries; and also that GitHub has become a distribution hub for software used by lots of people with no ability or interest in auditing the software they use.

    • spicyusername 2 hours ago

      The choice is between code you can validate and code you can't, not code that has malware and code that doesn't.

    • embedding-shape 3 hours ago

      > the principle that open-source software can't do anything nefarious because the source is open just hasn't held up for a lot of reasons

      You've been living on such a principle? That sounds insane, why would something not be nefarious just because you can read the code?

      The way I was "raised" by FOSS greybeards screaming at me through web forums, was that any software available on 3rd party websites anyone can upload anything to, will be filled with viruses and malware, and this was early 2000s. Surely people still advocate for this mindset today, when it's even more likely?

      • Defletter an hour ago

        > You've been living on such a principle? That sounds insane

        Fun fact, I've spent the last few days fretting over whether to add H2 to my FabricMC mod. The problem being that I don't know what class-loading shenanigans could possibly occur if I jar-in-jar include it: what happens if another mod has H2 jar-in-jar included? Will my mod only reference its own version of H2? What implications [if any] would that have? Or will the Fabric Loader pick one? What if another mod has H2 shaded instead? Will the classes clash differently? What if, instead of jar-in-jar including it, I shade and relocate it? Does H2 or JDBC rely on reflection or services that would render it non-functional?

        All recommendations point to using/creating a mod specifically for that library and depending on it. As luck would have it, one already exists on Modrinth. Except... I'm then requiring anyone who trusts my mod to also install this other mod that I have no control over. I just looked at the source code and it looks fine, but that's if you trust that the published jars are the exact result of that source code: maybe there's something malicious in the Gradle Wrapper binary. This mod could at any time become malicious and how would I detect that?

        Guess what? I asked around and was summarily told to stop worrying, that it's fine. We on this website need to realise that we're a minority: NO ONE is routinely (or even occasionally) scrutinising the source code of the stuff they install from third-party websites. I have never, not once, seen anyone hash a downloaded file to check that it matches what's on the website. At the very most, I've seen people find the Github repo, see that it has a lot of stars, and then assume it's safe.

      • emodendroket 3 hours ago

        No, I've not been "living on" such a principle but it was a big claim for "the bazaar."

        • embedding-shape 3 hours ago

          Aha, wasn't that argument more about that closed source software is more likely to hide stuff you don't agree with, than FOSS? Not necessarily that FOSS won't have any viruses or malware, but it's at least less likely. That was my take away, but long time ago I read the book admittedly, I might misremember or transformed it automagically over time.

          • CapsAdmin 2 hours ago

            This is my takeaway as well. Having the source code open makes it auditable, if not by you, maybe the community.

            The free software license specifically gives the software an extra advantage in that changes to the software must be shared openly, if distributed as as binaries.

            • jankdc 2 hours ago

              > source code open makes it auditable, if not by you, maybe the community

              I think part of why this social engineering works so well is it takes advantage of that "many eyes" trust, where people are prone to delegating the responsibility of checking to the community and not do due diligence on themselves. I know I'm susceptible to it if I see a Github repo with more than 10k stars on it.

        • abc123abc123 2 hours ago

          You'd better read it again, because that claim does not figure in that text. You might mean that with more eyes on the code, more bugs are found, than with no eyes on the code. But that is not what you are saying here.

      • tuwtuwtuwtuw 3 hours ago

        > You've been living on such a principle?

        I have not, but in case you missed it, this principle has been used by open source proponents for decades. I'm an open source developer myself, but always found it odd.

        • nixosbestos 2 hours ago

          No, it's really not, and really hasn't been. Do people truly have such poor reasoning and logic skills?

          "Closed source software is inscrutable, impossible for me to fix, impossible for me to review the source" is absolutely a distinct statement from "it is impossible to hide malware in open-source software". I've literally never heard someone claim the latter.

          (edit for coherency, thanks graemep)

          • birksherty an hour ago

            > "it is impossible to hide malware in open-source software"

            No nobody said "exactly that". But many times I've seen people claiming to trust open source as it is safer and people can check and build themselves. Seen it too many times. But reality is different than what is claimed.

          • graemep 2 hours ago

            I think you mean open source in the second bit in quotes.

        • fsflover 3 hours ago

          This is not the argument at all. It's just easier to discover malware in closed software.

    • ptx 2 hours ago

      The problem the article is describing seems to have little to do with open source. There were GitHub repositories that had links added in their READMEs to a zip file containing compiled binaries.

      GitHub is not a curated software repository. It's essentially no different from some random stranger linking to some binaries on a forum. (There are communities that seem to have no concerns about running unknown binaries from strangers in forum threads, but I wouldn't recommend it.)

    • BonerWiener 34 minutes ago

      > I have to say, the principle that open-source software can't do anything nefarious because the source is open

      No is saying this. I think you have misunderstood the principles of open source. I'd rather be able to verify the code i am running, then it being locked down, propreitery.

      I have the possibilty to audit FOSS. Cant do it for propreitery software

    • nkrisc 21 minutes ago

      Never heard of that principle. I have heard people say that if an open source project was doing something nefarious it would be easier for someone to discover it.

    • moomin an hour ago

      Ironically, one of the promises of AI: enough eyeballs.

      The catch is the eyeballs can also be used to generate exploits.

    • ffacu an hour ago

      I think that this is becoming increasingly true only for large, well-known repositories, where the maintainers have a lot to lose by doing anything shady. I don't think the React team could get away with doing something like that, for example.

    • atmosx 2 hours ago

      Not true. If statistics offer a “measure” of reality, my guess is that “OS doing nefarious things” must fall between 0,005% and 0,007%. In any case compared to the extracted value it’s … nothing.

    • megous 37 minutes ago

      What's opensource about this?

        - Application.cmd or Launcher.cmd
        - loader.exe or luajit.exe or another_name.exe
        - random_name.cso or random_name.txt
        - lua51.dll
      
      All of the content are binaries or launcher scripts.
    • Yokohiii 2 hours ago

      If all projects on github were closed source with public "trust me bro" binaries the situation would be of course much better.

      • birksherty an hour ago

        "Trust me bro" is what people say about open source everywhere when it's not true.

  • jp0001 3 hours ago

    I uploaded a sample found here (https://github.com/alexct142010-cell/McBackuper ) to Genus Codes (need an account): https://genuscodes.com/results/7ad4b911d05a12f91ab27ba3baa35... Seems to be related to the disco trojan family, by way of normalized function matching at 50% to malicious file https://genuscodes.com/results/eddbc29db4677e00c1a901aadbadb... and a normalized 50% match to https://genuscodes.com/results/fdb6cff68a2a8c08779d64a7cf61d...

    Virustotal link: https://www.virustotal.com/gui/file/fdb6cff68a2a8c08779d64a7...

  • StableAlkyne 3 hours ago

    > I typed the project name into Google, and my repository appeared in the results. I entered the same query into Bing, and someone else’s repository appeared in the results

    Side story, this kind of thing is what made me stop using Bing.

    I had been using it as the default for searches (it sucks, but it's at least not Google), until I landed on a phishing page for my bank (I haven't committed it to memory yet). The page was a near perfect copy, and I would easily have gotten pwnd by it if they didn't have a modal asking me to run some code in my terminal for "security activation" that made me go "that's a little odd... Is this the right address OH SHIT that's a .ru domain"

    I never see Google return phishing pages or typo squatters in the first page. Bing constantly returns that stuff in the first several results.

    • sureglymop 31 minutes ago

      I've seen it many times on google where the phishing sites were advertised results stickied above the results they impersonate.

      Another good reason to use ublock origin!

    • weird-eye-issue 3 hours ago

      This is where password managers are useful because they would refuse to fill in login information since the domain doesn't match

      • StableAlkyne 2 hours ago

        I use keepass (FOSS under GPL, fully offline).

        It does not detect domains.

        • jabroni_salad 25 minutes ago

          The autotyper can with a little bit of finangling. Every browser has a 'url in title bar' extension avaialble and then you can use that for your autotype matching. If you do not like to use extensions, changing a page's title is a trivial bookmarklet or userscript to make I would think.

        • throawayonthe 9 minutes ago

          you can have it be offline and still a browser extension (when i used keepassxc it could to that)

        • graemep 2 hours ago

          KeepassXC browser integration will do that.

      • vel0city 3 hours ago

        "Dang, this site isn't working right with the password manager's detection. Guess I just gotta paste the password in again..."

        Meanwhile U2F/Passkeys can't possibly be abused like this.

        • tjoff 2 hours ago

          Yeah but the downsides of passkeys make them so much worse anyway.

          • jcattle 2 hours ago

            Pretty happy with having a yubikey on my keychain. Log in someplace new? plonk in your yubikey and off you go!

            • AlotOfReading 2 hours ago

              I used to keep a yubikey in a spare slot on my laptop. One day it fell out and subsequently escaped through an unnoticed hole in my backpack.

              I've never lost a password because my backpack was overly abused.

              • brendoelfrendo 2 hours ago

                That's why you keep it on your keychain and not in a spare slot on your laptop.

                • AlotOfReading 16 minutes ago

                  It's not possible to put a 5c nano on a keychain. They're intended to be kept in the slot at all times.

            • someguyiguess 2 hours ago

              And when your keychain gets lost then what?

              • vel0city 8 minutes ago

                Then I use the authenticator built into my phone. Or the authenticator built into my desktop. Or the authenticator built into my laptop. Or my other authenticator.

                My phone was destroyed not too long ago. I had been using it for passkeys. Oh no, all those passkeys were gone. No problem, when I got my new phone I just used the authenticator on my keyring to get back into my accounts.

              • jcattle 2 hours ago

                Then I have a backup yubikey at home for services which allow to register two keys. For other's there's still good old password+some second factor.

              • brendoelfrendo 2 hours ago

                I open the safe where I keep my spare Yubikey. Or I use the passkey stored in my phone, or the one on my laptop. Make passkeys, put them everywhere.

        • bonoboTP 2 hours ago

          Exactly. All these ideals work in theory but then in reality banks are also incompetent and will use all kinds of domains.

          Same with meta and Google where they often direct you to domains that aren't under their main one and it's actually legit, but there's no way to know. It's impossible to teach family members to pay attention if it's really that domain because it's often legit not that domain.

    • spicyusername 2 hours ago

          at least not Google
      
      Is one giant mega-corp better than any other?

      You're going to have a hard time convincing me the answer is yes.

    • abc123abc123 2 hours ago

      Why would you go to your bank by first searching for it? Sounds very insecure to me. I type my banks url directly instead, or if that gets tedious, store it as a bookmark.

      I know several people who search for important sites, click uncritically on links, and get scammed. This is not so good.

    • chrisweekly 2 hours ago

      speaking only to search quality: try Kagi.

  • tgtweak 6 minutes ago

    This is a failure of malware flagging systems as well - VT should not return clean if there are any downstream files that are malicious - such as in this case.

  • RoadieRoller an hour ago

    > Why do they delete a commit and push a new one every few hours?

    May be to make it appear on the top of the "Last Updated" repositories in case someone searches for the repo or a keyword. So instead of the author's actual repo, the users endup cloning the trojan infected one.

  • lookeey 3 hours ago

    It happened a few times to me that I'd find some very well constructed scam scheme (cryptocurrency washing systems, web platform/phishing scams), then I'd research deeper into it to see how it worked, just to ultimately feel powerless not knowing what to do with the information.

    • dentemple an hour ago

      This is what a community is for!

      No individual person can be the superhero that saves the day on everyone's behalf. But what we can do is provide what little help or insight that we have, and then pass the issue along to others.

      Perhaps all it means is that you end up doing what OP did: the "deeper" research that you mentioned plus a little post on Hacker News or elsewhere.

      Even if nothing comes of it in the end, at least you'll have tried.

  • gus_ an hour ago

    A year ago a similar attack was reported and I think that there have been similar campaigns reported this year: https://github.com/evilsocket/opensnitch/discussions/1290#di...

      - This is a new repository, not a fork
      - All repositories have different contributors and different names
      From the last two points, it becomes clear that even if we find one such repository, we won’t be able to find other similar repositories using it.
    
    In previous campaigns the repositories were linked to a few users. But those users had starred other users, that at the same time had also cloned other repositories with the malware. Sometimes the malicious repository had been cloned from another malicious repo, and if you listed the repositories and "friends" of that user, all were part of the botnet.

    Also, github doesn't delete repositories and accounts, they mark them as deleted. If you use their api you can still list them.

  • beej71 26 minutes ago

    I added keyoxide proofs everywhere. It's not really protection against victims using the wrong repo, but at least people who look can be certain that the person who controls my domain and website is the same person who controls that particular GitHub account.

  • Teknomadix an hour ago

    >The zip archive contains 4 files: Application.cmd or Launcher.cmd loader.exe or luajit.exe or another_name.exe random_name.cso or random_name.txt lua51.dll If you submit a link to the archive to VirusTotal, it will find 0 viruses. If you submit the zip file itself, it will detect a Trojan inside it.

    MS Windows

  • rkozik1989 3 hours ago

    People need to do their due diligence when including open-source software and packages not just when they first use them but anytime you have a need to upgrade them. I highly doubt I'm the first one to think of this, but there really aught to be tool or comprehensive set of tools that routinely scan open-source software and packages for potentially malicious code and alert users of the problem(s).

    • junon 3 hours ago

      There are. Socket, Aikido, and a number of others do this all the time.

      • aweiher 2 hours ago

        Step-Security, Wiz ..

  • mmsc 3 hours ago

    > Another month later, GitHub support sent me an email saying that they had removed these repositories.

    I recently discovered a campaign where somebody was forking very small but useful codebases, and replacing the distributable with some malware, and making the repository have better SEO with changes to the README. My case was a simple macOS application that could be used to control some Phillips LED light strip.

    I reported it to GitHub and it was removed within 24 hours.

    I discovered another repository like this, and they still haven't replied since (one month).

    No clue how their malware reports work. I'm surprised they don't partner with some antivirus company to at least scan "releases" for malware (not repositories themselves)

    • mrbluecoat an hour ago

      > I'm surprised they don't partner with some antivirus company to at least scan "releases" for malware

      ...like Windows Defender? Oh, the irony :D

  • jslakro an hour ago

    Any open source tool to scan a github repo before download/install it locally? I'm thinking of semgrep or socket.dev but I wonder if there's a better option

  • astronodev 4 hours ago

    I uploaded several of these virus-infected archives to VirusTotal. In each archive, under the “Network Communication” section, the virus makes requests to three resources: a GET request to a website to retrieve IP information, a POST request to a Polygon RPC node (drpc), and a POST request to what appears to be the virus creator’s server. I can only assume that the scheme is designed to steal cryptocurrency.

  • axus 3 hours ago

    It will feel very spooky when they stop updating because of this essay .

  • rambojohnson 35 minutes ago

    the en-ghettofication of american tech, down to its very open source control projects. a digital ghetto ill maintained if at all.

  • GL26 an hour ago

    is it possible to ban them or report them ?

  • fastcrw 3 hours ago

    are there any ci/cd that controls them?

  • schedpilot 2 hours ago

    damn 10k ? thats a lot, how did you get them ?

    • theorchid 2 hours ago

      Hmm. Using a script. That's explained in the article)

  • pydry 2 hours ago

    Microsoft: and the one thing we absolutely refuse to use AI for is to flag this kind of bullshit to protect users, because it would violate the rule of "don't do anything actually useful with it".

  • siva7 2 hours ago

    Hi Claude fable, why u not protecting me from malware? Am i not american enough? Not rich enough? Yieks..