Giter Site home page Giter Site logo

vulnogram / vulnogram Goto Github PK

View Code? Open in Web Editor NEW
145.0 8.0 41.0 1.55 MB

Vulnogram is a tool for creating and editing CVE information in CVE JSON format

Home Page: https://vulnogram.github.io/

License: MIT License

Makefile 0.27% JavaScript 69.89% CSS 10.10% Shell 0.18% Pug 19.46% Dockerfile 0.09%
cve vulnerability cve-json cvss cwe cvssv3 security security-tools security-automation security-vulnerability

vulnogram's Introduction

Vulnogram

Making the world safer one CVE ID at a time, since 2017.

Introduction

Vulnogram is a tool for creating and editing CVE information in CVE JSON format, and for generating advisories.

The name Vulnogram is inspired from Greek origin suffix '-gram' which is used for denoting something written or recorded especially in a certain way. Vulnerability related information when recorded in a standard format can help in aggregation, curation, dissemination, analysis and remediation. This enables automation and efficiency in response activities.

Vulnogram project aims to make it easier for vendors and security researchers to accurately record vulnerability information for inclusion in the CVE List.

Getting started

Vulnogram can be deployed in two modes:

Browser mode Server mode
Frontend web UI only, as seen on vulnogram.github.io. A NodeJS web application serves frontend web UI for a backend Mongodb.
It is a Javascript based tool to open, import, edit, preview and save JSON documents which conform to a given JSON-Schema. It is a modern scalable issue tracker similar to JIRA or bugtrack but using JSON-Schemas as data models and a NoSQL database as a backend. Along with customizable plugins it can be used for tracking anything that can be expressed with a JSON-Schema. plugins are available for tracking security incidents, tickets, contacts, NVD entries and CVE assignments.
Can't save CVE JSON drafts. JSON documents are saved to a NoSQL (Mongodb) backend.
No login required. Users are authenticated.
No workflow or tracking. Allows tracking, querying, searching, version control, audit trail of changes, commenting and dashboard charts and graphs on collections of JSON documents.
Security considerations:
๐Ÿ‘ Information entered in the tool is not transmitted anywhere out of the browser.
โ„น๏ธ Download button saves the JSON document in the browser to a local file.
โš ๏ธ Ensure local filesystem is secured.
โš ๏ธ Avoid using the tool on a public computer (beware of browser autofill).
Security considerations:
โ„น๏ธ Configure HTTPS in the config file.
โš ๏ธ Ensure that MongoDB is secured and hardened. Mongodb backend is used for storing documents on the server.
โš ๏ธ Keep configuration files secured.
โš ๏ธ Only create accounts for trusted users. There is no RBAC or ACL feature (as of now)!

Server mode deployment

Step 1. Install required Node.js modules

$ cd vulnogram
$ npm install
... this should install required dependencies, (except process monitors) ...

Step 2. Setup monogodb to be used for persistent storage of CVE JSON and users

See https://www.mongodb.com/.

Important: Ensure mongodb authentication is enabled. It is recommended to run mongodb bound to loopback/localhost and not expose it to network.

Step 3. Edit the config parameters in conf.js to suit your requirements

See config/conf-default.js comments for hints.

Step 4 (Optional). Add custom templates, schemas, or routes

Copy the "default" directory as "custom" and modify relevant pug templates, schemas or routes. Files or fields from "custom" override "default".

Step 5. Configure a user on the CLI for logging in

$ node useradd.js tester [email protected] Tester [email protected] 1
Enter Password: ********************************************
Enter Password again: ********************************************
Success New user is now registered and can log in: tester

Step 6 (Optional). Configure the .env file

Copy the example.env file to .env and configure the environment variables to values you prefer. The values in .env will automatically be loaded as environment variables when Vulnogram starts. See dotenv for more details.

Step 7. Start the node application

$ node app.js

(set NODE_ENV=development for local testing without HTTPS)

Step 8. Run the application as a daemon server

Use a process monitor like pm2 (preferred) or [forever] to run vulnogram as a service:

8.a Example using pm2

First install pm2 using instruction at pm2 documentation

$ pm2 start app.js
[PM2] Spawning PM2 daemon with pm2_home=/home/vulnogram/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/vulnogram/app.js in fork_mode (1 instance)
[PM2] Done.

8.b Example using forever

$ npm start
> [email protected] start /home/vulnogram/
> forever start --id 'vulnogram' --spinSleepTime 5000 --minUptime 2000 app.js

info:    Forever processing file: app.js
info:    Forever processes running
data:        uid  command                      script forever pid   id        logfile                      uptime
data:    [0] v3wE /usr/bin/node app.js 11208   11210 vulnogram /home/vulnogram/.forever/v3wE.log 0:0:0:0.23

Step 9. Finish

Web application should be now accessible at one of the following addresses, depending on configuration:

Browser mode deployment

Configure defaults

  • nodejs 14.0.0 or later is required to generate files (nodejs is not needed on a web server; it is only needed to execute the node command locally)
  • Install required nodejs modules. See step 1 above.
  • Configure Vulnogram following step 3 to 5 above.

Generate files needed for a front-end only static website (browser mode)

$ make min

This creates standalone /index.html with minimized javascript and stylesheets can be hosted independently on websites serving static files. This does not require the backend mongodb server or the nodejs server application to be running.

Note: Opening the index.html as a file URL may not work since some browsers (including Chrome) will not run async requests on file:// URLs. It is recommended to serve these files from a webserver. See https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server for examples on how to run a simple testing webserver.

Docker deployment

To run Vulnogram in a container alongside MongoDB, run the following command:

$ docker compose up

To modify the configuration options available, make a copy of the example.env file and make relevant modifications. Then launch Vulnogram by using the ENV_VAR_PATH environment variable. Replace example.env with the path to your file:

$ ENV_VAR_PATH=example.env docker compose up

To change the ports that Vulnogram or MongoDB are running on, use the MONGO_PORT and VULNOGRAM_PORT environment variables. When doing this, make sure to make the appropriate modifications within the environment variables file as well, so that the ports used inside the container match those being passed to docker compose:

$ cat my-env-vars.env | grep PORT
MONGO_PORT=12345
VULNOGRAM_PORT=54321
$ MONGO_PORT=12345 VULNOGRAM_PORT=54321 ENV_VAR_PATH=my-env-vars.env docker compose up

Dependencies

This project uses or depends on software from:

Copyright (c) 2017-2022 Chandan B N.

SPDX-License-Identifier: MIT

vulnogram's People

Contributors

carterjones avatar chandanbn avatar electricnroff avatar iamamoose avatar raboof avatar santosomar avatar sei-vsarvepalli avatar todb avatar xdrr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vulnogram's Issues

WS-2019-0019 (Medium) detected in braces-1.8.5.tgz

WS-2019-0019 - Medium Severity Vulnerability

Vulnerable Library - braces-1.8.5.tgz

Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces specification.

Library home page: https://registry.npmjs.org/braces/-/braces-1.8.5.tgz

Path to dependency file: /tmp/ws-scm/Vulnogram/package.json

Path to vulnerable library: /tmp/ws-scm/Vulnogram/node_modules/braces/package.json

Dependency Hierarchy:

  • csso-cli-2.0.2.tgz (Root Library)
    • chokidar-1.7.0.tgz
      • anymatch-1.3.2.tgz
        • micromatch-2.3.11.tgz
          • โŒ braces-1.8.5.tgz (Vulnerable Library)

Found in HEAD commit: 85e45dad7614a3eb7d3396c770da9f67063f5dcc

Vulnerability Details

Version of braces prior to 2.3.1 are vulnerable to Regular Expression Denial of Service (ReDoS). Untrusted input may cause catastrophic backtracking while matching regular expressions. This can cause the application to be unresponsive leading to Denial of Service.

Publish Date: 2019-03-25

URL: WS-2019-0019

CVSS 2 Score Details (5.0)

Base Score Metrics not available

Suggested Fix

Type: Upgrade version

Origin: https://www.npmjs.com/advisories/786

Release Date: 2019-02-21

Fix Resolution: 2.3.1


Step up your Open Source Security Game with WhiteSource here

CVE-2021-21353 (High) detected in pug-2.0.4.tgz

CVE-2021-21353 - High Severity Vulnerability

Vulnerable Library - pug-2.0.4.tgz

A clean, whitespace-sensitive template language for writing HTML

Library home page: https://registry.npmjs.org/pug/-/pug-2.0.4.tgz

Path to dependency file: Vulnogram/package.json

Path to vulnerable library: Vulnogram/node_modules/pug/package.json

Dependency Hierarchy:

  • โŒ pug-2.0.4.tgz (Vulnerable Library)

Found in base branch: master

Vulnerability Details

Pug is an npm package which is a high-performance template engine. In pug before version 3.0.1, if a remote attacker was able to control the pretty option of the pug compiler, e.g. if you spread a user provided object such as the query parameters of a request into the pug template inputs, it was possible for them to achieve remote code execution on the node.js backend. This is fixed in version 3.0.1. This advisory applies to multiple pug packages including "pug", "pug-code-gen". pug-code-gen has a backported fix at version 2.0.3. This advisory is not exploitable if there is no way for un-trusted input to be passed to pug as the pretty option, e.g. if you compile templates in advance before applying user input to them, you do not need to upgrade.

Publish Date: 2021-03-03

URL: CVE-2021-21353

CVSS 3 Score Details (9.0)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: None
    • User Interaction: None
    • Scope: Changed
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-p493-635q-r6gr

Release Date: 2020-12-23

Fix Resolution: pug -3.0.1, pug-code-gen-2.0.3, pug-code-gen-3.0.2


Step up your Open Source Security Game with WhiteSource here

in 0.1.0, getCveIds neglects pagination

getCveIds() {
return this._request.get('cve-id')
.then(data => data.cve_ids);
};

seems to expect that a GET request to the /api/cve-id endpoint will retrieve all CVE IDs owned by the organization. The API service uses pagination. If the response to the GET request includes a pageCount key, then the client is responsible for making additional similar requests to /api/cve-id?page=2 and (possibly) /api/cve-id?page=3 etc. as needed to retrieve all pages. The results from all of these requests can then be combined when deciding which CVE IDs to display in the My CVE IDs table.

The user impact is that, when logged in as a user associated with a CNA that has many CVE IDs, pressing the "Reserve a CVE ID" button, and then pressing the arrow next to "Created" in order to show the most recently created CVE IDs at the top, often appears to have no effect. There is no way to use Vulnogram to learn which CVE ID has just been reserved. That CVE ID is not present in the ID column of the My CVE IDs table. (Although, in practice, all reservation attempts have been successful, the user may wonder whether the request silently failed.) Also, that CVE ID is not one of the completion choices when typing into the CVE ID field on the Editor tab. (Of course, if the user happens to learn which CVE ID was just reserved -- perhaps by using a different client application -- then that CVE ID can be used on the Editor tab.)

From a user perspective, the behavior appears to be intermittent. If the user presses the "Reserve a CVE ID" button many times and sorts the table many times, it is likely that some of the just reserved CVE IDs will be visible, even if most are not visible. In other words, the API service makes no guarantee about whether a specific CVE ID will be listed within page 1, if the pageCount is greater than 1.

WS-2018-0148 (High) detected in utile-0.3.0.tgz, utile-0.2.1.tgz - autoclosed

WS-2018-0148 - High Severity Vulnerability

Vulnerable Libraries - utile-0.3.0.tgz, utile-0.2.1.tgz

utile-0.3.0.tgz

A drop-in replacement for `util` with some additional advantageous functions

Library home page: https://registry.npmjs.org/utile/-/utile-0.3.0.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/utile/package.json

Dependency Hierarchy:

  • forever-2.0.0.tgz (Root Library)
    • โŒ utile-0.3.0.tgz (Vulnerable Library)
utile-0.2.1.tgz

A drop-in replacement for `util` with some additional advantageous functions

Library home page: https://registry.npmjs.org/utile/-/utile-0.2.1.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/broadway/node_modules/utile/package.json,/node_modules/prompt/node_modules/utile/package.json,/node_modules/utile/package.json

Dependency Hierarchy:

  • forever-2.0.0.tgz (Root Library)
    • forever-monitor-2.0.0.tgz
      • broadway-0.3.6.tgz
        • โŒ utile-0.2.1.tgz (Vulnerable Library)

Found in HEAD commit: 23f8eedf0ad283373bb3f80d702928ab91a6e15c

Found in base branch: master

Vulnerability Details

The utile npm module, version 0.3.0, allows to extract sensitive data from uninitialized memory or to cause a DoS by passing in a large number, in setups where typed user input can be passed (e.g. from JSON).

Publish Date: 2018-07-16

URL: WS-2018-0148

CVSS 3 Score Details (7.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://nvd.nist.gov/vuln/detail/WS-2018-0148

Release Date: 2018-01-16

Fix Resolution: JetBrains.Rider.Frontend5 - 213.0.20211008.154703-eap03


Step up your Open Source Security Game with Mend here

CVE-2020-8116 (Medium) detected in dot-prop-4.2.0.tgz

CVE-2020-8116 - Medium Severity Vulnerability

Vulnerable Library - dot-prop-4.2.0.tgz

Get, set, or delete a property from a nested object using a dot path

Library home page: https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz

Path to dependency file: /tmp/ws-scm/Vulnogram/package.json

Path to vulnerable library: /tmp/ws-scm/Vulnogram/node_modules/dot-prop/package.json

Dependency Hierarchy:

  • nodemon-1.19.4.tgz (Root Library)
    • update-notifier-2.5.0.tgz
      • configstore-3.1.2.tgz
        • โŒ dot-prop-4.2.0.tgz (Vulnerable Library)

Found in HEAD commit: 85e45dad7614a3eb7d3396c770da9f67063f5dcc

Vulnerability Details

Prototype pollution vulnerability in dot-prop npm package version 5.1.0 and earlier allows an attacker to add arbitrary properties to JavaScript language constructs such as objects.

Publish Date: 2020-02-04

URL: CVE-2020-8116

CVSS 2 Score Details (5.0)

Base Score Metrics not available

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8116

Release Date: 2020-02-04

Fix Resolution: dot-prop - 5.1.1


Step up your Open Source Security Game with WhiteSource here

Provide "Basic", "Advanced", "Pro" modes.

Provide a tab named Basic that only shows the minimum required fields.

Provide a tab named Advanced that shows all the fields.

Provide a tab named Professional that points to full vulnogram server installation with a database backend to store JSONs.

Toggle between local timezone and UTC for public_date input

Issue #1 was fixed so that the date_public field is always converted from the client's local time zone to UTC. This should meet the needs of many users but I think there are likely a number of CNAs that use UTC for their internal database. It would be great if there was a way to toggle between local time and UTC when inputting the date_public value.

CVE5.0 it is bad pratice to hard code version numbers into tags...

CVSS record forat is:

        {
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ],
          "cvssV3_1": {
            "version": "3.1",
            "attackVector": "NETWORK",
            "attackComplexity": "LOW",
            "privilegesRequired": "LOW",
            "userInteraction": "NONE",
            "scope": "CHANGED",
            "confidentialityImpact": "LOW",
            "integrityImpact": "HIGH",
            "availabilityImpact": "NONE",
            "baseScore": 8.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N"
          }
        },

This means that when the CVSS version changes to e.g. v3.2 the tag changes as well, meaning I have to update the code that renders CVEs records on https:csirt.divd.nl.

Having a version number as part of a tag is generally considered bad practice.

Is this is not the correct place to discuss this, should I discuss it elsewhere?

Plot example

Could you please provide a plot example config.
Can not figure out how to use it.

Include timezone info for dates entered.

The DATE_PUBLIC field uses html5 datetime-local input to present the browser's inbuilt date picker. TZ information is not captured.

Suggested fix: gather browser's timezone info and include that in the exported JSON.

CVE-2020-28469 (High) detected in glob-parent-3.1.0.tgz

CVE-2020-28469 - High Severity Vulnerability

Vulnerable Library - glob-parent-3.1.0.tgz

Strips glob magic from a string to provide the parent directory path

Library home page: https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/forever-monitor/node_modules/glob-parent/package.json

Dependency Hierarchy:

  • forever-2.0.0.tgz (Root Library)
    • forever-monitor-2.0.0.tgz
      • chokidar-2.1.8.tgz
        • โŒ glob-parent-3.1.0.tgz (Vulnerable Library)

Found in HEAD commit: 23f8eedf0ad283373bb3f80d702928ab91a6e15c

Found in base branch: master

Vulnerability Details

This affects the package glob-parent before 5.1.2. The enclosure regex used to check for strings ending in enclosure containing path separator.

Publish Date: 2021-06-03

URL: CVE-2020-28469

CVSS 3 Score Details (7.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-28469

Release Date: 2021-06-03

Fix Resolution: glob-parent - 5.1.2


Step up your Open Source Security Game with WhiteSource here

CVE-2021-44906 (High) detected in minimist-0.0.10.tgz - autoclosed

CVE-2021-44906 - High Severity Vulnerability

Vulnerable Library - minimist-0.0.10.tgz

parse argument options

Library home page: https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/minimist/package.json,/node_modules/optimist/node_modules/minimist/package.json,/node_modules/flatiron/node_modules/minimist/package.json,/node_modules/broadway/node_modules/minimist/package.json

Dependency Hierarchy:

  • forever-2.0.0.tgz (Root Library)
    • forever-monitor-2.0.0.tgz
      • broadway-0.3.6.tgz
        • nconf-0.6.9.tgz
          • optimist-0.6.0.tgz
            • โŒ minimist-0.0.10.tgz (Vulnerable Library)

Found in HEAD commit: 23f8eedf0ad283373bb3f80d702928ab91a6e15c

Found in base branch: master

Vulnerability Details

Minimist <=1.2.5 is vulnerable to Prototype Pollution via file index.js, function setKey() (lines 69-95).

Publish Date: 2022-03-17

URL: CVE-2021-44906

CVSS 3 Score Details (9.8)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Release Date: 2022-03-17

Fix Resolution: minimist - 1.2.6


Step up your Open Source Security Game with Mend here

Package.json - typo?

Line 8 - node throws an error as written. I needed to add a space: between app.js and ;forever list

"start": "forever start --id 'vulnogram' --spinSleepTime 5000 --minUptime 2000 app.js;forever list",

"start": "forever start --id 'vulnogram' --spinSleepTime 5000 --minUptime 2000 app.js ;forever list",

WS-2020-0042 (High) detected in acorn-3.3.0.tgz, acorn-4.0.13.tgz

WS-2020-0042 - High Severity Vulnerability

Vulnerable Libraries - acorn-3.3.0.tgz, acorn-4.0.13.tgz

acorn-3.3.0.tgz

ECMAScript parser

Library home page: https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz

Path to dependency file: /tmp/ws-scm/Vulnogram/package.json

Path to vulnerable library: /tmp/ws-scm/Vulnogram/node_modules/acorn/package.json

Dependency Hierarchy:

  • pug-2.0.4.tgz (Root Library)
    • pug-code-gen-2.0.2.tgz
      • with-5.1.1.tgz
        • โŒ acorn-3.3.0.tgz (Vulnerable Library)
acorn-4.0.13.tgz

ECMAScript parser

Library home page: https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz

Path to dependency file: /tmp/ws-scm/Vulnogram/package.json

Path to vulnerable library: /tmp/ws-scm/Vulnogram/node_modules/acorn-globals/node_modules/acorn/package.json

Dependency Hierarchy:

  • pug-2.0.4.tgz (Root Library)
    • pug-lexer-4.1.0.tgz
      • is-expression-3.0.0.tgz
        • โŒ acorn-4.0.13.tgz (Vulnerable Library)

Found in HEAD commit: 578730176a6f9c5b1a229eb4258ae22285bef0fb

Vulnerability Details

acorn is vulnerable to REGEX DoS. A regex of the form /[x-\ud800]/u causes the parser to enter an infinite loop. attackers may leverage the vulnerability leading to a Denial of Service since the string is not valid UTF16 and it results in it being sanitized before reaching the parser.

Publish Date: 2020-03-08

URL: WS-2020-0042

CVSS 3 Score Details (7.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://www.npmjs.com/advisories/1488

Release Date: 2020-03-08

Fix Resolution: 7.1.1


Step up your Open Source Security Game with WhiteSource here

One-click to copy JSON to clipboard

The JSON output by Vulnogram is typically copy and pasted elsewhere such as a text editor, email client, etc. It would be nice if there was a single button to click in order to copy the JSON into the clipboard rather than having to highlight the JSON before copying it.

v4.0 CVE Records aren't valid if RESERVED is chosen

I'm using the current https://vulnogram.github.io form as of the
date/time of this issue.

I start with the "Minimal example needed for CVE [single entry]" text
from the
https://github.com/CVEProject/cve-schema/blob/master/schema/v4.0/DRAFT-JSON-file-format-v4.md
file.

I make one modification by adding:

   "STATE":"RESERVED",

immediately before the:

   "ID": "CVE-2005-4900",

line. I then click on Source near the top of the
https://vulnogram.github.io/#editor page, which navigates to the
https://vulnogram.github.io/#source page. I then cut the existing
text, and paste the text derived from the modified
DRAFT-JSON-file-format-v4.md example.

I then return to https://vulnogram.github.io/#editor and, on the STATE
line, near the top, RESERVED is highlighted in a gold color.

I then go to https://vulnogram.github.io/#mitre and it shows a CVE
description and references. This is not the expected UI experience,
because a v4.0 RESERVED CVE Record cannot have any references.

In practice, this issue is encountered when a Vulnogram user chooses
RESERVED accidentally, when they meant to choose PUBLIC. The resulting
JSON document is not valid. The Vulnogram UI does not have an
effective way to alert the user to this mistake.

make min target requires global install of uglifyjs

uglifyjs not listed as a dependency. I didn't have it on my machine. Since I'm running MacPorts, which advises me to only install npm modules locally, when I did install uglifyjs, the Makefile still didn't work. I had to explicitly add node_modules/bin to my path in order to get this to work.

Since I'm not a node / npm expert, there may be an easy way to get this to work, but I couldn't figure it out.

Dynamically update the page title with the CVE ID

I was using Vulnogram to prepare JSON for 3 different but related CVEs, at the same time, in separate browser tabs. It occurred to me that it would be very nice to have the title of the page dynamically updated by prepending the CVE ID.

To visualize, the current page title results in indistinguishable Vulnogram tabs:

+-----------------------------------------------------------------------------+
| Vulnogram CVE Editor | Vulnogram CVE Editor | Vulnogram CVE Editor | Google |
+-----------------------------------------------------------------------------+

I propose something like this (once the CVE ID is entered into the form):

+--------------------------------------------------------------------------------------------+
| CVE-2017-5753 - Vulnogram | CVE-2017-5715 - Vulnogram | CVE-2017-5754 - Vulnogram | Google |
+--------------------------------------------------------------------------------------------+

in 0.1.0, cveLogin requests /api/org/ with some web browsers

The "CVE Login" button seems to work fine with Firefox. With Chrome and Edge, even if the user has never previously visited the https://vulnogram.github.io/cve5 website and enters credentials for the first time, login fails with an "Error logging in: SECRETARIAT_ONLY" message. The browser (Chrome or Edge) is sending a GET request for the https://cveawg-test.mitre.org/api/org/ URL. Presumably it was supposed to be sending /api/org/ followed by the short name of the CNA, not /api/org/ alone. The use of /api/org/ occurs with released Chrome/Edge versions and even with the latest hourly Chromium build (version 101.0.4921.0 for 64-bit Windows).

CVE-2021-33502 (High) detected in normalize-url-4.5.0.tgz - autoclosed

CVE-2021-33502 - High Severity Vulnerability

Vulnerable Library - normalize-url-4.5.0.tgz

Normalize a URL

Library home page: https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/normalize-url/package.json

Dependency Hierarchy:

  • nodemon-2.0.7.tgz (Root Library)
    • update-notifier-4.1.3.tgz
      • latest-version-5.1.0.tgz
        • package-json-6.5.0.tgz
          • got-9.6.0.tgz
            • cacheable-request-6.1.0.tgz
              • โŒ normalize-url-4.5.0.tgz (Vulnerable Library)

Found in base branch: master

Vulnerability Details

The normalize-url package before 4.5.1, 5.x before 5.3.1, and 6.x before 6.0.1 for Node.js has a ReDoS (regular expression denial of service) issue because it has exponential performance for data: URLs.

Publish Date: 2021-05-24

URL: CVE-2021-33502

CVSS 3 Score Details (7.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-33502

Release Date: 2021-05-24

Fix Resolution (normalize-url): 4.5.1

Direct dependency fix Resolution (nodemon): 2.0.8-alpha.1


Step up your Open Source Security Game with WhiteSource here

Syntax error

XXXXXXXX:~/Vulnogram-0.0.6$ node scripts/useradd.js tester [email protected] Tester [email protected] 1
/home/a10/Vulnogram-0.0.6/scripts/useradd.js:48
let newUser = new User({
^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3


:~/Vulnogram-0.0.6$ make min
node scripts/standalone.js
undefined:925
var unique = [...new Set(docs.map(item => item[column]).reduce((a, b) => a.concat(b), []))];
^^^

SyntaxError: Unexpected token ...
at Function (native)
at wrap (/home/a10/Vulnogram-0.0.6/node_modules/pug-runtime/wrap.js:6:10)
at Object.exports.compile (/home/a10/Vulnogram-0.0.6/node_modules/pug/lib/index.js:262:7)
at handleTemplateCache (/home/a10/Vulnogram-0.0.6/node_modules/pug/lib/index.js:215:25)
at Object.exports.compileFile (/home/a10/Vulnogram-0.0.6/node_modules/pug/lib/index.js:356:10)
at Object. (/home/a10/Vulnogram-0.0.6/scripts/standalone.js:10:19)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
Makefile:11: recipe for target 'standalone/index.html' failed
make: *** [standalone/index.html] Error 1

CVE services login/logout can be be improved

Since the current CVE services only offer a token based authentication, the https://github.com/xdrr/cve.js/ library uses

  • the PasswordCredential API available in Chrome to store and retrieve the there params needed for CVE services (users, shortName, token) https://whatwebcando.today/credentials.html
  • an passphrase based encryption to securely store the credentials in localStorage on browsers (Safari and FireFox) that do not implement PasswordCredential.

Improvements needed

  • It currently uses the multiple browser prompts to collect these params. Instead use a single html dialog/form to collect these.
  • properly implement logout and timeout. Call navigator.credentials.preventSilentAccess()
  • The switch between production and test instances of CVE services need to be removed - but should be a configurable option i.e., build a separate Vulnogram standalone/serverless site for production vs test.
  • Make use of PasswordCredential iconURL
  • refactor the UI of the CVE Portal to provide better embedded login -> view or reserve IDs, or update records --> logout or timeout experience.

CVE-2017-16115 (High) detected in timespan-2.3.0.tgz

CVE-2017-16115 - High Severity Vulnerability

Vulnerable Library - timespan-2.3.0.tgz

A JavaScript TimeSpan library for node.js (and soon the browser)

Library home page: https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz

Path to dependency file: /tmp/ws-scm/Vulnogram/package.json

Path to vulnerable library: /tmp/ws-scm/Vulnogram/node_modules/timespan/package.json

Dependency Hierarchy:

  • forever-0.15.3.tgz (Root Library)
    • โŒ timespan-2.3.0.tgz (Vulnerable Library)

Found in HEAD commit: 85e45dad7614a3eb7d3396c770da9f67063f5dcc

Vulnerability Details

The timespan module is vulnerable to regular expression denial of service. Given 50k characters of untrusted user input it will block the event loop for around 10 seconds.

Publish Date: 2018-06-07

URL: CVE-2017-16115

CVSS 3 Score Details (7.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.


Step up your Open Source Security Game with WhiteSource here

CVE-2021-3807 (Medium) detected in ansi-regex-4.1.0.tgz, ansi-regex-2.1.1.tgz - autoclosed

CVE-2021-3807 - Medium Severity Vulnerability

Vulnerable Libraries - ansi-regex-4.1.0.tgz, ansi-regex-2.1.1.tgz

ansi-regex-4.1.0.tgz

Regular expression for matching ANSI escape codes

Library home page: https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz

Path to dependency file: Vulnogram/package.json

Path to vulnerable library: Vulnogram/node_modules/ansi-align/node_modules/ansi-regex/package.json

Dependency Hierarchy:

  • nodemon-2.0.12.tgz (Root Library)
    • update-notifier-4.1.3.tgz
      • boxen-4.2.0.tgz
        • ansi-align-3.0.0.tgz
          • string-width-3.1.0.tgz
            • strip-ansi-5.2.0.tgz
              • โŒ ansi-regex-4.1.0.tgz (Vulnerable Library)
ansi-regex-2.1.1.tgz

Regular expression for matching ANSI escape codes

Library home page: https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz

Path to dependency file: Vulnogram/package.json

Path to vulnerable library: Vulnogram/node_modules/ansi-regex/package.json

Dependency Hierarchy:

  • csso-cli-3.0.0.tgz (Root Library)
    • clap-1.2.3.tgz
      • chalk-1.1.3.tgz
        • has-ansi-2.0.0.tgz
          • โŒ ansi-regex-2.1.1.tgz (Vulnerable Library)

Found in HEAD commit: 23f8eedf0ad283373bb3f80d702928ab91a6e15c

Vulnerability Details

ansi-regex is vulnerable to Inefficient Regular Expression Complexity

Publish Date: 2021-09-17

URL: CVE-2021-3807

CVSS 3 Score Details (5.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: N/A
    • Attack Complexity: N/A
    • Privileges Required: N/A
    • User Interaction: N/A
    • Scope: N/A
  • Impact Metrics:
    • Confidentiality Impact: N/A
    • Integrity Impact: N/A
    • Availability Impact: N/A

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://huntr.dev/bounties/5b3cf33b-ede0-4398-9974-800876dfd994/

Release Date: 2021-09-17

Fix Resolution: ansi-regex - 5.0.1,6.0.1


Step up your Open Source Security Game with WhiteSource here

allow x_ tags

Currently the select2 integration does not allow x_ tags or auto splitting on comma separated input.
UI should enable custom tags, or it fails when JSON contains x_ tags.
If this is done, it can replace the rudimentary taglist custom editor in editor.js, allowing better input fields that require array of strings.

Replace the rich-text-editor

The current rich-text editor wysihtml5, hasn't been updated since 6 years and has some known issues. It is about 500kb and throws errors on the javascript console.

A replacement should meet these requirements:

  1. Only allow some predefined list of tags (like a, b, i, table, p, img ...) and some essential attributes like href.
  2. When rich-text content is pasted, or drag-dropped, it should only preserve the allowed tags and attributes, and drop fonts, colors, sizes etc.,
  3. should be small and fast loading
  4. Should be able to set or get html value
  5. Free or open source license
  6. Allowing simultaneous collaborative editing would be a plus

Potential candidates to consider
https://tiptap.dev/
https://github.com/microsoft/roosterjs

CVE5.0 CWE vs cepec

JSON format ofCWE is

      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "cweId": "CWE-129",
              "description": "CWE-129 Improper Validation of Array Index",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "lang": "en",
              "cweId": "CWE-77",
              "description": "CWE-77 Improper Neutralization of Special Elements used in a Command ('Command Injection')",
              "type": "CWE"
            }
          ]
        }
      ],

But capec is:

      "impacts": [
        {
          "capecId": "CAPEC-102",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-102 Session Sidejacking"
            }
          ]
        },
        {
          "capecId": "CAPEC-107",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-107 Cross Site Tracing"
            }
          ]
        }
      ],

Since cweId and type are not language specific, shouldn't they be outside the descriptions array?

Default timestamp of 00:00:00 UTC

A few times I've selected a public date and did not fully select time, so vulnogram did not write out DATE_PUBLIC. I figured out my mistake, but perhaps set a default time of 00:00:00 UTC, I suspect that many disclosure date to not have hour resolution. Nice to have/low priority!

CVE-2020-7598 (Medium) detected in minimist-0.0.10.tgz - autoclosed

CVE-2020-7598 - Medium Severity Vulnerability

Vulnerable Library - minimist-0.0.10.tgz

parse argument options

Library home page: https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/minimist/package.json,/node_modules/optimist/node_modules/minimist/package.json,/node_modules/flatiron/node_modules/minimist/package.json,/node_modules/broadway/node_modules/minimist/package.json

Dependency Hierarchy:

  • forever-2.0.0.tgz (Root Library)
    • forever-monitor-2.0.0.tgz
      • broadway-0.3.6.tgz
        • nconf-0.6.9.tgz
          • optimist-0.6.0.tgz
            • โŒ minimist-0.0.10.tgz (Vulnerable Library)

Found in HEAD commit: 23f8eedf0ad283373bb3f80d702928ab91a6e15c

Found in base branch: master

Vulnerability Details

minimist before 1.2.2 could be tricked into adding or modifying properties of Object.prototype using a "constructor" or "proto" payload.

Publish Date: 2020-03-11

URL: CVE-2020-7598

CVSS 3 Score Details (5.6)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: Low
    • Integrity Impact: Low
    • Availability Impact: Low

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Release Date: 2020-03-11

Fix Resolution: minimist - 0.2.1,1.2.3


Step up your Open Source Security Game with Mend here

CVE-2021-23438 (High) detected in mpath-0.8.3.tgz

CVE-2021-23438 - High Severity Vulnerability

Vulnerable Library - mpath-0.8.3.tgz

{G,S}et object values using MongoDB-like path notation

Library home page: https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz

Path to dependency file: /package.json

Path to vulnerable library: /node_modules/mpath/package.json

Dependency Hierarchy:

  • mongoose-5.12.2.tgz (Root Library)
    • โŒ mpath-0.8.3.tgz (Vulnerable Library)

Found in base branch: master

Vulnerability Details

This affects the package mpath before 0.8.4. A type confusion vulnerability can lead to a bypass of CVE-2018-16490. In particular, the condition ignoreProperties.indexOf(parts[i]) !== -1 returns -1 if parts[i] is ['proto']. This is because the method that has been called if the input is an array is Array.prototype.indexOf() and not String.prototype.indexOf(). They behave differently depending on the type of the input.

Publish Date: 2021-09-01

URL: CVE-2021-23438

CVSS 3 Score Details (9.8)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23438

Release Date: 2021-09-01

Fix Resolution: mpath - 0.8.4


Step up your Open Source Security Game with WhiteSource here

opening stand-alone index.html doesn't work

Browser blocks the CORS requests if index.html is opened with file://... . Suggest updating the README.md to indicate that the standalone site must be run from a web browser, and will not work from a file:// URL.

For example, from the "standalone" folder:
$>python -m SimpleHTTPServer

... then browse to http://localhost:8000

Handling of "versionType" field for single versions

Vulnogram currently allows to provide a "versionType" for single versions (vs. version ranges).
Example:

      "affected": [
        {
          "vendor": "Example Company",
          "product": "Example Product",
          "versions": [
            {
              "status": "affected",
              "version": "1.2.3",
              "versionType": "custom"
            }
          ],
          "defaultStatus": "unaffected"
        }
      ]

According to the CVE JSON 5.0 schema, this is actually prohibited and JSON schema validators will complain: https://github.com/CVEProject/cve-schema/blob/1e12cfbccbe876b2d6966fb7d6b3ca38eb1aea89/schema/v5.0/CVE_JSON_5.0_schema.json#L283-L284

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.