Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
njsscan — Семантический SAST-сканер для приложений Node.js, который обнаруживает небезопасные шаблоны кода с помощью сопоставления шаблонов libsast и синтаксического анализа semgrep. | Kitploit
Инструменты/GitHubGitHub/ajinabraham/njsscan
Статический анализСканеры уязвимостейАнализ КодаВеб-безопасностьDevSecOps
GitHubajinabraham/njsscan

njsscan

Семантический SAST-сканер для приложений Node.js, который обнаруживает небезопасные шаблоны кода с помощью сопоставления шаблонов libsast и синтаксического анализа semgrep.

Репозиторий
4361089 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

njsscan

njsscan — это инструмент статического тестирования безопасности приложений (SAST), который может находить небезопасные шаблоны кода в ваших приложениях Node.js с помощью простого сопоставителя шаблонов из libsast и семантического инструмента поиска шаблонов кода с учётом синтаксиса semgrep.

Сделано с Love в Индии Tweet

PyPI version platform License python Build

Поддержка njsscan

  • Пожертвовать через Paypal: Donate via Paypal
  • Стать спонсором проекта: Github Sponsors

Онлайн-курсы и сертификация

OpSecX Video Course OpSecX Node.js Security: Pentesting and Exploitation - NJS

Установка

pip install njsscan

Требуется Python 3.10+, поддерживаются только Mac и Linux.

Параметры командной строки

root@kitploit:~
$ 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

Пример использования

root@kitploit:~
$ 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, построенный на основе njsscan, предоставляет полнофункциональный пользовательский интерфейс управления уязвимостями, а также другие удобные интеграции.

nodejsscan web ui

См. nodejsscan

Python API

root@kitploit:~
>>> 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': []
}

Настройка njsscan

Файл .njsscan в корне каталога исходного кода позволяет настроить njsscan. Вы также можете использовать собственный файл .njsscan с помощью аргумента --config.

root@kitploit:~
---
- 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

Подавление находок

Вы можете подавить вывод находок в исходных файлах JavaScript, добавив комментарий // njsscan-ignore: rule_id1, rule_id2 в строку, которая вызывает срабатывание.

Пример:

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

Интеграции с CI/CD

Вы можете включить njsscan в своих конвейерах CI/CD или DevSecOps.

GitHub Action

Добавьте следующее в файл .github/workflows/njsscan.yml.

root@kitploit:~
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@v7
    - uses: actions/setup-python@v7
      with:
        python-version: '3.12'
    - name: nodejsscan scan
      id: njsscan
      uses: ajinabraham/njsscan-action@master
      with:
        args: '.'

Пример: dvna с njsscan github action

Интеграция с GitHub Code Scanning

Добавьте следующее в файл .github/workflows/njsscan_sarif.yml.

root@kitploit:~
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@v7
    - uses: actions/setup-python@v7
      with:
        python-version: '3.12'
    - name: nodejsscan scan
      id: njsscan
      uses: ajinabraham/njsscan-action@master
      with:
        args: '. --sarif --output results.sarif || true'
    - name: Upload njsscan report
      uses: github/codeql-action/upload-sarif@v3
      with:
        sarif_file: results.sarif

nodejsscan web ui

GitLab CI/CD

Добавьте следующее в файл .gitlab-ci.yml.

root@kitploit:~
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:
    reports:
      sast: gl-sast-report.json

Пример команды (локально):

root@kitploit:~
njsscan . --gitlab-sast -o gl-sast-report.json

Это создает нативный отчет GitLab SAST, поэтому находки появляются в отчете об уязвимостях / виджете безопасности MR без конвертера SARIF.

Пример: dvna с njsscan gitlab

Travis CI

Добавьте следующее в файл .travis.yml.

root@kitploit:~
language: python
install:
    - pip3 install --upgrade njsscan
script:
    - njsscan .

Circle CI

Добавьте следующее в файл .circleci/config.yaml

root@kitploit:~
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

Готовый образ с DockerHub

root@kitploit:~
docker pull opensecurity/njsscan
docker run -v /path-to-source-dir:/src opensecurity/njsscan /src

Сборка локально

root@kitploit:~
docker build -t njsscan .
docker run -v /path-to-source-dir:/src njsscan /src
Скачать инструмент