Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Linux support is coming to Snapdragon X2 Series(qualcomm.com)
    71comments
  2. Claude discovers a novel enzyme system with CRISPR-like repeats(anthropic.com)
    537comments
  3. Meta VR Glasses(meta.com)
    192comments
  4. VSCode's SSH Agent Is Bananas (2025)(fly.io)
    86comments
  5. ArXiv receives multiyear commitments to support it as an independent nonprofit(arxiv.org)
    10comments
  6. The "Windows XP Box" (2003)(mini-itx.com)
    9comments
  7. Virtio-nvgpu: Near-native Nvidia GPU access inside a KVM guest(github.com/nestrilabs)
    2comments
  8. Mercury 2.5 LLM hits 770 tokens per second(artificialanalysis.ai)
    26comments
  9. Fixing the Portobello Police Station Clock(pointinthecloud.com)
    89comments
  10. Feds Target AI Critics as "Foreign Agents"(kenklippenstein.com)
    3comments
  11. FLAWED's Flaws and What This Means for Industry Research(suhacker.ai)
    1comments
  12. We just shipped support for the ugliest part of HTTP: Vary(cloudflare.com)
    13comments
  13. Italian parliament votes for return to nuclear energy(apnews.com)
    387comments
  14. Show HN: An open-source manufacturing ERP/MES/QMS(carbon.ms)
    5comments
  15. LensVLM: Compressing long context as images, expanding only relevant pages(huggingface.co)
    6comments
  16. The mystery animal on an ancient god's head(signoregalilei.com)
    17comments
  17. Show HN: Combinators in Array Languages(softwarewrighter.com)
    discuss
  18. A brief history of Windows scroll bar shortcuts(devblogs.microsoft.com/oldnewthing)
    51comments
  19. Making Tailscale Faster(tailscale.com)
    38comments
  20. Australia says OpenAI agent hacked into government website(channelnewsasia.com)
    5comments
  21. Augustofaces: Pareidolia Fine Art(augusto.at)
    1comments
  22. Gemini 3.8 text-to-speech(blog.google)
    124comments
  23. Tokens too cheap to meter(jyn.dev)
    178comments
  24. Radicle: Disclosure of Vulnerability in the Network Protocol(radicle.dev)
    50comments
  25. The Curious Power of Punctuation(newyorker.com)
    4comments
  26. Swap, ZRAM, Zswap and Hibernate on NixOS(matthewbrunelle.com)
    10comments
  27. QuestDB (YC S20) Is Hiring a Sales Engineer(questdb.com)
    discuss
  28. I don't want the details(michaelheap.com)
    200comments
  29. A refined phylochronology of the second plague pandemic in Western Eurasia(pnas.org)
    discuss
  30. Z80 REPL (2018)(abagames.github.io)
    18comments

Trivy ecosystem supply chain temporarily compromised

102 pointsby 6mo agogithub.com
37 comments
6mo agoHN ↗

Are the spam comments all from compromised accounts, presumably compromised due to this hack?

I only clicked on a handful of accounts but several of them have plausibly real looking profiles.

6mo agoHN ↗

"Briefly" is doing a lot of work there. Pre-deploy scans are useless once a bad mutation is actually live. If you don't have a way to auto-revert the infrastructure state instantly, you're just watching the fire spread.

6mo agoHN ↗

Seriously. All credentials compromised that it can see. It's active in CI/CD pipelines and follow on attacks are happening.

6mo agoHN ↗

Pretty ironic that the security tool is insecure

6mo agoHN ↗

You must be new to this. The median line of code in a security tool is materially less secure than the median line of code overall in the industry.

6mo agoHN ↗

this is painfully accurate. ive worked in security for years and the tools we trust the most get the least scrutiny because everyone assumes "well its a security tool, it must be secure." the irony is these tools usually run with the highest privileges in the pipeline. trivy sits in CI with access to every secret in your environment and nobody questions it because its supposed to be the thing protecting you.

6mo agoHN ↗

Similarly one of our biggest causes of power outages when I worked with a DC was the UPSes. And the biggest causes of data loss were the hardware RAID controllers. Feels like there's a fundamental law lurking under this stuff.

6mo agoHN ↗

As the complexity of a system increases, the number of single points of failure also tends to increase. Sometimes you can make sure that several subsystems need to fail before the whole system fails. Often, the best you can do is swap one SPoF (e.g. unreliable power grid) for another, more robust SPoF (unreliable UPS).

6mo agoHN ↗

This attack seems predicated on a prior security incident (https://socket.dev/blog/unauthorized-ai-agent-execution-code...) at Trivy where they failed to successfully remediate and contain the damage. I think at this time, Trivy should’ve undertaken a full reassessment of risks and clearly isolated credentials and reduced risk systemically. This did not happen, and the second compromise occurred.

6mo agoHN ↗

They did a lot of what you describe, although perhaps not well enough.

6mo agoHN ↗

Don't forget to pin your GitHub Actions to SHAs instead of tags, that may or may not be immutable!

6mo agoHN ↗

Frustratingly, hash pinning isn’t good enough here: that makes the action immutable, but the action itself can still make mutable decisions (like pulling the “latest” version of a binary from somewhere on the internet). That’s what trivy’s official action appears to do.

(IOW You definitely should still hash-pin actions, but doing so isn’t sufficient in all circumstances.)

6mo agoHN ↗

I'm pretty sure the trivy action does not do that.

6mo agoHN ↗

FWICT, it pulls the latest version of trivy by default. If that latest tag is a mutable pointer (and it typically is), then it exhibits the problem.

6mo agoHN ↗

This attack was not mitigated by hash pinning. The setup-trivy action installs the latest version of trivy unless you specify a version.

6mo agoHN ↗

Oh, I was referring to `aquasecurity/trivy-action` that was changed with a malicious entrypoint for affected tags. Pinned commits were not affected.

6mo agoHN ↗

I don’t think “briefly compromised” is accurate. The short span between this and the previous compromise of trivy suggests that the attacker was able to persist between their two periods of activity.

6mo agoHN ↗

The irony of your vulnerability scanner being the vulnerability.

6mo agoHN ↗

Yes... Any more context? Were they leaking data?

6mo agoHN ↗

To be clear, this is a supply chain attack on everyone that uses Trivy, not a supply chain attack on Trivy. It was a direct attack on Trivy, exploiting components that Aqua had full control and responsibility for. The term “supply chain attack” has a connotation of “it’s not really my fault, it was my dependencies that got compromised”.

Of course, every entity is ultimately accountable for its own security, including assigning a level of trust to any dependencies, so it’s ultimately no excuse, but getting hit by a supply chain attack does evoke a little more sympathy (“at least I did my bit right”), and I feel like the ambiguous wording of the title is trying to access some of that sympathy.

6mo agoHN ↗

The term “supply chain attack” has a connotation of “it’s not really my fault, it was my dependencies that got compromised”.

In my experience that is definitely not true, and I've never heard anyone use it that way. Even though you are correct in who the target was.

6mo agoHN ↗

A supply chain attack is an attack on a provider of a solution that is then deployed further. The issue with a supply chain attack is that the ultimate victim brings in trusted software that was compromised upstream.

6mo agoHN ↗

yeah, we keep learning the same lesson: the tool that audits your supply chain is the single best target for compromising it

6mo agoHN ↗

credential rotation was performed but was not atomic (not all credentials were revoked simultaneously).

How do you simultaneously revoke all credentials of all your accounts spanning multiple services/machines/users?

6mo agoHN ↗

Great analysis!

The Go binary was also compromised, but there's almost no information what the compromised binary did. Did it drop a python script? Did it do direct scanning?

If trivy docker image was used, what's the scope (it does not include python).

6mo agoHN ↗

Мы позвали царского дегустатора проверить суп на яд, но яд оказался на его ложке.