Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. The NASA/ESA Mars Sample Return mission has been canceled(science.org ↗)
    70comments
  2. Xiaomi MiMo v2.6(xiaomi.com ↗)
    12comments
  3. What Sun got wrong(dtrace.org ↗)
    226comments
  4. Attention is all you have(alicegg.tech ↗)
    127comments
  5. AI coding has made CI a bottleneck, so we reworked ours to keep up(linear.app ↗)
    19comments
  6. Why does mathmain need an encrypted loader?(safedep.io ↗)
    16comments
  7. The Advisory Group on Mathematics and Artificial Intelligence(terrytao.wordpress.com ↗)
    11comments
  8. Turn off and restrict access to Apple Intelligence features on Mac(support.apple.com ↗)
    96comments
  9. In Search of a Compositional Theory of Self-Stabilization(muratbuffalo.blogspot.com ↗)
    1comments
  10. Grok 4.7(x.ai ↗)
    328comments
  11. Advisory Group on Mathematics and Artificial Intelligence(openai.com ↗)
    38comments
  12. Transformers Explained Visually(poloclub.github.io ↗)
    discuss
  13. Apple Copland D11E4 Booting in the Browser(pagetable.com ↗)
    2comments
  14. Divide by Depth for Instant 3D(gabrieloc.com ↗)
    1comments
  15. US halts flights at busy East Coast airports, says fiber line cut(reuters.com ↗)
    67comments
  16. A restored PDP-11/83 serving this page on 211BSD Unix(pdp1173.com ↗)
    26comments
  17. This Digital Radio Gets Messages to the World’s Remotest Locations(ieee.org ↗)
    31comments
  18. Frontier AI on Your Own Hardware(timdettmers.com ↗)
    2comments
  19. Kev: Tiny Jev-like family of decision models built on top of Qwen3.5(github.com/jaredpalmer ↗)
    163comments
  20. Python Workers are now generally available(cloudflare.com ↗)
    18comments
  21. Avoiding the babbling-idiot failure in a time-triggered communication system(ieee.org ↗)
    5comments
  22. How do Traffic Signals Work (2019)(practical.engineering ↗)
    26comments
  23. Fable 5 – Median thinking declined in August(twitter.com/lon ↗)
    184comments
  24. Grim Fandango Puzzle Document (1996) [pdf](jmac.org ↗)
    83comments
  25. Show HN: A website that tracks US food prices every day(kadoa.com ↗)
    discuss
  26. M5 Ultra Mac Studio Review(macstories.net ↗)
    188comments
  27. RoboHarm: Do Frontier Robot Policies Refuse Unsafe Instructions?(robocurve.org ↗)
    discuss
  28. Noodle Gallery- Open-source, self-hosted alternative to Google Photos and Immich(digitalescapetools.com ↗)
    28comments
  29. macOS 27: Workaround to avoid downloading AI models and save storage(reddit.com ↗)
    77comments
  30. Heretic removes restrictions from language models(heretic-project.org ↗)
    87comments

Why does mathmain need an encrypted loader?

71 pointsby 2h agosafedep.io
16 comments
1h agoHN ↗

Why in the world would that specific 3x3 matrix be a trigger for an attack? Are they trying to find someone doing some particular kind of numerical analysis?

1h agoHN ↗

Presumably it's so it can be used as a subdependency for setting up an attack in a popular, legitimate package, e.g. via a pull request. The code in the legitimate package would not arouse suspicion at all.

29m agoHN ↗

Now I'm curious what the target was. Are there any notable classes of programs/problems where you'd do an LU decomposition of this specific matrix?

48m agoHN ↗

I would assume it’s actually so they can allow it to spread before it gets activated. Then do something that affects the entire chain of package dependencies

30m agoHN ↗

This matrix is not a condition, it’s a key. JSON.stringify with it’s data goes to the scrypt as a password and that creates an AES-256-GCM key. There is no if, every other input won’t decrypt. That’s why no one will get payload from the package without knowing the exact input.

20m agoHN ↗

This package contained malicious code and was removed from the registry by the npm security team.

1h agoHN ↗

Fascinating how intricate the target selection is on this

1h agoHN ↗

We found a remote access implant hidden inside [email protected], an npm package that copies the popular mathjs library.

The NPM package not named in the clickbait-y post title is “mathmain@1.0.0”, for those who run into this particular site obstacle; the later packages also named are “mathsbase” and “math-universe”. (EDIT: I see the submission title has been updated, so that’s my complaint addressed, thanks mods!)

Safedep, if you’re reading this, perhaps you should reconsider having that site feature applied to your post — or if it’s something you enabled in, say, Cloudflare, perhaps file a support ticket noting that their email protection is hiding package version strings.

46m agoHN ↗

Probably Cloudflare. For me it shows the package name rather than a redaction. But from memory, Cloudflare email protection redacts it that way in the HTML and then adds a little JS to put it back in which might also do some kind of check to see if it thinks you are a real user before unredacting it.

59m agoHN ↗

My strategy of not using dependencies at all seems to be getting stronger everyday.

Also no LLM generated skipping this hypetrain completely. Just hand written code I can personally vouch for. Code in exchange for cash, this is professional business, Boss.

Btw, I'm available for hire, preferably by Pre Market Fit or pre-MVP startups, email in profile.

36m agoHN ↗

Let us know in 2838 when you finish your first program, would love to check it out!

14m agoHN ↗

So, where do you draw the line? Do you accept having an OS? Because that is a huge dependency. So I assume you run directly on BIOS or UEFI? But even those are fairly sizable on modern systems.

22m agoHN ↗

Had I found sthg like this, I'd be proud to tell everyone and certainly enjoy doing the writeup. But this smells like it was ai-written...

18m agoHN ↗

Yeah lots of weird emphasis on things a human wouldn't care about. And emphasis on what it isn't, rather than what it is. It's not Y, it's X. And there are two files!!!

15m agoHN ↗

A lot of this seems to be a reminder that the CommonJS module format should just be left to die already. Not that you can't pull similar tricks with `await import()` in ESM, but you can't easily grep an entire dependency for dynamic `require()` half as easily as you can can `grep import\s*\(` for dynamic import and analysis tools for static `import` keyword are easy to use/build rather than no such thing for CommonJS.

Someone thought I was joking when I said I always check JSR before NPM now, because I trust ESM so much more than CommonJS.