Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
njsscan — Scanner SAST sémantique pour les applications Node.js qui détecte les modèles de code non sécurisés en utilisant la correspondance de motifs de libsast et l'analyse syntaxique de semgrep. | Kitploit
Outils/GitHubGitHub/ajinabraham/njsscan
Analyse StatiqueScanners de VulnérabilitésAnalyse Statique de Code (SAST)Analyse de CodeSécurité WebDevSecOpsTop en Analyse de Code n°13Top en Analyse Statique de Code (SAST) n°10
GitHubajinabraham/njsscan
436108128il y a 28 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

njsscan

Scanner SAST sémantique pour les applications Node.js qui détecte les modèles de code non sécurisés en utilisant la correspondance de motifs de libsast et l'analyse syntaxique de semgrep.

Voir le dépôtSite web
Partager
# njsscan
**njsscan** est un outil de test statique d'application (SAST) qui peut détecter des motifs de code non sécurisés dans vos applications node.js en utilisant un simple comparateur de motifs issu de [libsast](https://github.com/ajinabraham/libsast) et l'outil de recherche de motifs de code sémantique sensible à la syntaxe [semgrep](https://github.com/returntocorp/semgrep).

Réalisé avec ![Love](https://assets.kitploit.com/production/public/readmes/5043/b3821ff3e9618f0eddb3e737339f0573d7ab0a2e4a3d0fdccf80925bdd5cf319.png) en Inde  [![Tweet](https://img.shields.io/twitter/url?url=https://github.com/ajinabraham/njsscan)](https://twitter.com/intent/tweet/?text=njsscan%20is%20a%20semantic%20aware%20SAST%20tool%20that%20can%20find%20insecure%20code%20patterns%20in%20your%20Node.js%20applications%20by%20%40ajinabraham%20%40OpenSecurity_IN&url=https://github.com/ajinabraham/njsscan)

[![PyPI version](https://badge.fury.io/py/njsscan.svg)](https://badge.fury.io/py/njsscan)
[![platform](https://img.shields.io/badge/platform-osx/linux-green.svg)](https://github.com/ajinabraham/njsscan)
[![License](https://img.shields.io/:license-lgpl3+-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0.en.html)
[![python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Build](https://github.com/ajinabraham/njsscan/workflows/Build/badge.svg)](https://github.com/ajinabraham/njsscan/actions?query=workflow%3ABuild)

### Soutenir njsscan

* **Faire un don via Paypal :** [![Donate via Paypal](https://assets.kitploit.com/production/public/readmes/5043/154f3a9ed4f3ac0059fc18337f3cb4d28103f349b3e256458f6a39b23d3c092b.gif)](https://paypal.me/ajinabraham)
* **Sponsoriser le projet :** [![Github Sponsors](https://assets.kitploit.com/production/public/readmes/5043/2ec01911ba34e48906cabcf91fef477ed314b36a2a1340b226976e3b8c7f271f.png)](https://github.com/sponsors/ajinabraham)

### Cours e-Learning et Certifications
[![OpSecX Video Course](https://assets.kitploit.com/production/public/readmes/5043/870da208b8fa80e7000c8585cbbb345057dfa18c657a493215eab4517c60876f.png)](https://opsecx.com/index.php/product/node-js-security-pentesting-and-exploitation/?uid=github) [OpSecX Node.js Security: Pentesting and Exploitation - NJS](https://opsecx.com/index.php/product/node-js-security-pentesting-and-exploitation/?uid=github)

## Installation

`pip install njsscan`

Nécessite Python 3.10+ et ne prend en charge que Mac et Linux

## Options de ligne de commande

```bash
$ njsscan
usage: njsscan [-h] [--json] [--sarif] [--sonarqube] [--defectdojo] [--gitlab-sast] [--html] [-o OUTPUT] [-c CONFIG] [--missing-controls] [-w] [-v] [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
  --sarif               set output format as SARIF 2.1.0
  --sonarqube           set output format compatible with SonarQube
  --defectdojo          set output format compatible with DefectDojo Generic Findings Import
  --gitlab-sast         set output format as GitLab SAST report
  --html                set output format as HTML
  -o OUTPUT, --output OUTPUT
                        output filename to save the result
  -c CONFIG, --config CONFIG
                        Location to .njsscan config file
  --missing-controls    enable missing security controls check
  -w, --exit-warning    non zero exit code on warning
  -v, --version         show njsscan version
```


## Exemple d'utilisation

```bash
$ njsscan test.js
- Pattern Match ████████████████████████████████████████████████████████████ 1
- Semantic Grep ███████████████████████████ 160

njsscan: v0.1.9 | Ajin Abraham | opensecurity.in
╒═════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════╕
│ 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           │ test.js                                       │                            │
│             │ ├────────────────┼───────────────────────────────────────────────┤                            │
│             │ │ Match Position │ 5 - 46                                        │                            │
│             │ ├────────────────┼───────────────────────────────────────────────┤                            │
│             │ │ Line Number(s) │ 7: 8                                          │                            │
│             │ ├────────────────┼───────────────────────────────────────────────┤                            │
│             │ │ Match String   │ const { name } = req.query;                   │                            │
│             │ │                │     res.send('<h1> Hello :' + name + "</h1>") │                            │
│             │ ╘════════════════╧═══════════════════════════════════════════════╛                            │
╘═════════════╧═══════════════════════════════════════════════════════════════════════════════════════════════╛
```

## nodejsscan SAST

**nodejsscan**, construit au-dessus de **njsscan**, fournit une interface utilisateur complète de gestion des vulnérabilités ainsi que d'autres intégrations astucieuses.

![nodejsscan web ui](https://assets.kitploit.com/production/public/readmes/5043/84d1df3bcde830f024b97f4a79839ed0aac6f3ff5543af66d8df0f165e490bc3.png)

Voir [nodejsscan](https://github.com/ajinabraham/nodejsscan)

## API Python

```python
>>> from njsscan.njsscan import NJSScan
>>> node_source = '/node_source/true_positives/sqli_node.js'
>>> scanner = NJSScan([node_source], json=True, check_controls=False)
>>> scanner.scan()
{
    'templates': {},
    'nodejs': {
        'node_sqli_injection': {
            'files': [{
                'file_path': '/node_source/true_positives/sqli_node.js',
                'match_position': (1, 24),
                'match_lines': (4, 11),
                'match_string': 'var employeeId = req.foo;\n\nvar sql = "SELECT * FROM trn_employee WHERE employee_id = " + employeeId;\n\n\n\nconnection.query(sql, function (error, results, fields) {\n\n    if (error) {\n\n        throw error;\n\n    }\n\n    console.log(results);'
            }],
            'metadata': {
                'owasp': 'A1: Injection',
                'cwe': "CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')",
                'description': 'Untrusted input concatinated with raw SQL query can result in SQL Injection.',
                'severity': 'ERROR'
            }
        }
    },
    'errors': []
}
```

## Configurer njsscan

Un fichier `.njsscan` à la racine du répertoire du code source vous permet de configurer njsscan. Vous pouvez également utiliser un fichier `.njsscan` personnalisé via l'argument `--config`.

```yaml
---
- 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

  severity-filter:
  - WARNING
  - ERROR

  severity-overrides:
    express_xss: WARNING
    node_secret: ERROR
```

## Supprimer des résultats

Vous pouvez supprimer des résultats provenant de fichiers source javascript en ajoutant le commentaire `// njsscan-ignore: rule_id1, rule_id2` sur la ligne qui déclenche les résultats.

Exemple :

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

## Intégrations CI/CD

Vous pouvez activer njsscan dans vos pipelines CI/CD ou DevSecOps.

#### Github Action

Ajoutez ce qui suit au fichier `.github/workflows/njsscan.yml`.

```yaml
name: njsscan
on:
  push:
    branches: [ master, main ]
  pull_request:
    branches: [ master, main ]
jobs:
  njsscan:
    runs-on: ubuntu-latest
    name: njsscan check
    steps:
    - name: Checkout the code
      uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
    - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
      with:
        python-version: '3.12'
    - name: nodejsscan scan
      id: njsscan
      uses: ajinabraham/njsscan-action@231750a435d85095d33be7d192d52ec650625146 # v9
      with:
        args: '.'
```
Exemple : [dvna avec njsscan github action](https://github.com/ajinabraham/dvna/actions?query=workflow%3Anjsscan)

#### Intégration Github Code Scanning

Ajoutez ce qui suit au fichier `.github/workflows/njsscan_sarif.yml`.

```yaml
name: njsscan sarif
on:
  push:
    branches: [ master, main ]
  pull_request:
    branches: [ master, main ]
jobs:
  njsscan:
    runs-on: ubuntu-latest
    name: njsscan code scanning
    steps:
    - name: Checkout the code
      uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
    - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
      with:
        python-version: '3.12'
    - name: nodejsscan scan
      id: njsscan
      uses: ajinabraham/njsscan-action@231750a435d85095d33be7d192d52ec650625146 # v9
      with:
        args: '. --sarif --output results.sarif || true'
    - name: Upload njsscan report
      uses: github/codeql-action/upload-sarif@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4.38.1
      with:
        sarif_file: results.sarif
```
![nodejsscan web ui](https://assets.kitploit.com/production/public/readmes/5043/695ed493409d9398ac3741ad717a34df0109b958ee803083f29b843c58ab96b5.png)


#### Gitlab CI/CD

Ajoutez ce qui suit au fichier `.gitlab-ci.yml`.

```yaml
stages:
  - test

njsscan:
  image: python:3.12
  stage: test
  before_script:
    - pip3 install --upgrade njsscan
  script:
    - njsscan . --gitlab-sast -o gl-sast-report.json
  artifacts:
    when: always
    reports:
      sast: gl-sast-report.json
```

Exemple de commande (en local) :

```bash
njsscan . --gitlab-sast -o gl-sast-report.json
```

Cela écrit un [rapport GitLab SAST](https://docs.gitlab.com/user/application_security/sast/) natif afin que les résultats apparaissent dans le Vulnerability Report / widget de sécurité des MR sans convertisseur SARIF.

Exemple : [dvna avec njsscan gitlab](https://gitlab.com/ajinabraham/dvna/-/jobs/602110439)


#### Travis CI

Ajoutez ce qui suit au fichier `.travis.yml`.

```yaml
language: python
install:
    - pip3 install --upgrade njsscan
script:
    - njsscan .
```

#### Circle CI

Ajoutez ce qui suit au fichier `.circleci/config.yaml`

```yaml
version: 2.1
jobs:
  njsscan:
    docker:
      - image: cimg/python:3.9.6
    steps:
      - checkout
      - run:
          name: Install njsscan
          command: pip install --upgrade njsscan
      - run:
           name: njsscan check
           command: njsscan .
```

## Docker

### Image préconstruite depuis [DockerHub](https://hub.docker.com/r/opensecurity/njsscan)

```bash
docker pull opensecurity/njsscan
docker run -v /path-to-source-dir:/src opensecurity/njsscan /src
```

### Construire localement

```
docker build -t njsscan .
docker run -v /path-to-source-dir:/src njsscan /src
```
Télécharger l’outil