frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Axios compromised on NPM – Malicious versions drop remote access trojan

https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-t...
274•mtud•2h ago•74 comments

Universal Claude.md – cut Claude output tokens

https://github.com/drona23/claude-token-efficient
207•killme2008•3h ago•75 comments

Ollama is now powered by MLX on Apple Silicon in preview

https://ollama.com/blog/mlx
53•redundantly•1h ago•11 comments

Semantic – Reducing LLM "Agent Loops" by 27.78% via AST Logic Graphs

https://github.com/concensure/Semantic
29•concensure•1h ago•3 comments

Artemis II is not safe to fly

https://idlewords.com/2026/03/artemis_ii_is_not_safe_to_fly.htm
122•idlewords•2h ago•59 comments

Fedware: Government apps that spy harder than the apps they ban

https://www.sambent.com/the-white-house-app-has-huawei-spyware-and-an-ice-tip-line/
500•speckx•10h ago•158 comments

Do your own writing

https://alexhwoods.com/dont-let-ai-write-for-you/
444•karimf•16h ago•154 comments

Android Developer Verification

https://android-developers.googleblog.com/2026/03/android-developer-verification-rolling-out-to-a...
192•ingve•7h ago•174 comments

Clojure: The Documentary, official trailer [video]

https://www.youtube.com/watch?v=JJEyffSdBsk
89•fogus•4d ago•4 comments

How to turn anything into a router

https://nbailey.ca/post/router/
636•yabones•15h ago•221 comments

Turning a MacBook into a touchscreen with $1 of hardware (2018)

https://anishathalye.com/macbook-touchscreen/
253•HughParry•9h ago•114 comments

Learn Claude Code by doing, not reading

https://claude.nagdy.me/
212•taubek•8h ago•98 comments

Incident March 30th, 2026 – Accidental CDN Caching

https://blog.railway.com/p/incident-report-march-30-2026-accidental-cdn-caching
39•cebert•3h ago•13 comments

Show HN: I turned a sketch into a 3D-print pegboard for my kid with an AI agent

https://github.com/virpo/pegboard
28•virpo•5h ago•4 comments

Mr. Chatterbox is a Victorian-era ethically trained model

https://simonwillison.net/2026/Mar/30/mr-chatterbox/
14•y1n0•2h ago•1 comments

Bird brains (2023)

https://www.dhanishsemar.com/writing/bird-brains
306•DiffTheEnder•16h ago•195 comments

Agents of Chaos

https://agentsofchaos.baulab.info/report.html
90•luu•3d ago•10 comments

OpenGridWorks: The Electricity Infrasctructure, Mapped

https://www.opengridworks.com
76•jonbraun•8h ago•7 comments

Cherri – programming language that compiles to an Apple Shortuct

https://github.com/electrikmilk/cherri
282•mihau•3d ago•56 comments

Unit: A self-replicating Forth mesh agent running in a browser tab

https://davidcanhelp.github.io/unit/
20•DavidCanHelp•4d ago•1 comments

Researchers find 3,500-year-old loom that reveals textile revolution

https://web.ua.es/en/actualidad-universitaria/2026/marzo2026/23-31/ua-researchers-find-3-500-year...
95•geox•3d ago•9 comments

CodingFont: A game to help you pick a coding font

https://www.codingfont.com/
362•nvahalik•13h ago•190 comments

R3 Bio pitched “brainless clones” to serve the role of backup human bodies

https://www.technologyreview.com/2026/03/30/1134780/r3-bio-brainless-human-clones-full-body-repla...
46•joozio•18h ago•53 comments

Vulnerability research is cooked

https://sockpuppet.org/blog/2026/03/30/vulnerability-research-is-cooked/
138•pedro84•10h ago•100 comments

Seeing Like a Spreadsheet

https://davidoks.blog/p/how-the-spreadsheet-reshaped-america
93•paulpauper•2d ago•33 comments

Safeguarding cryptocurrency by disclosing quantum vulnerabilities responsibly

https://research.google/blog/safeguarding-cryptocurrency-by-disclosing-quantum-vulnerabilities-re...
13•madars•1h ago•0 comments

William Blake, Remote by the Sea

https://www.laphamsquarterly.org/roundtable/william-blake-remote-sea
72•occurrence•10h ago•4 comments

Recover Apple Keychain

https://arkoinad.com/posts/apple_keychain_recovery.html
75•speckx•11h ago•23 comments

Show HN: Coasts – Containerized Hosts for Agents

https://github.com/coast-guard/coasts
73•jsunderland323•13h ago•28 comments

Oscar Reutersvärd (2021)

https://escherinhetpaleis.nl/en/about-escher/escher-today/oscar-reutersvard
6•layer8•1d ago•0 comments
Open in hackernews

Axios compromised on NPM – Malicious versions drop remote access trojan

https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
267•mtud•2h ago

Comments

mtud•2h ago
Supply chain woes continue
kdavis01•1h ago
One more reason to use Fetch
marjipan200•1h ago
until Node is compromised
avaer•1h ago
Harder to do. Also node is not updated at the rate of npm deps.
p1mrx•1h ago
Stop trying to make Fetch happen.
nathanmills•29m ago
No, I will not stop trying to create a more secure software ecosystem.
koolba•1h ago
> Both versions were published using the compromised npm credentials of a lead axios maintainer, bypassing the project's normal GitHub Actions CI/CD pipeline.

Doesn’t npm mandate 2FA as of some time last year? How was that bypassed?

bakugo•1h ago
Apparently it's possible to create access tokens that bypass 2FA. Might've been this.

https://docs.npmjs.com/creating-and-viewing-access-tokens

stingraycharles•1h ago
Correct, for CI/CD systems that want to push releases.
masklinn•19m ago
If GitHub, gitlab, or circleci, trusted publishing is available. No access token whatsoever.
marjipan200•1h ago
Incident tracking:

https://github.com/axios/axios/issues/10604

slopinthebag•1h ago
It's reasons like this why I refuse to download Node or use anything NPM. Thankfully other languages are better anyways.
waterTanuki•1h ago
Because no other language has ever had supply chain attacks ever, in history. Nope.

https://blog.rust-lang.org/2022/05/10/malicious-crate-rustde...

https://en.wikipedia.org/wiki/Log4Shell

https://blog.pypi.org/posts/2024-12-11-ultralytics-attack-an...

https://about.gitlab.com/blog/gitlab-catches-mongodb-go-modu...

https://www.reversinglabs.com/blog/packagist-php-repo-supply...

mememememememo•43m ago
C++ ftw
skydhash•35m ago
Other languages have package managers (perl) and there are package managers in existence that are not so vulnerable to this issue. IMO, it stems from one place: Transitive dependencies and general opaqueness of the issue.

In package managers like pacman, apt, apk,... it's easier to catch such issue. They do have postinstall scripts, but it's part of the submission to the repo, not part of the project. Whatever comes from the project is hashed, and that hash is also visible as part of the submission. That makes it a bit difficult to sneak something. You don't push a change, they pull yours.

8cvor6j844qw_d6•1h ago
Should increase the delay to dependency updates.
tonymet•1h ago
Slow Russian roulette is still a losing strategy
btown•1h ago
It’s only a losing strategy if you assume everyone universally adopts the slow strategy, and no research teams spot it in the interim. For things with large splash radius, that’s unrealistic, so defenders have an information advantage.

Makes actual security patches tougher to roll out though - you need to be vigilant to bypass the slowdown when you’re actually fixing a critical flaw. But nobody said this would be easy!

esseph•58m ago
> Makes actual security patches tougher to roll out though

Yeah. 7 days in 2026 is a LONG TIME for security patches, especially for anything public facing.

Stuck between a rock (dependency compromise) and a hard place (legitimate security vulnerabilities).

Doesn't seem like a viable long-term solution.

neko_ranger•1h ago
but wouldn't it work in this case? sure if a package was compromised for months/years it wouldn't save you

but tell dependabot to delay a week, you'd sleep easy from this nonesense

jadar•1h ago
How much do you want to bet me that the credential was stolen during the previous LiteLLM incident? At what point are we going to have to stop using these package managers because it's not secure? I've got to admit, it's got me nervous to use Python or Node.js these days, but it's really a universal problem.
rybosome•1h ago
> it’s got me nervous to use Python or Node.js these days

My feelings precisely. Min package age (supported in uv and all JS package managers) is nice but I still feel extremely hesitant to upgrade my deps or start a new project at the moment.

I don’t think this is going to stabilize any time soon, so figuring out how to handle potentially compromised deps is something we will all need to think about.

Tazerenix•1h ago
NPM only gained minimum package age in February of this year, and still doesn't support package exclusions for internal packages.

https://github.com/npm/cli/pull/8965

https://github.com/npm/cli/issues/8994

Its good that that they finally got there but....

I would be avoiding npm itself on principle in the JS ecosystem. Use a package manager that has a history of actually caring about these issues in a timely manner.

arcfour•17m ago
PNPM makes you approve postinstall scripts instead of running them by default, which helps a lot. Whenever I see a prompt to run a postinstall script, unless I know the package normally has one & what it does, I go look it up before approving it.

(Of course I could still get bitten if one of the packages I trust has its postinstall script replaced.)

h4ch1•1h ago
I can't even imagine the scale of the impact with Axios being compromised, nearly every other project uses it for some reason instead of fetch (I never understood why).

Also from the report:

> Neither malicious version contains a single line of malicious code inside axios itself. Instead, both inject a fake dependency, plain-crypto-js@4.2.1, a package that is never imported anywhere in the axios source, whose only purpose is to run a postinstall script that deploys a cross-platform remote access trojan (RAT)

Good news for pnpm/bun users who have to manually approve postinstall scripts.

beart•1h ago
> nearly every other project uses it for some reason instead of fetch (I never understood why).

Fetch wasn't added to Node.js as a core package until version 18, and wasn't considered stable until version 21. Axios has been around much longer and was made part of popular frameworks and tutorials, which helps continue to propagate it's usage.

seer•1h ago
Also it has interceptors, which allow you to build easily reusable pieces of code - loggers, oauth, retriers, execution time trackers etc.

These are so much better than the interface fetch offers you, unfortunately.

reactordev•1h ago
You can do all of that in fetch really easily with the init object.

   fetch('https://api.example.com/data', {
  headers: {
    'Authorization': 'Bearer ' + accessToken
  }
})
mhio•40m ago
What does an interceptor in the RequestInit look like?
meekins•1h ago
It also supports proxies which is important to some corporate back-end scenarios
nathanmills•58m ago
fetch supports proxies
martmulx•1h ago
Does pnpm block postinstall on transitive deps too or just top-level? We have it configured at work but I've never actually tested whether it catches scripts from packages that get pulled in as sub-dependencies.
dawnerd•50m ago
From what I can tell, it blocks it everywhere.
arcfour•11m ago
It prompts for transitive dependencies, too. I have never had workerd as a direct dependency of any project of mine but I get prompted to approve its postinstall script whenever I install cloudflare's wrangler package (since workerd needs to download the appropriate Workers runtime for your platform).
eviks•1h ago
> Good news for pnpm/bun users who have to manually approve postinstall scripts.

Would they not have approved it for earlier versions? But also wouldn't the chance of addition automatic approval be high (for such a widely used project)?

arcfour•14m ago
The prompt would be to approve the new malicious package (plain-crypto-js)'s scripts, too, which could tip users off that something was fishy. If they were used to approving one for axios and the attackers had just overwrote axios's own instead of making a new package, it would probably catch people out.
h4ch1•11m ago
Can't speak for other devs but I like to read postinstall scripts or at least put them through an LLM if they're too hard to grok.

It's also a little context dependent, for example if I was using Axios and I see a prompt to run the plain-crypto-js postinstall script, alarm bells would instantly ring, which would at least make me look up the changelog to see why this is happening.

In most cases I don't even let them run unless something breaks/doesn't work as expected.

tonymet•1h ago
Has anyone tested general purpose malware detection on supply chains ? Like clamscan . I tried to test the LiteLLM hack but the affected packages had been pulled. Windows Defender AV has an inference based detector that may work when signatures have not yet been published
esseph•56m ago
> Has anyone tested general purpose malware detection on supply chains ? Like clamscan

You could use Trivy! /s

jesse_dot_id•43m ago
I second this question. I usually scan our containers with snyk and guarddog, and have wondered about guarddog in particular because it adds so much build time.
postalcoder•1h ago
PSA: npm/bun/pnpm/uv now all support setting a minimum release age for packages.

I also have `ignore-scripts=true` in my ~/.npmrc. Based on the analysis, that alone would have mitigated the vulnerability. bun and pnpm do not execute lifecycle scripts by default.

Here's how to set global configs to set min release age to 7 days:

  ~/.config/uv/uv.toml
  exclude-newer = "7 days"

  ~/.npmrc
  min-release-age=7 # days
  ignore-scripts=true
  
  ~/Library/Preferences/pnpm/rc
  minimum-release-age=10080 # minutes
  
  ~/.bunfig.toml
  [install]
  minimumReleaseAge = 604800 # seconds
(Side note, it's wild that npm, bun, and pnpm have all decided to use different time units for this configuration.)

If you're developing with LLM agents, you should also update your AGENTS.md/CLAUDE.md file with some guidance on how to handle failures stemming from this config as they will cause the agent to unproductively spin its wheels.

mhio•41m ago
and for yarn berry

    ~/.yarnrc.yml
    npmMinimalAgeGate: "3d"
XYen0n•35m ago
If everyone avoids using packages released within the last 7 days, malicious code is more likely to remain dormant for 7 days.
DimmieMan•33m ago
They’re usually picked up by scanners by then.
cozzyd•33m ago
that's why people are telling others to use 7 days but using 8 days themselves :)
otterley•32m ago
What do you base that on? Threat researchers (and their automated agents) will still keep analyzing new releases as soon as they’re published.
jmward01•31m ago
I suspect most packages will keep a mix of people at 7 days and those with no limit. That being said, adding jitter by default would be good to these features.
bakugo•27m ago
> If everyone avoids using packages released within the last 7 days

Which will never even come close to happening, unless npm decides to make it the default, which they won't.

Aurornis•19m ago
Most people won’t.

7 days gives ample time for security scanning, too.

0x500x79•1h ago
Pin your dependencies folks! Audit and don't upgrade to every brand new version.
onion2k•44m ago
But also have a regular review of your dependencies to update them when necessary, because as bad as compromised packages may be things do have vulnerabilities occasionally, and upgrading things that are a long way out-of-date can be quite hard.
himata4113•1h ago
I recommend everyone to use bwrap if you're on linux and alias all package managers / anything that has post build logic with it.

I have bwrap configured to override: npm, pip, cargo, mvn, gradle, everything you can think of and I only give it the access it needs, strip anything that is useless to it anyway, deny dbus, sockets, everything. SSH is forwarded via socket (ssh-add).

This limits the blast radius to your CWD and package manager caches and often won't even work since the malware usually expects some things to be available which are not in a permissionless sandbox.

You can think of it as running a docker container, but without the requirement of having to have an image. It is the same thing flatpak is based on.

As for server deployments, container hardening is your friend. Most supply chain attacks target build scripts so as long as you treat your CI/CD as an untrusted environment you should be good - there's quite a few resources on this so won't go into detail.

Bonus points: use the same sandbox for AI.

Stay safe out there.

vips7L•8m ago
AFAIK maven doesn’t support post install logic like npm does. You have to explicitly optin with build plugins. It doesn’t let any arbitrary dependency run code on your machine.
jmward01•1h ago
This may not be popular, but is there a place for required human actions or just timed actions to slow down things like this? For instance, maybe a GH action to deploy requires a final human click and to change that to cli has a 3 day cooling period with mandatory security emails sent out. Similarly, you switch to read only for 6 hrs after an email change. There are holes in these ideas but the basic concept is to treat security more like physical security, your goal isn't always to 100% block but instead to slow an attacker for xxx minutes to give the rest of the team time to figure out what is going on.
ArcHound•52m ago
Hi, security here. We've tried, but the amount of people you need for this vs the amount of people you have trying to review and click the big button always means that this step will be a bottleneck. Thus this step will be eliminated.

A much better approach would be to pin the versions used and do intentional updates some time after release, say a sprint after.

jmward01•44m ago
Yeah, I am looking at that on the use end. It sounds like on the python side this type of thing will be more standard (uv now and soon pip supported with version date requirements). I think time is a big missing element in many security in depth decisions. It can be time until you adopt like use no package newer than xx days or time it takes to deploy etc etc. Unfortunately the ecosystem is getting really diverse and that means ever more sophisticated attacks so we may need to do things that are annoying just to survive.
themafia•24m ago
Why not just release escrow? If I try to push a new release version another developer or developers have to agree to that release. In larger projects you would expect the release to be coordinated or scheduled anyways. Effectively we're just moving "version pinning" or "version delay" one layer up the release chain.
bluepeter•1h ago
Min release age sucks, but we’ve been here before. Email attachments used to just run wild too, then everyone added quarantine delays and file blocking and other frictions... and it eventually kinda/sorta worked. This does feel worse, though, with fewer chokepoints and execution as a natural part of the expectation.

Edit: bottom line is installs are gonna get SOOO much more complicated. You can already see the solution surface... Cooling periods, maintainer profiling, sandbox detonation, lockfile diffing, weird publish path checks. All adds up to one giant PITA for fast easy dev.

mayama•26m ago
Min release age might just postpone vulnerability to be applied few days later in non trivial cases like this. More I think about it, Odin lang approach of no package manager makes senses. But, for that approach won't work for Javascript as it needs npm package even for trivial things. Even vendoring approach like golang won't work with Javascript with the amount of churn and dependencies.
pezgrande•4m ago
You could argue that vendoring is even worse because it is harder for monitor tools to find those libraries.
0x1ceb00da•59m ago
Coded has zero nom dependencies. Neat!
dhruv3006•57m ago
174025 dependents.
rtpg•46m ago
Please can we just have a 2FA step on publishing? Do we really need a release to be entirely and fully automated?

It won't stop all attacks but definitely would stop some of these

wps•43m ago
Genuinely how are you supposed to make sure that none of the software you have on your system pulls this in?

It’s things like this that make me want to swap to Qubes permanently, simply as to not have my password manager in the same context as compiling software ever.

woeirua•42m ago
Supply chain attacks are so scary that I think most companies are going to use agents to hard fork their own versions of a lot of these core libraries instead. It wasn’t practical before. It’s definitely much more doable today.
acheong08•35m ago
There are so many scanners these days these things get caught pretty quick. I think we need either npm or someone else to have a registry that only lets through packages that pass these scanners. Can even do the virustotal thing of aggregating reports by multiple scanners. NPM publishes attestation for trusted build environments. Google has oss-rebuild.

All it takes is an `npm config set` to switch registries anyways. The hard part is having a central party that is able to convince all the various security companies to collaborate rather than having dozens of different registries each from each company.

Rather than just a hard-coded delay, I think having policies on what checks must pass first makes sense with overrides for when CVEs show up.

(WIP)

vsgherzi•33m ago
Not to beat a dead horse but I see this again and again with dependencies. Each time I get more worried that the same will happen with rust. I understand the fat std library approach won’t work but I really still want a good solution where I can trust packages to be safe and high quality.
rectang•26m ago
Hosting curated dependencies is a commercially valuable service. Eventually an economy arises where people pay vendors to vet packages.
tkel•13m ago
JS package managers (pnpm, bun) now will ignore postinstall scripts by default. Except for npm, it still runs them for legacy reasons.

You should probably set your default to not run those scripts. They are mostly unnecessary.

  ~/.npmrc :
  ignore-scripts=true
Surac•11m ago
All these supply chain attacks make me nervous about the apps I use. It would be valuable info if an app used such dependencies, but on the other hand, programmers would cut their sales if they gave you this info.