Njsscan Herramienta SAST para Aplicaciones Node.js
Njsscan Herramienta SAST para Aplicaciones Node.js

Njsscan: Herramienta SAST para Aplicaciones Node.js

njsscan es una herramienta de prueba de aplicaciones estáticas (SAST) que puede encontrar patrones de código inseguros en tus aplicaciones node.js usando un simple comparador de patrones de libsast y la herramienta de búsqueda de patrones de código semántico syntax-aware, semgrep.

Instalación

pip install njsscan

Requiere Python 3.6+ y sólo soporta Mac y Linux

Opciones de la Línea de Comando

$ njsscan
 usage: njsscan [-h] [--json] [--sonarqube] [-o OUTPUT] [--missing-controls]
                [-w] [-v]
                [path [path …]]
 positional arguments:
   path                  Path can be file(s) or directories with source code
 optional arguments:
   -h, --help            show this help message and exit
   --json                set output format as JSON
   --sonarqube           set output format compatible with SonarQube
   -o OUTPUT, --output OUTPUT
                         output filename to save the result
   --missing-controls    enable missing security controls check
   -w, --exit-warning    non zero exit code on warning
   -v, --version         show njsscan version

Ejemplo de Uso

$ njsscan xss_node.js
 Pattern Match ████████████████████████████████████████████████████████████ 1
 Semantic Grep ████████████████████████████████████████████████████████████ 53 
 ======================================================================================================
 RULE ID: express_xss
 OWASP: A1: Injection
 CWE: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
 DESCRIPTION: Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.
 SEVERITY: ERROR
 ____________FILES_____________________
 File: xss_node.js
 Match Position: 5 - 37
 Line Number(s): 5: 6
 Match String:     var html = "Hello" + req.query.name + ". How are you?"
 res.write('Response</br>' + html);

SAST nodejsscan

nodejsscan, construido sobre njsscan, proporciona una interfaz de usuario de gestión de la vulnerabilidad completa junto con otras integraciones ingeniosas.

SAST nodejsscan
SAST nodejsscan

Python API

Configurar njsscan

Un archivo .njsscan en la raíz del directorio del código fuente te permite configurar njsscan.

---
- nodejs-extensions:
 .js
 template-extensions:
 .new
 .hbs
 ''
 ignore-filenames:
 skip.js
 ignore-paths:
 __MACOSX
 skip_dir
 node_modules
 ignore-extensions:
 .jsx
 ignore-rules:
 regex_injection_dos
 pug_jade_template 

Suprimir Hallazgos

Puede suprimir los hallazgos de los archivos fuente de javascript añadiendo el comentario //ignore: rule_id1, rule_id2 a la línea que desencadena los hallazgos.

Ejemplo:

app.get('/some/redirect', function (req, res) {
     var target = req.param("target");
     res.redirect(target); //ignore: express_open_redirect
 });

Integraciones CI/CD

Puedes habilitar njsscan en tus pipelines CI/CD o DevSecOps.

Acción Github

Añade lo siguiente al archivo .github/workflows/njsscan.yml.

name: njsscan
 on:
   push:
     branches: [ master ]
   pull_request:
     branches: [ master ]
 jobs:
   njsscan:
     runs-on: ubuntu-latest
     name: njsscan check
     steps:
     - uses: actions/checkout@v1
     - name: njsscan
       id: njsscan
       uses: ajinabraham/njsscan-action@v5
       with:
         args: '.'

Ejemplo: dvna with njsscan github action

Gitlab CI/CD

Añade lo siguiente al archivo .gitlab-ci.yml.

stages:
     - test
 njsscan:
     image: python
     before_script:
         - pip3 install --upgrade njsscan
     script:
         - njsscan .

Ejemplo: dvna with njsscan gitlab

Travis CI

Añade lo siguiente al archivo .travis.yml.

language: python
 install:
     - pip3 install --upgrade njsscan
 script:
     - njsscan .
Dark Mode

njsscan (este enlace se abre en una nueva ventana) por ajinabraham (este enlace se abre en una nueva ventana)

njsscan is a semantic aware SAST tool that can find insecure code patterns in your Node.js applications.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda