kevva / caw

Construct HTTP/HTTPS agents for tunneling proxies
MIT License
44 stars 9 forks source link

Security vulnerability in `tunnel-agent` #22

Open SturmB opened 6 years ago

SturmB commented 6 years ago

You may already be aware of this issue, but I figured I'd post it here anyway, just in case I'm wrong. (I don't see it already posted.)

When running an npm audit on my Laravel project, I get several Moderate security vulnerabilities related to the tunnel-agent dependency. It seems there is a patch available, but it requires that you update caw so that it will use tunnel-agent version >=0.6.0:

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Memory Exposure                                              │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ tunnel-agent                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=0.6.0                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ laravel-mix [dev]                                            │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ laravel-mix > img-loader > imagemin-gifsicle > gifsicle >    │
│               │ bin-build > download > caw > tunnel-agent                    │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/598                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
migcarva commented 6 years ago

Is there any eta to solve this issue? Are you guys accepting PR's?

mattjbrent commented 6 years ago

@migcarva The issue has been fixed in a PR in tunnel-agent but hasn't yet been updated on the NPM registry. Once this is done I don't mind making the PR.

sumitzamadar commented 6 years ago

Facing similar issues:

Moderate Memory Exposure
Package tunnel-agent
Patched in >=0.6.0
Dependency of gulp-imagemin [dev]
Path gulp-imagemin > imagemin-gifsicle > gifsicle > bin-build > download > caw > tunnel-agent
More info https://nodesecurity.io/advisories/598
------------ -------------
Package tunnel-agent
Patched in >=0.6.0
Dependency of gulp-imagemin [dev]
Path gulp-imagemin > imagemin-gifsicle > gifsicle > bin-wrapper > download > caw > tunnel-agent
More info https://nodesecurity.io/advisories/598
------------ -------------
Package tunnel-agent
Patched in >=0.6.0
Dependency of gulp-imagemin [dev]
Path gulp-imagemin > imagemin-jpegtran > jpegtran-bin > bin-build > download > caw > tunnel-agent
More info https://nodesecurity.io/advisories/598
------------ -------------
Package tunnel-agent
Patched in >=0.6.0
Dependency of gulp-imagemin [dev]
Path gulp-imagemin > imagemin-jpegtran > jpegtran-bin > bin-wrapper > download > caw > tunnel-agent
More info https://nodesecurity.io/advisories/598
------------ -------------
Package tunnel-agent
Patched in >=0.6.0
Dependency of gulp-imagemin [dev]
Path gulp-imagemin > imagemin-optipng > optipng-bin > bin-build > download > caw > tunnel-agent
More info https://nodesecurity.io/advisories/598
------------ -------------
Package tunnel-agent
Patched in >=0.6.0
Dependency of gulp-imagemin [dev]
Path gulp-imagemin > imagemin-optipng > optipng-bin > bin-wrapper > download > caw > tunnel-agent
More info https://nodesecurity.io/advisories/598
SalomonSmeke commented 6 years ago

Last commit to tunnel-agent was in 2017, so im not sure if anyone is around to run npm publish. maybe its time to move to: https://github.com/koichik/node-tunnel, which seems to be the original package from which tunnel-agent was spawned anyways? It was updated 19 days ago as of this edit.

The interfaces look almost suspiciously similar.

Ive added a PR: https://github.com/kevva/caw/pull/23

Other devs in the same boat: Feel free to shrinkwrap my fork at that commit hash. Just let me know you did it so I never delete my fork. Obviously please test your use cases before you do.

If you feel uncomfortable doing that, feel free to fork my fork and pin that.

creage commented 6 years ago

Please, we need this fixed, nobody likes security warnings in their builds

vtereshyn commented 6 years ago

Any updates?

nylen commented 6 years ago

cc @kevva

sp90 commented 6 years ago

Guys this is still not fixed in the tunnel-agent module, so until it gets fixed there this isn't changing 👍

SalomonSmeke commented 6 years ago

@sp90 there are at the very least two ways to fix this 😄:

• Shrinkwrap this repo and use the latest commit hash for tunnel agent as it’s source.

• Change the tunnel-agent dependency for node-tunnel (which is done in a pr to this repo already).

Neither require the tunnel-agent maintainer/owner to do anything.

sp90 commented 6 years ago

@SalomonSmeke that is true 👍

vtereshyn commented 6 years ago

@SalomonSmeke can you please describe in more detail the actions you cited? Thank you in advance :)

SalomonSmeke commented 6 years ago

@vtereshyn absolutely! They're not much use to anyone except for the maintainer unfortunately but:

• Shrinkwrap this repo and use the latest commit hash for tunnel agent as it’s source.

https://docs.npmjs.com/cli/shrinkwrap allows you much tighter control over your NPM dependencies. You can even take nested dependencies and replace their versions.

https://stackoverflow.com/questions/15806152/how-do-i-override-nested-npm-dependency-versions

explains it pretty well!

• Change the tunnel-agent dependency for node-tunnel (which is done in a pr to this repo already).

all that would need to happen here is the maintainer could accept my pull request here: https://github.com/kevva/caw/pull/23

Edit:

While writing this, I realized that the maintainer would not have to shrink-wrap since the dependency isn't nested. They could instead replace their package.json to use the latest version of tunnel agent from the git repo.

gajus commented 5 years ago

Consider deprecating package in favour of https://github.com/gajus/global-agent