GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-08-01) - page 1 of 10
 
___________________________________________________________________
Malicious crossenv package on npm
196 points by phpnode
https://twitter.com/o_cee/status/892306836199800836
___________________________________________________________________
 
danjoc - 50 minutes ago
Friendly reminder, every time this
happens...https://github.com/npm/npm/pull/4016"However, this is
just a piece of an overall solution, and it brings with it a lot of
the baggage that comes along whenever GnuPG or PGP get involved.
Without a web of trust (sigh), a PKI (ugh), or some other mechanism
to tie identities to trust metrics, this is essentially a
complicated, very expensive, and fragile version of the shasum
check npm already has."I really like how the NPM simultaneously
insults two legends in crypto and does _nothing_ to protect the
node ecosystem, deferring to "better solutions" that don't exist
and will never exist.They've done literally
nothing.https://github.com/node-forward/discussions/issues/29Last
discussion was > 1 year ago. They simply do not care. Security
isn't even an afterthought.
 
  stu_k - 20 minutes ago
  I'm confused, how would the above help with a typosquatting
  package? The issue here is that `crossenv` is malicious, and
  `cross-env` isn't. The signatures would all be ok in both cases.
 
    KirinDave - 16 minutes ago
    It wouldn't. People look for any opportunity they can muster to
    browbeat the node community. Probably because they're jealous
    of its outsized success.
 
  iamakulov - 18 minutes ago
  npm is working on a solution for misspellings through:
  https://twitter.com/maybekatz/status/892501201551368192
 
  KirinDave - 17 minutes ago
  > I really like how the NPM simultaneously insults two legends in
  crypto and does _nothing_ to protect the node ecosystem,
  deferring to "better solutions" that don't exist and will never
  exist.But they're right. What exactly would PKI do here? Someone
  is generating confusion.You could argue that maybe a PKI solution
  could be used to inform the UI such that users are less likely to
  make mistakes, but browbeating NPM over this is silly. Maven has
  this problem (people really concerned built their own tools:
  https://github.com/whispersystems/gradle-witness), choclatey has
  this problem, pip has this problem, everyone has this problem.The
  big difference is that the NPM ecosystem is just an order of
  magnitude bigger than most others, and its model of many small
  packages can hide many more key packages in the noise.
 
    danjoc - 12 minutes ago
    >Maven has this problemWhat malicious packages have been found
    on Maven central?
 
      KirinDave - 9 minutes ago
      Why don't you google or follow the link I already gave?
 
        danjoc - 6 minutes ago
        Exactly what I thought. You can't name one. Coincidentally,
        Maven central requires GPG signatures.
 
eropple - 3 hours ago
This is important. It looks like the organization is submerging;
they've deleted their NPM account and the package and emptied their
GitHub repo.This should be signal boosted as hard as it can be
managed, because this is rough stuff.
 
  codefined - 2 hours ago
  What can be done to help sort problems like this?
 
    kimburgess - 1 hours ago
    Integrating something like https://nodesecurity.io/opensource
    or https://snyk.io into you're CI process will help flag issues
    you may want to know about if they are disclosed /
    discovered.And yes, I get the irony of adding another
    dependency to help with the security mess caused by the node
    ecosystem's bent towards external untrusted / unverified
    dependencies.
 
    eropple - 1 hours ago
    To be honest? I don't know. Bugs (or malicious end-runs) are
    only shallow with many eyes, and none of this has eyes on it.
 
    tedunangst - 1 hours ago
    Gardens. With gardeners. And walls.
 
infinity0 - 1 hours ago
nodejs lack-of-QA comes back to bite them in the ass yet again.
wasn't the first time nor will it be the last time, ditch this
bullshit.
 
  eropple - 1 hours ago
  Explain to me how "QA" prevents a malicious package from
  transitively including another one and taking advantage of typo
  squatting.
 
    tedunangst - 1 hours ago
    QA prevents someone from adding a typo to the repository.
 
      eropple - 1 hours ago
      Your QA teams are looking up every entry in your package.json
      files, your Maven poms, your Gemfiles, your requirements.txt
      files? They're making sure that something that builds
      completely cleanly and shows no external errors doesn't have
      a typo in it?Of course they're not.
 
        tedunangst - 47 minutes ago
        My QA team, upon a request to add a package called
        "crossenv" to the npm repo, would say "this is suspiciously
        similar to the existing cross-env package. Request denied."
        Alas, npm has no such team.
 
        infinity0 - 1 hours ago
        That's a pretty big straw man you wrote there, to imply
        that getting rid of not-all errors is no better than not
        getting rid of any errors at all.In fact, GNU/Linux distros
        with even minimal QA will disallow network access during
        builds. Also we do in fact manually audit quite a lot of
        stuff to make sure this sort of bullshit doesn't get
        uploaded to the archives.
 
    wongarsu - 1 hours ago
    Last time I wrote a Firefox extension, the code was manually
    reviewed before being officially published on
    addons.mozilla.org (it's there as experimental release with big
    warning bars while it sits in queue for code review).To publish
    an Android app, I need to verify my name by paying Google some
    money ($25?) and my code has to pass some automated checks.It
    seems like anyone can publish just about anything anonymously
    on npm. That model has upsides, but it's not exactly state-of-
    the art in terms of QA (though you could argue whether QA is
    the right term here).
 
emeraldd - 1 hours ago
For reference:
https://twitter.com/o_cee/status/892306836199800836since the user
appears to have been nuked...
 
  shawnee_ - 1 hours ago
  Better link:  https://pbs.twimg.com/media/DGK-
  eZ3WsAAvqN0.jpg:large
 
kevinsimper - 2 hours ago
This is serious stuff and we will definitely see more of it in the
future! As there are more and more node.js developers, it will be
more profitable to run a scam like this and you only need to hijack
one page that has a lot of dependencies, one package that is for
example used by `express` to get access to a lot of users.The only
thing you can do is be careful and listen for projects like node
security.
 
  romanovcode - 1 hours ago
  Or use some other technology.
 
    eropple - 1 hours ago
    There are remarkably few dependency management systems not
    vulnerable to some variant of this attack.
 
wolfgang42 - 1 hours ago
This attack has been previously described in the paper
"Typosquatting package managers":Paper:
http://incolumitas.com/data/thesis.pdfBlog post:
http://incolumitas.com/2016/06/08/typosquatting-package-
mana...Discussion: https://news.ycombinator.com/item?id=11862217
https://www.reddit.com/r/netsec/comments/4n4w2h/The paper also
discusses possible mitigation measures, including prohibiting
registering new packages within a certain Levenshtein distance of
existing packages and using additional namespacing.
 
  hueving - 25 minutes ago
  Not really different from any other typo-squatting (e.g.
  domains).
 
iamakulov - 40 minutes ago
For everyone, here?s a one-liner to check your dependency tree:
npm ls | grep -E "babelcli|crossenv|cross-env.js|d3.js|fabric-
js|ffmepg|gruntcli|http-proxy.js|jquery.js|mariadb|mongose|mssql.js
|mssql-node|mysqljs|nodecaffe|nodefabric|node-fabric|nodeffmpeg
|nodemailer-js|nodemailer.js|nodemssql|node-opencv|node-opensl
|node-openssl|noderequest|nodesass|nodesqlite|node-sqlite|node-tkin
ter|opencv.js|openssl.js|proxy.js|shadowsock|smb|sqlite.js|sqliter|
sqlserver|tkinter"  (More details: https://iamakulov.com/notes/npm-
malicious-packages/)
 
mjs - 37 minutes ago
Google cache suggests no downloads, fortunately:https://webcache.go
ogleusercontent.com/search?q=cache:zAzfBZ...
 
  iamakulov - 21 minutes ago
  It?s of 19th July :?(
 
[deleted]
 
smaili - 30 minutes ago
Looks like it's being logged to npm.hacktask.net/logCouldn't the
developer have at least chosen a less suspicious domain name? :)
 
phpnode - 59 minutes ago
NPM themselves recently launched a new package called npx [0] which
will download and execute packages directly from the registry if
you don't already have them installed. So if you make a simple typo
like this:    npx crossenv foo  instead of    npx cross-env foo
you'd have got the malicious version.[0]
https://www.npmjs.com/package/npx
 
  weetbix - 52 minutes ago
  crossenv was already running the script on post install, which
  means it was run on "npm i crossenv" anyway.
 
    phpnode - 43 minutes ago
    point is that npm are encouraging you to use npx, which is
    bundled with npm 5.2+ as a general tool for executing adhoc
    commands from the terminal. It just massively increases the
    chance of typos.
 
devwastaken - 1 hours ago
This is something I've always been concerned about with the
node/NPM environment. Any project, even the smallest ones, have
hundreds of dependencies. All it takes is some small lines of rogue
code, and your entire project is vulnerable. Especially in JS,
where you can do network requests and various critical actions all
in one line of code.
 
  colejohnson66 - 1 hours ago
  The `left-pad` debacle a year ago[0] should've served as a wake
  up call to people writing projects with hundreds of
  dependencies.[0]: http://left-pad.io
 
    doingmyting - 1 hours ago
    It's next to impossible for the average team to avoid hundreds
    of dependencies as their project grows though. You could write
    your own everything, but then what's the benefit of the node
    ecosystem?Edit: spelling
 
      jjnoakes - 51 minutes ago
      I wish the node ecosystem would learn from more mature ones.I
      would like to see a curated set of popular libraries that are
      stabilized and blessed, and a core group that handles
      security updates and upgrading packages in the blessed set.
 
        TAForObvReasons - 15 minutes ago
        There are attempts like https://nodesource.com/products
        /certified-modules but do you trust the ratings if they
        don't have control over those modules?
 
      RandomInteger4 - 52 minutes ago
      How many of those dependancies are trivial though? It's one
      thing to rewrite express, but something different to rewrite
      a package that just contains a function that capitalizes the
      first letter of a string or something similarly contrived,
      yet plausibly already a package.
 
      [deleted]
 
ben174 - 1 hours ago
Looks like all the packages by this guy post to hacktask.net - a
Chinese site.Google autocomplete also suggests
xss.hacktask.netLooks like this guy is up to all kinds of no good.
 
  packetized - 1 hours ago
  ...hosted by Cloudflare.
 
dboy1612 - 52 minutes ago
Does anyone know if "hacktask.net" was used in all the rogue
packages? Got a grep running through caches/projects.
 
albertgoeswoof - 22 minutes ago
I wonder why they didn't obfuscate the code a bit more, they could
have even positioned it as a reference package that helps resolve
typos.Would be interesting to know how many systems have
potentially been hit by this, and if any leaked production
credentials. I think it's unlikely to yield a lot of useful results
due to then drag net nature of the project. A targeted attack might
make more sense (e.g. On an open source library, targeting specific
developers)