Security Scanner für JavaScript

Tools

1. Dependendency Checker

2. Code Analyse Tools

1. Dependendency Checker

Überprüfen Dependencies nach bekannten Schwachstellen

  • Retire.js
  • nsp
  • David
  • Snyk

Retire.js

Zu verwenden via

  • Command Line App
  • Grunt plugin
  • Browser Extension 

Wissenswertes

  • Nutzen nicht beschränkt auf bestimmten Package Manager
  • Datenbank für Browser Libraries ziemlich klein

nsp

Zu verwenden via

  • Command Line App
  • Grunt/Gulp plugin
  • Editor Plugin
  • Github Integration

Wissenswertes

  • Nur in Verwendung mit npm/Yarn als Package Manager
  • Github Integration kostenlos für alle öffentlichen Repos und 1 privates

David

Zu verwenden via

  • Node Module und CLI
  • Grunt/Gulp plugin
  • Github Integration

Wissenswertes

  • Hauptfokus nicht Security, sonder Aktualität von Dependencies
  • Nutzt die Datenbank der Node Security Platform
  • Nur in Verwendung mit npm/Yarn als Package Manager
  • Github Integration kostenlos für alle öffentlichen Repos

Snyk

Zu verwenden via

  • Command Line App
  • Grunt/Gulp plugin
  • Github Integration
  • Bitbucket Integration

Wissenswertes

  • Zu verwenden in Verbindung mit:
    • npm/Yarn (für JavaScript)
    • RubyGems (für Ruby)
    • Maven (für Java)
  • Github Integration kostenlos für alle öffentlichen Repos und 1 privates
  • CLI erfordert Authentifizierung und jedes überwachte Projekt zählt als privates Projekt
  • Teilweise sehr detaillierte Infos zu Schwachstellen
  • Gibt Hilfestellung beim fixen von Schwachstellen
  • Bietet teilsweise von Snyk erstelle und gewartete Patches an

Demo

$ mkdir security-demo
$ cd security-demo
$ npm init --force

Demo Projekt

Hat alte Versionen mit Vulnerabilities

Projekt initialisieren:

$ npm install --save angular@1.3.0
$ npm install --save i18next@3.0.0
$ npm install --save jquery@1.5.1
$ npm install --save pouchdb@6.0.0

Dependencies installieren:

$ npm install -g david
$ npm install -g snyk
$ npm install -g retire
$ npm install -g nsp

Demo Projekt

Hat alte Versionen mit Vulnerabilities

CLI Apps global installieren:

$ snyk test
$ retire
$ david
$ nsp check

Dependency checker ausführe:

{
  "name": "security-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "angular": "^1.3.0",
    "i18next": "^3.0.0",
    "jquery": "^1.5.1",
    "pouchdb": "^6.0.0"
  }
}

Demo project

Hat alte Versionen mit Vulnerabilities

2. Code Analyse Tools

Können in eigenem Code potentielle Security hotspots finden 

ESLint plugin

  • Plugin mit 13 Security Rules
  • Sehr Node.js lastig

Security Scanner für JavaScript

By Michael Kühnel

Security Scanner für JavaScript

  • 1,305