210
submitted 11 months ago* (last edited 11 months ago) by abobla@lemm.ee to c/linux@lemmy.ml

Packages:

  • github.com/truthfulpharm/prototransform
  • github.com/blankloggia/go-mcp
  • github.com/steelpoor/tlsproxy
all 28 comments
sorted by: hot top controversial new old
[-] HelloRoot@lemy.lol 83 points 11 months ago

Aaah finally, malware for Linux, truly the year of the Linux Desktop!

[-] Ahrotahntee@lemmy.ca 37 points 11 months ago

We made it! I never thought I'd live to see this day!

[-] FriendBesto@lemmy.ml 1 points 11 months ago

Notice me Hacker Senpai!

[-] vegetvs@kbin.earth 69 points 11 months ago

The Go programming language allows developers to fetch modules directly from version control platforms like GitHub.

This is absolutely not just specific to Go.

[-] krakenfury@lemmy.sdf.org 41 points 11 months ago
  • PyPi
  • npm
  • Maven Central
  • Docker Hub
  • Artifact Hub
  • PPA
  • AUR

The problem isn't specific to anything. It's also not specific to malware. Vulnerabilities are just as dangerous, if not more so.

[-] FurryMemesAccount@lemmy.blahaj.zone 7 points 11 months ago

Cargo also has a --git option but I suppose it's not default behavior

[-] krakenfury@lemmy.sdf.org 2 points 11 months ago

Sure! My point is that hosting doesn't really matter, though. Malware and vulnerabilities are introduced at all points of supply chains.

[-] FurryMemesAccount@lemmy.blahaj.zone 3 points 11 months ago

I agree, I was just giving another example to raise awareness about that feature of rust.

[-] blobjim@hexbear.net 1 points 11 months ago* (last edited 11 months ago)

That's a pretty unique feature to Go I think. Maybe clang has something similar I guess?

Not that an attack like this is unique or anything.

[-] addie@feddit.uk 3 points 11 months ago

CMake, which is kind of the universal standard build system for C++ now, has "fetch content" since v3.11. Put the URL of a repository (which can be remote, but also local, which is handy) and optionally the branch / commit ID that you'd like, and it will pull it into your build directory automatically. So yeah, you can pull anything nefarious that you'd like. I don't think most people would question pulling and building a library from Github as part of the build, especially if it had a sensible name for the task at hand.

[-] fluxion@lemmy.world 34 points 11 months ago

This is why we can't have nice things

[-] CptKrkIsClmbngThMntn@hexbear.net 22 points 11 months ago

The one, fool-proof solution to supply chain attacks? Write all your own dependencies. meow-coffee

[-] abobla@lemm.ee 28 points 11 months ago

I'm already writing my own dependency to check if a number is even:

if (number == 0) return true
if (number == 1) return false
if (number == 2) return true
if (number == 3) return false

I'm almost there!

[-] CptKrkIsClmbngThMntn@hexbear.net 18 points 11 months ago

You've probably covered 90% of use cases there so you're doing well!

I'm trying to port your code to Rust but the compiler keeps giving me an error about non-exhaustive match arms sadness

[-] Kazumara@discuss.tchncs.de 9 points 11 months ago

It's quite cruel of that compiler not being happy until you're exhausted.

[-] abobla@lemm.ee 7 points 11 months ago

this is so sad, I'm gonna pray for you in rust

[-] CptKrkIsClmbngThMntn@hexbear.net 8 points 11 months ago

Assuming you're monotheistic, I believe you can use an mpsc channel to send those asynchronously.

[-] sping@lemmy.sdf.org 3 points 11 months ago

That seems to be the Go way. Why put it in a library when everyone can just re-implement it themselves (and test and document it too, right? Right?).

E.g. There isn't even a standard set object, everyone just implements it as a map pointing to empty structs, and you get familiar with that and just accept it and learn to understand what it means when someone added an empty struct to a map. And then people try to paint this as a virtue of the language.

[-] CptKrkIsClmbngThMntn@hexbear.net 6 points 11 months ago

E.g. There isn't even a standard set object, everyone just implements it as a map pointing to empty structs, and you get familiar with that and just accept it and learn to understand what it means when someone added an empty struct to a map.

Goooood fucking gravy.

I hate to be such an opinionated programmer, but everything I've read about Go only reinforces my negative opinion, especially since I read this now-famous article.

[-] sping@lemmy.sdf.org 2 points 11 months ago

I have decades as a SWE, including deep (but now out-of-date) C++ experience, a lot more recently in serious Python systems, and a fair amount of web UI dev on the side.

Now I have 1 year with Go. I came to it with an open mind having heard people sing its praises I thought it would be broadening to spend some time with a language new to me.

My advice now is do anything you can to avoid working in golang. Almost daily, I seriously contemplate whether it'd be worth quitting and being unemployed, even in this economy (US). It is a better C, but that's a low, low bar at least for the project domains I ever work in. Where it's an even plausible answer, Rust is probably a better one (I think? - haven't used Rust for anything real).

[-] CptKrkIsClmbngThMntn@hexbear.net 1 points 11 months ago

Oooof, good to know. I have a bit more of a low level C brain at root so I see the appeal of Go, but never had enough of a reason to get into C++. I've only really used C# and JS/JS frameworks professionally.

Rust is an absolute joy to work with. The strong typing, the hands-on memory management, the functional elements, the build system, the helpful compiler errors and warnings, the magical feeling that comes when your first successful compile since refactoring just works, the queer-friendly community... just the perfect language for the way my brain operates.

I'm lucky to be unemployed at the moment and have time to make my own projects with tools of my choosing. There are definitely some barriers to using it in most workplaces, but most of those come down to adoption inertia and the fact that the language is still "new" - new in the sense that it's not mature enough to have a mature enough frontend framework that has a mature enough third party component library for easy plug and play. Filling out all the corners that older languages have is gonna take a while.

[-] UnfortunateShort@lemmy.world 17 points 11 months ago

Any intel on affected, high-profile software?

[-] MoonMelon@lemmy.ml 16 points 11 months ago

I found the original blog post more educational.

Looks like these may be typosquats, or at least "namespace obfuscation", imitating more popular packages. So hopefully not too widespread. I think it's easy to just search for a package name and copy/paste the first .git files, but it's important to look at forks/stars/issue numbers too. Maybe I'm just paranoid but I always creep on the owners of git repos a little before I include their stuff, but I can't say I do that for their includes and those includes etc. Like if this was included in hugo or something huge I would just be fucked.

[-] catloaf@lemm.ee 10 points 11 months ago

The really fun version of that is when people take some of the hallucinated package names from an LLM and create them, but with malware.

[-] dubyakay@lemmy.ca 0 points 11 months ago
[-] tomatoely@sh.itjust.works 4 points 11 months ago* (last edited 11 months ago)

If anyone is curious, I checked the yay aur helper go dependencies here and it had none of the malicious packages mentioned on this post

[-] OctaviaMeowzly@lemmy.blahaj.zone 1 points 11 months ago

Halloween documents pt 2

this post was submitted on 05 May 2025
210 points (98.6% liked)

Linux

63789 readers
200 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS