22 comments

  • wlkr 1 hour ago
    This might just be the frequency illusion at play, but there seem to have been a number of high-profile supply chain attacks of late in major packages. There are several articles on the first few pages of HN right now with different cases.

    Looking back ten years to `left-pad`, are there more successful attacks now than ever? I would suspect so, and surely the value of a successful attack has also increased, so are we actually getting better as a broad community at detecting them before package release? It's a complex space, and commercial software houses should do better, but it seems that whilst there are some excellent commercial products (e.g. CI scan tools), generally accessible, idiot friendly tooling is somewhat lacking for projects which start as hobby/amateur code but end up being a dependency in many other projects.

    I've cross-posted my comment from the current SAP supply chain attack thread [0].

    [0]: https://news.ycombinator.com/item?id=47964003

    • JohnMakin 1 hour ago
      People are ramming tons of code into places without ever looking at it, it would follow that supply chain attacks would increase thusly.
      • eddythompson80 1 hour ago
        Yeah, and ultimately no body cares. Everyone assumes it’s just some process miss, and we need to add another step to the process and move on. Fuck ups that would have killed the credibility of projects 10 years ago are now treated as “eeh what are you gonna do. Sometimes you ship malware. Will look into it”
        • Bengalilol 52 minutes ago
          Good old « release first, fix later »
    • mschuster91 16 minutes ago
      > Looking back ten years to `left-pad`, are there more successful attacks now than ever? I would suspect so, and surely the value of a successful attack has also increased, so are we actually getting better as a broad community at detecting them before package release?

      The value has increased, and that is what drives all these attacks. Cryptocurrencies are to blame in particular because they not just provided a way for money laundering the proceeds but also a juicy target in itself.

      And what is stolen with today's malware? Cloud credentials. Either to use for illicit mining, which is on the decline, or to run extortion campaigns, which is made possible by cryptocurrencies. All too often it's North Korea or Iran running these campaigns.

  • jackdoe 1 hour ago
    I cant wait to have no dependencies.

    An extreme example is now when I make interactive educational apps for my daughter, I just make Opus use plain js and html; from double pendulums to fluid simulations, works one shot. Before I had hundreds of dependencies.

    Luckily with MIT licensed code I can just tell Opus to extract exactly the pieces I need and embed them, and tweaked for my usecase. So far works great for hobby projects, but hopefully in the future productions software will have no dependencies.

    • mandevil 1 hour ago
      The problem with this is now you are solely responsible for managing all of the changes, all of the variation of life. Chrome changed the shape of this API, you are responsible for finding it and updating it. Morocco changed when their daylight savings took effect, now you need to update your date/time handling code. There are a lot of these things that we take for granted because our libraries handle it for us, and with no dependencies you have to do all the work. Not a big deal for making a double-pendulum simulator for your daughter to play with that will stop mattering next week, but is a concern for a company which is trying to build something that can run indefinitely into the future.
      • dualvariable 43 minutes ago
        In companies, though, you often wind up with three+ massive dependency trees in your software to handle the same problem because people went and added the new hotness without deprecating the old stuff. You also find dependencies that are much heavier than necessary for the actual task at hand because the software developer was also solving the problem of needing that dependency on their resume. And then there's just the relatively tiny dependencies for fairly solved problems, like leftpad, which don't really require deps, and you can accept the maintenance burden, because not everything is an abstraction layer over chrome.

        So if you just need to do something simple like fire off a compute heavy background task and then get a result when it is done, you should probably just roll your own implementation on top of the threading API in your language. That'll probably be very stable. You don't need a massive background task orchestration framework.

        People might object that the frameworks will handle edge cases that you've never thought of, but I've actually found in enterprise settings that the small custom implementations--if you actually keep it small and focused--can cover more of the edge cases. And the big frameworks often engineer their own brittle edge cases due to concerns that you just don't have.

        So anyway, it isn't as simple as "dependencies are bad" or "dependencies are good", but every dependency has a cost/benefit analysis that needs to go along with it. And in an Enterprise, I'd argue that if you audit the existing dependencies you will find way too many of them that should be removed or consolidated because they were done for the speed of initial delivery and greenfielding. Eventually when you accumulate way too many of those dependencies the exposure to the supply chains, the need to keep them updated, the need to track CVEs in those deps, and the need to fix code to use updated versions of those dependencies, along with not have the direct ability to bugfix them, all combine to produce an ongoing tax of either continual maintenance or tech debt that will eventually bite you hard.

      • zdragnar 53 minutes ago
        As a general principle, I agree with you that large companies and teams benefit from common runtimes (i.e. libraries and frameworks).

        I don't buy the notion of things breaking down over time, though. For "first-party" code that sticks to HTML and CSS standards, and Stage 4 / finished ecmascript standards, the web is an absurdly stable platform.

        It certainly used to be that we had to do all sorts of weird vendor hacks because nobody agreed on anything and supporting IE6 and 7 were nightmares, and blackberry's browser was awful, but those days are largely behind us unless you're doing some cutting-edge chrome-only early days proposed stuff or a browser specific extension or something else that isn't a polished standard.

        Even with timezone changes, you're better off using the system's information with Intl.DateTimeFormat.

    • Aperocky 1 hour ago
      I am torn because I like rust over go, and rust is better from an LLM perspective. But the dependency philosophy on rust is basically a security blackhole whereas go is much better.
      • kblissett 1 hour ago
        I have found Go is an amazing language for LLMs. What do you prefer about Rust?
        • Aperocky 1 hour ago
          A portion of context that are required is exported to the compiler. In addition rust binaries are generally smaller both in terms of size and footprint.
          • Imustaskforhelp 56 minutes ago
            I sort of agree with you but for me, I prefer golang because I believe that for most use cases, Golang fits perfectly (I run a 500mb 7$/yr vps with debian and use golang binaries)

            Cross portability and compilation and its very few dependency/stdlib approach with simplicity, I just really love golang.

            I had built[0] a cuckoo.org alternative at https://fossbox.cloud which has only one dependency of gorilla web sockets aside from stdlib

            If I were to rewrite it in rust, I couldn't say the same. Golang's stdlib is that good.

            My point is, although I understand Rust can have some advantages in other areas, the advantages of golang outweigh rust for me by a very high margin. There is also the factor that I just feel more comfortable reading golang code and picking through it than rust.

            It is my opinion that you can go a very very long way with a garbage collector than people imagine even on constrained systems. Unless absolutely necessary, thinking about GC feels like it might be a premature optimization in many instances which is worth thinking about.

            [0]: More like (vibecoded?) as this is just a single file main.go which I had prompted on gemini 3.1 pro sometime ago. It was just a prototype which works surprisingly well that I had made because I was using the cuckoo website with friends but it kept on lagging.

      • mamcx 1 hour ago
        Vendoring don't basically copy what go does?
    • v4nderstruck 1 hour ago
      well surely Opus would never introduce vulnerabilities into the code so that sounds like the solution.
    • OtherShrezzing 45 minutes ago
      I think in the relatively near future we’re going to start seeing sophisticated supply chain attacks into language model training data.

      It should be feasible to design vulnerabilities which look benign individually in training data, but when composed together in the agent plane & executed in a chain introduce an exploit.

      There’s nothing technical really stopping that from existing right now. It’s just that nobody has put the effort in yet.

    • solid_fuel 56 minutes ago
      And of course, you will go over every line of code that Opus produces with the same scrutiny we expect of open source maintainers, right? Right?

      I'm going to go publish some MIT-licensed remote access code and get that into Opus's training data.

    • gib444 1 hour ago
      Your LLM isn't a dependency?
      • stronglikedan 35 minutes ago
        It's a tool for building things. I can build those things equally well with or without it, maybe saving some time with it (arguable)), but I'm not dependent on it.
  • auraham 57 minutes ago
    This week I was wondering whether using uv for managing Python versions is a good idea.

    From their website [1]

    > Python does not publish official distributable binaries. As such, uv uses distributions from the Astral python-build-standalone project. See the Python distributions documentation for more details.

    It points to this GitHub repo https://github.com/astral-sh/python-build-standalone which mentions this other link https://gregoryszorc.com/docs/python-build-standalone/main/r...

    If I understand correctly, the source code for building Python is not fetched directly from python.org. Not so sure how secure is that.

    I have the same concern for asdf [2]. However, they use pyenv [3] which, I think, feels more official.

    Can someone clarify this? Which tool is better/more secure for installing python: uv or asdf?

    [1] https://docs.astral.sh/uv/guides/install-python/

    [2] https://github.com/asdf-community/asdf-python

    [3] https://github.com/pyenv/pyenv/tree/master/plugins/python-bu...

    • woodruffw 17 minutes ago
      > If I understand correctly, the source code for building Python is not fetched directly from python.org. Not so sure how secure is that.

      python-build-standalone fetches CPython sources directly from python.org[1]. I don't even know where else we would get them from!

      [1]: https://github.com/astral-sh/python-build-standalone/blob/a2...

    • throawayonthe 24 minutes ago
      i mean... uv is already a binary you run on your computer to manage python binaries, packages (and any binaries with those), systemwide tools etc; how much does it change whether they build the python binaries or someone else?
  • nrengan 15 minutes ago
    Most of my pip installs come from Claude Code suggesting them now and me just hitting enter. Model was trained months ago, so it has no clue what got compromised this week. We built the worst possible filter for "is this package safe right now".
    • BrenBarn 5 minutes ago
      By "the worst possible filter" do you mean "hitting enter when claude tells you to"?
  • mixedbit 21 minutes ago
    When I was doing Fast.AI Deep Learning course, I was surprised by the number of Python dependencies machine learning projects bring. Web front-end projects were always considered very third-party dependencies heavy, but to me, the machine learning ecosystem looks much more entangled. In addition, unlike web development, which is considered security critical and has over the many years accumulated a lot of wisdom and good security-related practices, machine learning development looks much more ad-hoc, with many common software engineering practices not applied.

    For example, at that time, one way to distribute machine learning models was via Python pickles. Which are executable objects with no restriction built in. Models in this format could do anything on a computer where the model was imported. Such an early 'wild-west' ecosystem can definitely make security compromises easier and resulting supply chain attacks more common.

  • mkeeter 2 hours ago
    A repository search shows 2.2K repos with the text "A Mini Shai-Hulud has Appeared", all created within the past day:

    https://github.com/search?q=A%20Mini%20Shai-Hulud%20has%20Ap...

    • rhdunn 2 hours ago
      The repository names all look like two terms/words from dune (harkonen, mentat, ornithoptor, etc.) followed by a number. This would indicate that the account (possibly GitHub auth/actions token) has been compromised and then used to create the repository.
    • spate141 2 hours ago
      what's this all about?
      • foo12bar 2 hours ago
        FTFA

        > The attack steals credentials, authentication tokens, environment variables, and cloud secrets, while also attempting to poison GitHub repositories.

        • CodeAndCuffs 2 hours ago
          That doesn't really explain why there is a bunch of GitHub repos created as well.

          If I remember correctly from Shai-Hulud 2, the attacker extricated creds by posting them in public github repos with minor easily reversible encryption. I believe it was double b64 last time.

          I'm assuming the logic there is that every security researcher and company is going to pull and scan those creds for their stuff and their clients' stuff. So the attacker is just 1 of N people downloading it. As opposed to trying to send it to their own machine directly.

          • arsome 1 hour ago
            I think it's more about convenience and bypassing filters - developers are already logged in to github, already have access to create repos and publish code, firewalls will allow it. Even fancy HIDS systems will think the git push is rather normal.

            If they have a clue, the attacker still will not download that without using a botnet tunnel or Tor at a minimum.

            Note though that these credentials aren't even encrypted using some lightweight ECC to prevent others from capturing them, they're posted in cleartext. Embarassment might be part of the point.

      • progbits 2 hours ago
        Malware uploading the credentials it managed to steal
  • brahman81 1 hour ago
    Thanks to the community for reporting the security issues with PyTorch Lightning 2.6.2 and 2.6.3 - we're actively looking into it.

    In the meantime, please use 2.6.1 until we publish 2.6.4.

    For more details: https://github.com/Lightning-AI/pytorch-lightning/security/a...

  • achandra03 2 hours ago
    Bless the Maker and His water.
  • upupupandaway 2 hours ago
    Not a security guy here. How did the dependency get compromised, exactly? Did they submit a PR into the main repo at github and it was approved by the maintainers? Or just host compromised versions in other mirrors?
    • andymcsherry 1 hour ago
      Andy from Lightning here. The malicious code was not submitted to the main repo at Github. It appears our PyPi credentials were leaked and compromised packages were published directly there for versions 2.6.2 and 2.6.3
      • lostmsu 7 minutes ago
        I vaguely remember PyPi requiring 2FA about a year and a half ago at least for logins.

        If they haven't started yet, they should require 2nd factor for publishing as well.

  • caycep 2 hours ago
    just to clarify it's not PyTorch, it's the library for this Lightning AI company?
    • mort96 1 hour ago
      Oh shit I had assumed PyTorch Lightning was affiliated with PyTorch. Not a great name for an unaffiliated third party thing.
    • lostmsu 2 hours ago
      Yes
  • ks2048 1 hour ago
    I'm curious what they do with various kinds of credentials if they get access.

    I can see trying to steal crypto, but what do they do if they get some AWS credentials? Try to run some crypto mining instances? Try to use your account for other types of crimes? Or is it mainly trying to steal data and then ask for ransoms?

    • bigfluffydonkey 1 hour ago
      It's always crypto. A client got some AWS credentials stolen and without anyone checking the account, the hacker managed to spin up big EC2 instances across many regions. The bill after a month as I recall was around 100K. Since the activity was clearly fraudulent the bill was forgiven eventually. So remember to lock down your AWS keys permissions...
  • gcapu 1 hour ago
    On GitHub, I saw this message from April 20, and I’m a bit confused.

    "deependujha hi @thebaptiste, thanks for inquiring. Release of 2.6.2 is blocked due to some internal reasons. Will notify once release is made. "

    I'd hate it if they knew of the problem that long ago and didn't warn until now. If someone has more info and can clarify I'd be thankful.

    https://github.com/Lightning-AI/pytorch-lightning/issues/216...

  • 0fflineuser 2 hours ago
    The nixpkg from unstable seems to be infected as it s 2.6.2 https://search.nixos.org/packages?channel=unstable&include_h...
    • minkowski 2 hours ago
      Nixpkgs uses the GitHub source, not the PyPI dist, for lightning; unclear to me from the advisory whether this should also be considered compromised.
      • andymcsherry 1 hour ago
        Andy from Lightning here. Thanks for pointing that out, we are updating the CVE. Only the versions from PyPi were affected. The malicious code was not checked into the GitHub repository
      • deforciant 1 hour ago
        github is fine, the package was only pushed into pypi directly
  • notatallshaw 1 hour ago
    > Running pip install lightning is all that is needed to activate

    FYI, pip added cooldowns in 26.1:

      * https://discuss.python.org/t/announcement-pip-26-1-release/107108
      * https://ichard26.github.io/blog/2026/04/whats-new-in-pip-26.1/
    
    To use:

      * CLI: pip install --uploaded-prior-to=P1D ...
      * Env Var: PIP_UPLOADED_PRIOR_TO=P1D pip install ...
      * Config: pip config set global.uploaded-prior-to P1D
  • throwa356262 2 hours ago
  • csvance 2 hours ago
    The decision to run all of my experiments in a monorepo with a single uv.lock continues to be validated. I usually only update it a few times a year. It was pinned at 2.6.1 for lightning \o/
  • fnoef 38 minutes ago
    Looks like coding is in a downward spiral towards complete chaos
  • sieve 1 hour ago
    I find this constant churn in the software world to be tiresome. I get it if there is a security update. Or you are building something new; it takes time and a series of updates to reach feature parity on 1.0. But most software is not like that. All these online registries make the problem worse. Any random tool installation pulls in 300 different dependencies.

    This is why I have been building, for my own usecases, a new language + compiler + vm that is completely source based. The compiler does not understand linking. You must vendor every single dependency you use, including the standard library, so that it makes its way into the bytecode. The register VM itself is a few thousand lines of freestanding C. Any competent programmer can audit it over a weekend.

    v1 deliberately keeps FFI (outside of a bounded set of linux syscalls) outside the current spec as libc has the habit of infecting everything it touches and I want to keep Vm0 freestanding. The last time I compiled the VM, it produced a 70KB binary and supported a loader with structural verification, the entire instruction set using a threaded interpreter, a simple Cheney+MS GC, concurrency via an Erlang-style M:N scheduler working on a single thread, and 20-odd marshaled functions.

    Most software in the world does not need anything more than this. Everyone acts as if they are building the next Google.

  • rvz 2 hours ago
    Shai-Hulud strikes again and continues to turn innocent packages into zombies.

    Think twice before looking at a package and most importantly, always pin your dependencies.

    • pixel_popping 1 hour ago
      Yeah, pin the malware :p
      • rvz 41 minutes ago
        Nope. Those on pinned versions don't get the malware.

        You would have to publish the infected package first to infect others who haven't pinned their dependencies. With a simple pip install -U, and if the dependency is not pinned, then they will get the vulnerable version.

  • 0xbadcafebee 2 hours ago
    something something Safety Requires A Building Code something thing
    • csvance 1 hour ago
      Shai-Hulud dug my 100 ft trench. Should be OSHA compliant right?
  • spate141 2 hours ago
    ah shit, here we go again
    • 12_throw_away 2 hours ago
      this is fine, we are definitely a perfectly normal industry that knows what it is doing