~/talk

Analysis of an exploited npm package

Talkat JSNation 2019 · 2019-06-05..06-08· [security, open-source]
slides:none on file

Ownership moves to an attacker who, over 77 days and through a dependency update pulled by projects with ~1.2M weekly downloads, delivers three staged payloads. Bootstrapper decrypts using package description as the AES key and compiles stage two only when run as an npm script, stage two injects into Copay Cordova build by placing code into a dependency during the build, and stage three harvests private keys from wallets >=100 BTC and exfiltrates them. Investigation uses all-the-packages streaming, JS parsing and sandboxed VMs; discovery lag is 48 days.

AI-written summary · about

  1. 0:00Who am I
  2. 0:44What is Shape
  3. 1:31Event Stream
  4. 2:49Why
  5. 3:59Semantic Versioning
  6. 5:18Note
  7. 6:04Dependencies
  8. 6:55What did it do first
  9. 8:10How was it discovered
  10. 9:16The payload
  11. 13:01Recap
  12. 13:38All the packages
  13. 14:22Decrypting
  14. 16:05Injection
  15. 18:37Final payload
  16. 20:19The bad news
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.