SlideShare a Scribd company logo
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Security in Node.js Security 
Liran TalLiran Tal
Developer Advocate @ SnykDeveloper Advocate @ Snyk
@liran_tal github.com/lirantal
May 2019May 2019
@liran_tal
github.com/lirantal
Liran TalLiran Tal
Developer AdvocateDeveloper Advocate
0101 Black Clouds in Node.js SecurityBlack Clouds in Node.js Security
02 02 ||
||
03 03 ||
Common Security VulnerabilitiesCommon Security Vulnerabilities
Silver Linings in Node.js SecuritySilver Linings in Node.js Security
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Securityin Node.js Security
Node.js is JavaScriptNode.js is JavaScript
JavaScript is EverywhereJavaScript is Everywhere
FrontendFrontend
BackendBackend
IoTIoT
DatabasesDatabases
ChatbotsChatbots
MachineMachine
LearningLearning
WebAssemblyWebAssembly
RoboticsRobotics
src: https://snyk.io/opensourcesecurity-2019
Invites big risksInvites big risks
The Biggest RepositoryThe Biggest Repository
Invites big risksInvites big risks
The Biggest RepositoryThe Biggest Repository
Lucrative attack impactLucrative attack impact
Invites big risksInvites big risks
The Biggest RepositoryThe Biggest Repository
Lucrative attack impactLucrative attack impact
Open and free-to-publish ecosystemOpen and free-to-publish ecosystem
Invites big risksInvites big risks
The Biggest RepositoryThe Biggest Repository
Lucrative attack impactLucrative attack impact
Open and free-to-publish ecosystemOpen and free-to-publish ecosystem
Difficult to counter-measureDifficult to counter-measure
Black Clouds inBlack Clouds in
Node.js SecurityNode.js Security
Malicious ModulesMalicious Modules
Black Clouds inBlack Clouds in
Node.js SecurityNode.js Security
Malicious ModulesMalicious Modules
Typosquatting AttacksTyposquatting Attacks
Compromised AccountsCompromised Accounts
Social EngineeringSocial Engineering
Malicious ModulesMalicious Modules
timetime
Jan 2015
rimrafallrimrafall
rimrafallrimrafall
rimrafallrimrafall
Malicious ModulesMalicious Modules
timetime
Jan 2015
rimrafallrimrafall
Jan 2017
crossenvcrossenv
cross-envcross-env
$ npm install crossenv --save
crossenv    !=   cross-envcrossenv    !=   cross-env
$ npm install crossenv --save
coffescript     coffescript      oror      coffe-script      coffe-script 
coffescript     coffescript      oror      coffe-script      coffe-script 
coffeescriptcoffeescript
src: https://snyk.io/vuln
post-install script ✅post-install script ✅
post-install script ✅post-install script ✅
call-home base64 payload ✅call-home base64 payload ✅
How did we find out about this maliciousHow did we find out about this malicious
crossenv package?crossenv package?
post-install script ✅post-install script ✅
call-home base64 payload ✅call-home base64 payload ✅
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
Malicious ModulesMalicious Modules
timetime
Jan 2015
rimrafallrimrafall
Jan 2017
crossenvcrossenv
May 2018
getcookiesgetcookies
Malicious ModulesMalicious Modules
timetime
Jan 2015
rimrafallrimrafall
Jan 2017
crossenvcrossenv
May 2018
getcookiesgetcookies
Jul 2018
eslint-eslint-
scopescope
eslint-scope 3.7.2eslint-scope 3.7.2
malicious package publishedmalicious package published
eslint-scope 3.7.2eslint-scope 3.7.2
malicious package publishedmalicious package published
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
What's going on?What's going on?
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
Who depends on eslint-scope?Who depends on eslint-scope?
Who depends on eslint-scope?Who depends on eslint-scope?
babel-eslintbabel-eslint
Who depends on eslint-scope?Who depends on eslint-scope?
babel-eslintbabel-eslint
eslinteslint
Who depends on eslint-scope?Who depends on eslint-scope?
babel-eslintbabel-eslint
eslinteslint
webpackwebpack
npm invalidates all tokensnpm invalidates all tokens
<= 2018-07-12<= 2018-07-12
 
npm invalidates all tokensnpm invalidates all tokens
<= 2018-07-12<= 2018-07-12
 
estimated potential ~4,500 accounts estimated potential ~4,500 accounts 
were compromised were compromised 
How does something likeHow does something like
this happen?this happen?
Compromised Contributors ?Compromised Contributors ?CompromisedCompromised ContributorsContributors ??
Compromised Contributors ?Compromised Contributors ?
14%14%
compromised npm modulescompromised npm modules
CompromisedCompromised ContributorsContributors ??
src: https://github.com/ChALkeR/notes
Compromised Contributors ?Compromised Contributors ?
20%20%
npm total monthly downloadsnpm total monthly downloads
CompromisedCompromised ContributorsContributors ??
Compromised Contributors ?Compromised Contributors ?
20%20%
npm total monthly downloadsnpm total monthly downloads
expressexpress reactreact
debugdebug
momentmoment
requestrequest
CompromisedCompromised ContributorsContributors ??
https://giphy.com/embed/aWPGuTlDqq2yc
Compromised Contributors ?Compromised Contributors ?
662662 usersusers
123456123456
had their password set tohad their password set to
CompromisedCompromised ContributorsContributors ??
Compromised Contributors ?Compromised Contributors ?
14091409 usersusers
had their password set tohad their password set to
their usernametheir username
CompromisedCompromised ContributorsContributors ??
Compromised Contributors ?Compromised Contributors ?
11%11% usersusers
had their password set tohad their password set to
previously leaked passwordpreviously leaked password
CompromisedCompromised ContributorsContributors ??
Malicious ModulesMalicious Modules
timetime
Jan 2015
rimrafallrimrafall
Jan 2017
crossenvcrossenv
May 2018
getcookiesgetcookies
Jul 2018
eslint-eslint-
scopescope
event-streamevent-stream
Nov 2019
src: https://snyk.io/blog/a-post-mortem-of-the-malicious-event-stream-backdoor
Dependency ManagementDependency Management
Black Clouds inBlack Clouds in
Node.js SecurityNode.js Security
(CC BY-NC-SA 2.0)
OWASP Top 10:OWASP Top 10:
Using Components WithUsing Components With
Known VulnerabilitiesKnown Vulnerabilities
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
who watches after all thesewho watches after all these
modules ?modules ?
who watches after all thesewho watches after all these
modules ?modules ?
who watches after all thesewho watches after all these
modules ?modules ?
0101 The Scary State of Node.js SecurityThe Scary State of Node.js Security
02 02 ||
||
03 03 ||
Selected Vulnerabilities in Node.jsSelected Vulnerabilities in Node.js
Silver Linings in Node.js SecuritySilver Linings in Node.js Security
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Securityin Node.js Security
Command InjectionCommand Injection
Common SecurityCommon Security
VulnerabilitiesVulnerabilities
Command InjectionCommand Injection
Command InjectionCommand Injection
Command InjectionCommand Injection
DemoDemo
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
Best Practice:Best Practice:
execFile('git', [...args])execFile('git', [...args])
Command InjectionCommand Injection
Best Practice:Best Practice:
execFile('git', [...args])execFile('git', [...args])
Maintain a whitelist of allowed argsMaintain a whitelist of allowed args
Blacklist special shell chars like ;Blacklist special shell chars like ;
PrayPray
Command InjectionCommand Injection
Regular ExpressionsRegular Expressions
Regular ExpressionsRegular Expressions
Regular ExpressionsRegular Expressions
^([01]?dd?|2[0-4]d|25
[0-5]).([01]?dd?|2[0-4]
d|25[0-5]).([01]?dd?|
2[0-4]d|25[0-5]).([01]?
dd?|2[0-4]d|25[0-5])$
Regular ExpressionsRegular Expressions
^([01]?dd?|2[0-4]d|25
[0-5]).([01]?dd?|2[0-4]
d|25[0-5]).([01]?dd?|
2[0-4]d|25[0-5]).([01]?
dd?|2[0-4]d|25[0-5])$
IP AddressIP Address
Regular ExpressionsRegular Expressions
https://giphy.com/embed/xNBcChLQt7s9a
Regular ExpressionsRegular Expressions
Matching a Song TitleMatching a Song Title
^([a-zA-Z0-9])$^([a-zA-Z0-9])$
Regular ExpressionsRegular Expressions
Matching a Song TitleMatching a Song Title
^([a-zA-Z0-9])$^([a-zA-Z0-9])$^([a-zA-Z0-9]+s?)$^([a-zA-Z0-9]+s?)$
Regular ExpressionsRegular Expressions
Matching a Song TitleMatching a Song Title
^([a-zA-Z0-9])$^([a-zA-Z0-9])$^([a-zA-Z0-9]+s?)$^([a-zA-Z0-9]+s?)$^([a-zA-Z0-9]+s?)+$^([a-zA-Z0-9]+s?)+$
Regular ExpressionsRegular Expressions
Catastrophic BacktrackingCatastrophic Backtracking
Exploits greedy quantifiersExploits greedy quantifiers
Simple regexs are vulnerable tooSimple regexs are vulnerable too
/^(a+)+$//^(a+)+$/
Regular ExpressionsRegular Expressions
20172017 msms||
20162016 MomentMoment||
20182018 ||
20182018 ua-parser-jsua-parser-js|| 20M DL20M DL ||
96M DL96M DL ||
36M DL36M DL ||
sshpksshpk40M DL40M DL ||
Regular ExpressionsRegular Expressions
20172017 msms||
20162016 MomentMoment||
20182018 ||
20182018 ua-parser-jsua-parser-js|| 20M DL20M DL ||
96M DL96M DL ||
36M DL36M DL ||
sshpksshpk40M DL40M DL ||
Best Practices ?Best Practices ?
Regular ExpressionsRegular Expressions
Best Practices ?Best Practices ?
Regular ExpressionsRegular Expressions
Best Practice #1Best Practice #1
DO NOT WRITE YOUR OWN REGEXDO NOT WRITE YOUR OWN REGEX
Regular ExpressionsRegular Expressions
Best Practice #1Best Practice #1
DO NOT WRITE YOUR OWN REGEXDO NOT WRITE YOUR OWN REGEX
Best Practice #2Best Practice #2
DO NOT WRITE YOUR OWN REGEXDO NOT WRITE YOUR OWN REGEX
Regular ExpressionsRegular Expressions
Best Practice #3Best Practice #3
ValidatorValidator Node.js moduleNode.js module
Regular ExpressionsRegular Expressions
Best Practice #4Best Practice #4
Safe-RegexSafe-Regex Node.js moduleNode.js module
const safeRegex = require('safe-regex')
let regex = /^(([a-z])+.)+[A-Z]([a-z])+$/
let isSafe = safeRegex(regex)
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
0101 The Scary State of Node.js SecurityThe Scary State of Node.js Security
02 02 ||
||
03 03 ||
Selected Vulnerabilities in Node.jsSelected Vulnerabilities in Node.js
Silver Linings in Node.js SecuritySilver Linings in Node.js Security
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Securityin Node.js Security
The npmjs EcosystemThe npmjs Ecosystem
Silver Linings inSilver Linings in
Node.js SecurityNode.js Security
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
FightingFighting TyposquattingTyposquatting
JSONStream   JSONStream    !=!=    jsonstream    jsonstream
Package Moniker RulesPackage Moniker Rules
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
react-nativereact-native
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
react-nativereact-native
reactnativereactnative
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
rea-ct.nativerea-ct.native
react-nativereact-native
reactnativereactnative
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
rea-ct.nativerea-ct.native
react-nativereact-native
reactnativereactnative
react_nativereact_native
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
rea-ct.nativerea-ct.native
react-nativereact-native
reactnativereactnative
react_nativereact_native
   @lirantal/rea-ct.native   @lirantal/rea-ct.native
FightingFighting TyposquattingTyposquatting
Package Moniker RulesPackage Moniker Rules
Package PublishingPackage Publishing NotificationsNotifications
$ npm profile enable-2fa
2FA successfully enabled.
Below are your recovery codes,
please print these out.
2FA tokens2FA tokens for npm >= 5.5.1for npm >= 5.5.1
$ npm profile enable-2fa
2FA successfully enabled.
Below are your recovery codes,
please print these out.
2FA tokens2FA tokens for npm >= 5.5.1for npm >= 5.5.1
TakingTaking OwnershipOwnership ofof
Your App SecurityYour App Security
TakingTaking OwnershipOwnership ofof
Your App SecurityYour App Security
Source: The State of Open Source Security Report 2019, Snyk
https://snyk.io/opensourcesecurity-2019/
FindFind vulnerabilities in vulnerabilities in
open source dependenciesopen source dependencies
$ npm install snyk 
$ snyk auth 
$ snyk test 
FindFind vulnerabilities in vulnerabilities in
open source dependenciesopen source dependencies
$ npm install snyk 
$ snyk auth 
$ snyk test 
FindFind vulnerabilities in vulnerabilities in
open source dependenciesopen source dependencies
SnykSnyk detects vulnerabilitiesdetects vulnerabilities inin
Pull RequestsPull Requests
Snyk automates fixingSnyk automates fixing vulnerabilities vulnerabilities
Node.js Security Working GroupNode.js Security Working Group
Silver Linings inSilver Linings in
Node.js SecurityNode.js Security
The Security WGThe Security WG
The Security WGThe Security WG
ScopeScope
Improving the state of theImproving the state of the
Node.js Security EcosystemNode.js Security Ecosystem
The Security WGThe Security WG
ScopeScope
Improving the state of theImproving the state of the
Node.js Security EcosystemNode.js Security Ecosystem
Incident Response for NodeIncident Response for Node
and the npm ecosystemand the npm ecosystem
The Security WGThe Security WG
Initiative:Initiative: RDP for Ecosystem ModulesRDP for Ecosystem Modules
The Security WGThe Security WG
Initiative:Initiative: RDP for Ecosystem ModulesRDP for Ecosystem Modules
Discretely Investigate Security issuesDiscretely Investigate Security issues
Security Disclosure Policy for Bug HuntersSecurity Disclosure Policy for Bug Hunters
Public Vulnerability DatabasePublic Vulnerability Database
The Security WGThe Security WG
Uninitialized BufferUninitialized Buffer base64urlbase64url|| 2,000,0002,000,000 ||
Initiative:Initiative: RDP for Ecosystem ModulesRDP for Ecosystem Modules
The Security WGThe Security WG
Uninitialized BufferUninitialized Buffer base64urlbase64url|| 2,000,0002,000,000 ||
XSS InjectionXSS Injection react-svgreact-svg|| 130,000130,000 ||
Initiative:Initiative: RDP for Ecosystem ModulesRDP for Ecosystem Modules
The Security WGThe Security WG
Uninitialized BufferUninitialized Buffer base64urlbase64url|| 2,000,0002,000,000 ||
XSS InjectionXSS Injection react-svgreact-svg|| 130,000130,000 ||
Path TraversalPath Traversal serveserve|| 564,000564,000 ||
Initiative:Initiative: RDP for Ecosystem ModulesRDP for Ecosystem Modules
The Security WGThe Security WG
Uninitialized BufferUninitialized Buffer base64urlbase64url|| 2,000,0002,000,000 ||
XSS InjectionXSS Injection react-svgreact-svg|| 130,000130,000 ||
Path TraversalPath Traversal serveserve|| 564,000564,000 ||
ReDOSReDOS protobufjsprotobufjs|| 7,200,0007,200,000 ||
Initiative:Initiative: RDP for Ecosystem ModulesRDP for Ecosystem Modules
0101 Malicious modules & Compromised accountsMalicious modules & Compromised accounts||
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Securityin Node.js Security
||
0101 Malicious modules & Compromised accountsMalicious modules & Compromised accounts
02 02 ||
||
Common Security Pitfalls in Node.jsCommon Security Pitfalls in Node.js
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Securityin Node.js Security
||
||
0101 Malicious modules & Compromised accountsMalicious modules & Compromised accounts
02 02 ||
||
03 03 ||
Common Security Pitfalls in Node.jsCommon Security Pitfalls in Node.js
Developer awareness,Developer awareness,
Fix vulnerabilities in your open source deps,Fix vulnerabilities in your open source deps,
Node.js Security WGNode.js Security WG
Black Clouds & Silver LiningsBlack Clouds & Silver Linings
in Node.js Securityin Node.js Security
||
||
@liran_tal
github.com/lirantal
Liran TalLiran Tal
Developer AdvocateDeveloper Advocate
Use Open Source, Stay Secure.Use Open Source, Stay Secure.
Thank you!Thank you!

More Related Content

PDF
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
PDF
Hands-on VeriFast with STM32 microcontroller
PDF
ATS Programming Tutorial
PDF
Real-time OS system state captured by ATS language
PDF
Metasepi team meeting #19: ATS application on Arduino
PDF
ATS2 updates 2017
PDF
Yuki chen from_out_of_memory_to_remote_code_execution_pac_sec2017_final
PDF
Metasepi team meeting #14: ATS programming on MCU
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Hands-on VeriFast with STM32 microcontroller
ATS Programming Tutorial
Real-time OS system state captured by ATS language
Metasepi team meeting #19: ATS application on Arduino
ATS2 updates 2017
Yuki chen from_out_of_memory_to_remote_code_execution_pac_sec2017_final
Metasepi team meeting #14: ATS programming on MCU

What's hot (15)

PDF
Metasepi team meeting #20: Start! ATS programming on MCU
PDF
Functional IoT: Hardware and Platform
PDF
Start! ATS programming
PDF
Past and today of Metasepi project
PDF
Functional IoT: Introduction
PDF
ATS programming on ESP8266
PDF
Embedded application designed by ATS language
PDF
Functional IoT: Programming Language and OS
PDF
Static typing and proof in ATS language
PDF
ATS/LF for Coq users
PPTX
Applying ML for Log Analysis
PDF
Secure Programming Practices in C++ (NDC Oslo 2018)
PDF
Reading Other Peoples Code (Web Rebels 2018)
PDF
Soft Dive Into GrimoireLab. Twitter OSS workshop
PDF
ATS language overview'
Metasepi team meeting #20: Start! ATS programming on MCU
Functional IoT: Hardware and Platform
Start! ATS programming
Past and today of Metasepi project
Functional IoT: Introduction
ATS programming on ESP8266
Embedded application designed by ATS language
Functional IoT: Programming Language and OS
Static typing and proof in ATS language
ATS/LF for Coq users
Applying ML for Log Analysis
Secure Programming Practices in C++ (NDC Oslo 2018)
Reading Other Peoples Code (Web Rebels 2018)
Soft Dive Into GrimoireLab. Twitter OSS workshop
ATS language overview'
Ad

Similar to "Black Clouds and Silver Linings in Node.js Security" Liran Tal (20)

PDF
Cluj JSHeroes 2017 - Liran Tal on Node.js Security
PDF
Node.js security - JS Day Italy 2018
PDF
Node.js Security - XSS, Vulnerable Dependencies, Snyk, OWASP
PDF
The Container Security Checklist
PDF
stackconf 2020 | Speeding up Linux disk encryption by Ignat Korchagin
PDF
DDD on example of Symfony (SfCampUA14)
KEY
Code Generation in Agile Projects
PDF
How to build observability into Serverless (O'Reilly Velocity 2018)
PDF
"Intrusion Techniques (Open Source Tools)" por Ewerson Guimarães por
PDF
OSMC 2012 | Monitoring with Pacemaker by Martin Gerhard Loschwitz
PPTX
Power of linked list
PDF
Commcon 2018
PDF
Wi-Foo Ninjitsu Exploitation
PDF
Rocket Fuelled Cucumbers
PDF
Config Management Camp 2017 - If it moves, give it a pipeline
PDF
Escape the defaults - Configure Sling like AEM as a Cloud Service
PDF
Quick and Solid - Baremetal on OpenStack | Rico Lin
PDF
Threat Modelling - It's not just for developers
PDF
On Failure and Resilience
PDF
Know your platform. 7 things every scala developer should know about jvm
Cluj JSHeroes 2017 - Liran Tal on Node.js Security
Node.js security - JS Day Italy 2018
Node.js Security - XSS, Vulnerable Dependencies, Snyk, OWASP
The Container Security Checklist
stackconf 2020 | Speeding up Linux disk encryption by Ignat Korchagin
DDD on example of Symfony (SfCampUA14)
Code Generation in Agile Projects
How to build observability into Serverless (O'Reilly Velocity 2018)
"Intrusion Techniques (Open Source Tools)" por Ewerson Guimarães por
OSMC 2012 | Monitoring with Pacemaker by Martin Gerhard Loschwitz
Power of linked list
Commcon 2018
Wi-Foo Ninjitsu Exploitation
Rocket Fuelled Cucumbers
Config Management Camp 2017 - If it moves, give it a pipeline
Escape the defaults - Configure Sling like AEM as a Cloud Service
Quick and Solid - Baremetal on OpenStack | Rico Lin
Threat Modelling - It's not just for developers
On Failure and Resilience
Know your platform. 7 things every scala developer should know about jvm
Ad

More from Julia Cherniak (11)

PDF
"Definition of Done: Deadline driven development" Vitaliy Ratushnyi
PDF
"Muses Code JS or How Communities Change People" Tanya Butenko
PDF
"Принимают за hard skills, увольняют из-за soft skills" Павел Галушко
PDF
"It’s about time to embrace Streams" Luciano Mammino
PDF
"Node.js and Serverless" Viacheslav Panevskyi
PDF
"Lift me up. Mentorship 101" Tanya Butenko
PDF
"Using Blockchain in Node.js project: JavaScript Ninja’s experience" Maksym D...
PDF
"The working architecture of NodeJs applications" Viktor Turskyi
PDF
"The search for App-iness : Progressive Web Apps" Jamie Maria Schouren
PDF
"The Future of Machine Learning & JavaScript"Asim Hussain
PDF
"ClojureScript journey: from little script, to CLI program, to AWS Lambda fun...
"Definition of Done: Deadline driven development" Vitaliy Ratushnyi
"Muses Code JS or How Communities Change People" Tanya Butenko
"Принимают за hard skills, увольняют из-за soft skills" Павел Галушко
"It’s about time to embrace Streams" Luciano Mammino
"Node.js and Serverless" Viacheslav Panevskyi
"Lift me up. Mentorship 101" Tanya Butenko
"Using Blockchain in Node.js project: JavaScript Ninja’s experience" Maksym D...
"The working architecture of NodeJs applications" Viktor Turskyi
"The search for App-iness : Progressive Web Apps" Jamie Maria Schouren
"The Future of Machine Learning & JavaScript"Asim Hussain
"ClojureScript journey: from little script, to CLI program, to AWS Lambda fun...

Recently uploaded (20)

PDF
Digital Strategies for Manufacturing Companies
PPT
Introduction Database Management System for Course Database
PDF
medical staffing services at VALiNTRY
PDF
System and Network Administraation Chapter 3
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
top salesforce developer skills in 2025.pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Complete React Javascript Course Syllabus.pdf
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPT
JAVA ppt tutorial basics to learn java programming
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
PDF
AI in Product Development-omnex systems
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
How Creative Agencies Leverage Project Management Software.pdf
Digital Strategies for Manufacturing Companies
Introduction Database Management System for Course Database
medical staffing services at VALiNTRY
System and Network Administraation Chapter 3
Which alternative to Crystal Reports is best for small or large businesses.pdf
PTS Company Brochure 2025 (1).pdf.......
top salesforce developer skills in 2025.pdf
VVF-Customer-Presentation2025-Ver1.9.pptx
Complete React Javascript Course Syllabus.pdf
Online Work Permit System for Fast Permit Processing
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
JAVA ppt tutorial basics to learn java programming
Materi_Pemrograman_Komputer-Looping.pptx
AI in Product Development-omnex systems
Softaken Excel to vCard Converter Software.pdf
ManageIQ - Sprint 268 Review - Slide Deck
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
2025 Textile ERP Trends: SAP, Odoo & Oracle
How Creative Agencies Leverage Project Management Software.pdf

"Black Clouds and Silver Linings in Node.js Security" Liran Tal