238
top 15 comments
sorted by: hot top controversial new old
[-] tabular@lemmy.world 54 points 3 days ago

Why can't we have nice things instead.

[-] thejml@lemm.ee 24 points 3 days ago

🎶 Beauty and the beast

[-] Arghblarg@lemmy.ca 16 points 3 days ago

I don't know much about NPM (having avoided JS as much as possible for my entire life), but golang seems to have a good solution: 'vendoring'. One can choose to lock all external dependencies to local snapshots brought into a project, with no automatic updating, but with the option to manually update them when desired.

[-] orclev@lemmy.world 21 points 3 days ago

NPM has that as well. In fact most languages and build tools support that. It's actually rare to not have support for that these days.

[-] btaf45@lemmy.world 3 points 2 days ago

Yes. I can't imagine being foolish enough to automatically update your external dependencies when you don't need to.

[-] Arghblarg@lemmy.ca 2 points 3 days ago

Ah, good. I wonder why it isn't used more often -- this wouldn't be such a huge problem then I would hope. (Let me guess -- 'convenience', the archenemy of security.)

[-] orclev@lemmy.world 6 points 2 days ago

As LiPoly said, it doesn't really solve the problem. It's not useless, it does accomplish something, but not that. Locking dependencies isn't a security thing, it's a reproducible builds thing. You can accomplish that by just using a traditional static version of everything, but now you've got a maintenance headache as you're constantly needing to go in and update your dependency versions. You could instead use version ranging, but now you never actually know which version of a dependency any given build is going to end up using. Locking allows you to have the best of both worlds.

To understand how this works, lets take a look at a hypothetical. Lets say you have a code base, and a CICD setup. Additionally you're using a git-flow style release management where your release version is in master, your active development is in develop, and your feature work is done in feature branches. What you do is setup your version ranges to cover what the semantic versions of things say should be compatible (generally locked major version, and possibly locked minor depending on the library, but unlocked patch). In your CICD for CI builds of develop and feature branches you include a step that updates your lock file to the latest version of a library matching your version range. This insures that your develop and feature branches are always using the latest version of dependencies. For your master branch though, its CI job only builds, it never updates the lock file. This means when you merge a release to master your dependencies are effectively frozen. Every build from the master branch is guaranteed to use exactly the same versions of dependencies as when you merged it.

[-] interurbain1er@sh.itjust.works 8 points 2 days ago

That won't prevent typo squatting. This article is a out people wanting to add a dependency to "famousLib" and instead typing "famusLib".

What probably help more in Go is the lack of a central repo so you actually need to "go get github.com/whoever..." so typo squatting is a bit be a bit more complicated.

On the other hand it will be an easy fix in NPM by simply adding a check to libraries names and reject names that are too similar since it's centralized.

[-] Crackhappy@lemmy.world 2 points 3 days ago

I'm with you but I have regrettably been sucked into the node-i-verse against my will.

[-] fxdave@lemmy.ml 1 points 1 day ago

That's also why I always use dev containers

[-] jg1i@lemmy.world 1 points 2 days ago* (last edited 2 days ago)

Does anyone know how JSR and Deno would do in this type of attack?

[-] Bell@lemmy.world 3 points 3 days ago
[-] bokherif@lemmy.world 17 points 3 days ago

You’d be surprised to see how many common libraries have vulnerabilities every week.

[-] muntedcrocodile@lemm.ee 10 points 3 days ago

Why stop there lets just kill js in its entirity.

this post was submitted on 05 Nov 2024
238 points (100.0% liked)

Technology

59166 readers
2013 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related content.
  3. Be excellent to each another!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, to ask if your bot can be added please contact us.
  9. Check for duplicates before posting, duplicates may be removed

Approved Bots


founded 1 year ago
MODERATORS