SlideShare a Scribd company logo
Jarrod Overson - BSidesPDX
Why are imitation attacks such a problem?
Analysis of an OSS supply chain attack
How did millions of developers download malicious
code with no one noticing?
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
npm install [anything]
Jarrod Overson - BSidesPDX
The threat is real
And it's coming from inside
the house.
Jarrod Overson - BSidesPDX
How it happened
What it did
Where it leaves us
1
2
3
Agenda
Jarrod Overson - BSidesPDX
Who am I?
• Director at Shape Security & Google Dev Expert.
• Write/talk/record about JS reverse engineering &
breaking web apps.
• Old-school video game hacker.
• @jsoverson most everywhere
This guy
Jarrod Overson - BSidesPDX
?
Jarrod Overson - BSidesPDX
Ever heard of YKK?
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
You used Shape this week.
We're the reason you log in a lot less and see fewer
CAPTCHAs.
Jarrod Overson - BSidesPDX
How it happened
What it did
Where it leaves us
1
2
3
Agenda
Jarrod Overson - BSidesPDX
JS
It started with a package, event-stream
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
JS
event-stream was maintained by prolific
developer Dominic Tarr
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
JS
Domenic gave ownership to right9ctrl in
September of 2018
*
Jarrod Overson - BSidesPDX
Q: Why?
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
JS
right9ctrl gained trust by committing several
innocent changes.
...b550f5: upgrade dependencies
...37c105: add map and split examples
...477832: remove trailing in split example
...2c2095: better pretty.js example
...a644c5: update readme
event-stream
Jarrod Overson - BSidesPDX
JS
On Sept 9 2018 right9ctrl added a new
dependency and released version 3.3.6
JS
v3.3.6
JS v0.1.0
flatmap-stream
event-stream
Jarrod Overson - BSidesPDX
About that caret...
Jarrod Overson - BSidesPDX
Semantic Versioning (semver)
Major.Minor.Patch e.g. 3.4.9
Breaking changes
New features
Bug fixes
Increasing risk
Jarrod Overson - BSidesPDX
Semver pattern matching
Symbol Example Matches
^ ^0.1.0 0.*.*
~ ~0.1.0 0.1.*
Jarrod Overson - BSidesPDX
JS
right9ctrl then removed flatmap-stream and updated
event-stream to v4.0.0.
v4.0.0
event-stream
Jarrod Overson - BSidesPDX
Note:
Nothing malicious has emerged thus far.
Jarrod Overson - BSidesPDX
Total time between first commit and v4.0.0?
12 days
Jarrod Overson - BSidesPDX
JS
On October 5th 2018 (T+31)
flatmap-stream@0.1.1 was published.
JS
v3.3.6
v0.1.1
flatmap-stream
event-stream
JS v0.1.0
Jarrod Overson - BSidesPDX
JS
event-stream@3.3.6 installed fresh now pulls in
flatmap-stream@0.1.1 because of the ^
JS
v3.3.6
v0.1.1
flatmap-stream
event-stream
Jarrod Overson - BSidesPDX
event-stream@3.3.5 was stable for 2+ years.
JSJS v3.3.6
event-stream
Jarrod Overson - BSidesPDX
A LOT depended on event-stream^3.3.5 and would
get updated to 3.3.6 automatically.
JS
JS
JS
JS
JS
JS
JS
JS
JS
Jarrod Overson - BSidesPDX
Time between flatmap-stream@0.1.1 and exposure:
48 days
Time between malicious control and discovery:
77 days
Jarrod Overson - BSidesPDX
How it happened
What it did
Where it leaves us
1
2
3
Agenda
Jarrod Overson - BSidesPDX
First, how was it discovered?
Payload A used a method deprecated in node v11.0.0
Node v11.0.0 was released 18 days into the exploit.
Unrelated projects started getting deprecation warnings.
Finally someone started putting it together.
Jarrod Overson - BSidesPDX
So how was it discovered?
Luck.
flatmap-stream v0.1.0
flatmap-stream v0.1.1
Jarrod Overson - BSidesPDX
Payload A
The bootstrap.
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Jarrod Overson - BSidesPDX
Recap
• The script decrypts and compiles a new module.
• The key comes from a package description somewhere.
• The encrypted JS comes from testData[0].
• The compiled module exports testData[1].
Jarrod Overson - BSidesPDX
What does this mean?
The script only serves its purpose if the code runs
from an npm script in a directory that has a
package.json with a "description" field containing a
specific string that can act as the key.
Jarrod Overson - BSidesPDX
What this means for us
We need to start trolling through package.json files.
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
😂
Jarrod Overson - BSidesPDX
Strategy
• Iterate through every package.
• Decrypt testData[0].
• Run the decrypted data through a JS Parser.
• If successful then we have a winner.
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
Copay, the Secure Bitcoin Wallet.
Jarrod Overson - BSidesPDX
Payload B
The injector.
Payload B
Payload B
Jarrod Overson - BSidesPDX
npm scripts redux
npm run-script script-name
[0] [1] [2]argv:
Payload B
copay's package.json scripts
Payload B
Jarrod Overson - BSidesPDX
Recap
• Payload B noops unless run in copay's build stage.
• Decrypts payload C just like payload B.
• Injects payload C into a file used in copay's mobile app.
• Payload C is then executed in the mobile app while on a
user's mobile device.
Jarrod Overson - BSidesPDX
Payload C
The final payload.
Payload C
Jarrod Overson - BSidesPDX
Payload C in a nutshell
• Harvested private keys
• Targeted wallets with over 100 BTC or 1000 BCH
• Communicated with third party server copayapi.host
Jarrod Overson - BSidesPDX
How it happened
What it did
Where it leaves us
1
2
3
Agenda
Jarrod Overson - BSidesPDX
This is NOT node/npm specific
Any public repository of code is susceptible.
Jarrod Overson - BSidesPDX
The Good News.
Once the issue was brought to light the community
• responded rapidly
• investigated quickly
• mitigated the issue immediately
• and produced tools to help others right away.
Jarrod Overson - BSidesPDX
The Bad News.
It has happened multiple times since.
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?
The dependency problem is not ideal.
Jarrod Overson - BSidesPDX
This could have been much worse.
event-stream was depended on things like the
- azure-cli
- dozens of build tools and plugins
- Microsoft's monaco editor (the editor for VSCode)
Jarrod Overson - BSidesPDX
This will likely get much worse.
Properly addressing this problem requires rethinking
node, dependencies, and package management.
Hard things with lots of compatibility implications.
Jarrod Overson - BSidesPDX
Jarrod Overson - BSidesPDX
What can you do?
• Audit your dependencies.
• Lock your dependencies.
• Check in your dependencies.
• Think twice before adding dependencies.
Jarrod Overson - BSidesPDX
When in doubt, don't add it.
• Dependencies are risks.
• Risks are gambles.
• You gamble when cost is low and value is high.
Jarrod Overson - BSidesPDX
Why are imitation attacks such a problem?Thank You!
@jsoverson on
bit.ly/jsoverson-youtube

More Related Content

What's hot (10)

PPTX
BlueHat v17 || Scaling Incident Response - 5 Keys to Successful Defense at S...
BlueHat Security Conference
 
PPTX
Oow2013 ef final_4_3
Euegene Fedorenko
 
PDF
Станислав Семенов, Data Scientist, Kaggle top-3, «О соревновании Telstra Kagg...
Mail.ru Group
 
PPTX
Ad, mimikatz, ata and (awe)some evasion techniques
Guglielmo Scaiola
 
PPTX
BlueHat v17 || Down the Open Source Software Rabbit Hole
BlueHat Security Conference
 
PPTX
My Bro The ELK
Tripwire
 
PDF
CyberSEED: Virtual Machine Introspection to Detect and Protect
Tamas K Lengyel
 
PDF
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
CODE BLUE
 
PDF
232 md5-considered-harmful-slides
Dan Kaminsky
 
PPTX
BlueHat v17 || Wannacrypt + Smbv1.0 Vulnerability = One of the Most Damaging ...
BlueHat Security Conference
 
BlueHat v17 || Scaling Incident Response - 5 Keys to Successful Defense at S...
BlueHat Security Conference
 
Oow2013 ef final_4_3
Euegene Fedorenko
 
Станислав Семенов, Data Scientist, Kaggle top-3, «О соревновании Telstra Kagg...
Mail.ru Group
 
Ad, mimikatz, ata and (awe)some evasion techniques
Guglielmo Scaiola
 
BlueHat v17 || Down the Open Source Software Rabbit Hole
BlueHat Security Conference
 
My Bro The ELK
Tripwire
 
CyberSEED: Virtual Machine Introspection to Detect and Protect
Tamas K Lengyel
 
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
CODE BLUE
 
232 md5-considered-harmful-slides
Dan Kaminsky
 
BlueHat v17 || Wannacrypt + Smbv1.0 Vulnerability = One of the Most Damaging ...
BlueHat Security Conference
 

Similar to Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing? (20)

PDF
JSconf JP - Analysis of an exploited npm package. Event-stream's role in a su...
Jarrod Overson
 
PDF
A Developer's Guide to Kubernetes Security
Gene Gotimer
 
PDF
MongoDB: Optimising for Performance, Scale & Analytics
Server Density
 
PDF
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
Michele Orselli
 
PDF
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
Alessandro Cinelli (cirpo)
 
PPTX
3V0-622 objective-3.1-logical-physical with Joe Clarke @elgwhoppo
Joe Clarke
 
PPTX
IT Days - Parse huge JSON files in a streaming way.pptx
Andrei Negruti
 
PDF
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
MongoDB
 
PDF
DEF CON 27 - D4KRM4TTER MIKE SPICER - I know what you did last summer
Felipe Prado
 
PPTX
MongoDB Schema Design: Practical Applications and Implications
MongoDB
 
PDF
Fosdem10
wremes
 
KEY
Building a Cross Channel Content Delivery Platform with MongoDB
MongoDB
 
PPTX
Vulnerabilities of machine learning infrastructure
Sergey Gordeychik
 
PPTX
Defcon 18 "Hacking Electronic Door Access Controllers"
shawn_merdinger
 
PDF
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
Hafez Kamal
 
PDF
Codemotion 2015 Infinispan Tech lab
Ugo Landini
 
PDF
How to write clean & testable code without losing your mind
Andreas Czakaj
 
PDF
Belfast JUG, SIMD (Vectorial) Operations
Hudson Mendes
 
PPTX
Securing your Cloud Environment v2
ShapeBlue
 
PDF
IzPack - PoitouJUG
julien.ponge
 
JSconf JP - Analysis of an exploited npm package. Event-stream's role in a su...
Jarrod Overson
 
A Developer's Guide to Kubernetes Security
Gene Gotimer
 
MongoDB: Optimising for Performance, Scale & Analytics
Server Density
 
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
Michele Orselli
 
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
Alessandro Cinelli (cirpo)
 
3V0-622 objective-3.1-logical-physical with Joe Clarke @elgwhoppo
Joe Clarke
 
IT Days - Parse huge JSON files in a streaming way.pptx
Andrei Negruti
 
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
MongoDB
 
DEF CON 27 - D4KRM4TTER MIKE SPICER - I know what you did last summer
Felipe Prado
 
MongoDB Schema Design: Practical Applications and Implications
MongoDB
 
Fosdem10
wremes
 
Building a Cross Channel Content Delivery Platform with MongoDB
MongoDB
 
Vulnerabilities of machine learning infrastructure
Sergey Gordeychik
 
Defcon 18 "Hacking Electronic Door Access Controllers"
shawn_merdinger
 
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
Hafez Kamal
 
Codemotion 2015 Infinispan Tech lab
Ugo Landini
 
How to write clean & testable code without losing your mind
Andreas Czakaj
 
Belfast JUG, SIMD (Vectorial) Operations
Hudson Mendes
 
Securing your Cloud Environment v2
ShapeBlue
 
IzPack - PoitouJUG
julien.ponge
 
Ad

More from Jarrod Overson (20)

PDF
Practical WebAssembly with Apex, wasmRS, and nanobus
Jarrod Overson
 
PDF
AppSecCali - How Credential Stuffing is Evolving
Jarrod Overson
 
PDF
How Credential Stuffing is Evolving - PasswordsCon 2019
Jarrod Overson
 
PDF
Deepfakes - How they work and what it means for the future
Jarrod Overson
 
PDF
The State of Credential Stuffing and the Future of Account Takeovers.
Jarrod Overson
 
PDF
How to Reverse Engineer Web Applications
Jarrod Overson
 
PDF
The life of breached data and the attack lifecycle
Jarrod Overson
 
PDF
The Life of Breached Data & The Dark Side of Security
Jarrod Overson
 
PDF
Shape Security @ WaffleJS October 16
Jarrod Overson
 
PDF
Graphics Programming for Web Developers
Jarrod Overson
 
PDF
The Dark Side of Security
Jarrod Overson
 
PDF
JavaScript and the AST
Jarrod Overson
 
PDF
ES2015 workflows
Jarrod Overson
 
PDF
Maintainability SFJS Sept 4 2014
Jarrod Overson
 
PDF
Idiot proofing your code
Jarrod Overson
 
PDF
Riot on the web - Kenote @ QCon Sao Paulo 2014
Jarrod Overson
 
PDF
Managing JavaScript Complexity in Teams - Fluent
Jarrod Overson
 
PDF
Real World Web components
Jarrod Overson
 
PDF
Managing JavaScript Complexity
Jarrod Overson
 
PDF
Continuous Delivery for the Web Platform
Jarrod Overson
 
Practical WebAssembly with Apex, wasmRS, and nanobus
Jarrod Overson
 
AppSecCali - How Credential Stuffing is Evolving
Jarrod Overson
 
How Credential Stuffing is Evolving - PasswordsCon 2019
Jarrod Overson
 
Deepfakes - How they work and what it means for the future
Jarrod Overson
 
The State of Credential Stuffing and the Future of Account Takeovers.
Jarrod Overson
 
How to Reverse Engineer Web Applications
Jarrod Overson
 
The life of breached data and the attack lifecycle
Jarrod Overson
 
The Life of Breached Data & The Dark Side of Security
Jarrod Overson
 
Shape Security @ WaffleJS October 16
Jarrod Overson
 
Graphics Programming for Web Developers
Jarrod Overson
 
The Dark Side of Security
Jarrod Overson
 
JavaScript and the AST
Jarrod Overson
 
ES2015 workflows
Jarrod Overson
 
Maintainability SFJS Sept 4 2014
Jarrod Overson
 
Idiot proofing your code
Jarrod Overson
 
Riot on the web - Kenote @ QCon Sao Paulo 2014
Jarrod Overson
 
Managing JavaScript Complexity in Teams - Fluent
Jarrod Overson
 
Real World Web components
Jarrod Overson
 
Managing JavaScript Complexity
Jarrod Overson
 
Continuous Delivery for the Web Platform
Jarrod Overson
 
Ad

Recently uploaded (20)

PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PPTX
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
The Future of Artificial Intelligence (AI)
Mukul
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 

Analysis of an OSS supply chain attack - How did 8 millions developers download an exploit with no one noticing?