Skip to content

Add secondary ID to nodeJS scan mappings

What does this MR do?

tldr; Add secondary ID to nodeJS scan and release nodeJS ruleset.

The primary ID of a NodeJS Scan vulnerability is the description of the rule. An example of that is NodeJS Scan vulnerability

https://gitlab.com/gitlab-org/security-products/analyzers/nodejs-scan/-/blob/8e40da21ebbdacc8f61b06ef3043c828b35b597e/qa/expect/default/gl-sast-report.json#L23

        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },

So that NodeJS findings can be taken over by semgrep, the nodejs rules in sast-rules must have a secondary identifier that matches the primary identifier of the original scanner (NodeJS Scan). This is problematic because currently, the secondary identifier is set using the native_id in the mapping file and the ID of the rule. For this to work for NodeJS Scan, the ID in the mapping file would need to be the description. Using the description as the ID is cumbersome and could introduce unexpected errors, especially in cases where the description is very long.

This MR addresses the problem by adding an option secondary_id field to the mapping file. When this field is set, the secondary_id value in the dist file is set to that.

You may notice that the secondary_ids in mappings/nodejs_scan.yml don't always match the description of the rule. This is because in some cases, the rules have been updated and the description changed, however the secondary id should still match the description of the original rule, so the secondary id values comes from the descriptions of the ruleset when they were originally added in !204 (merged)

Testing

This version of sast-rules has been released in https://gitlab.com/gitlab-org/security-products/sast-rules/-/packages/23933406 and installed into registry.gitlab.com/gitlab-org/security-products/analyzers/semgrep/tmp:c29ea7bac7544e1c0bd17a319d617bfb3a48156b, which was created using gitlab-org/security-products/analyzers/semgrep!381 (closed). A testing project was then created which copies the contents of https://gitlab.com/gitlab-org/security-products/tests/sast-rules-apps/javascript-web-apps, which is used by VR for testing Javascript vulnerabilities. Both semgrep and NodeJS scan were then run on the project to ensure semgrep took over the vulnerabilities.

The generated gl-sast-report.json where:

Semgrep Report
{
  "version": "15.0.7",
  "vulnerabilities": [
    {
      "id": "1b33875d314836b1be2941ba1cb6bb710008a6c2627eaa2ade1cc518d232fef3",
      "category": "sast",
      "name": "Use of cryptographically weak pseudo-random number generator (PRNG)",
      "description": "This rule identifies use of cryptographically weak random number generators.\nUsing cryptographically weak random number generators like `crypto.pseudoRandomBytes()` \nand `Math.random()` for security-critical tasks can expose systems to significant \nvulnerabilities. Attackers might predict the generated random numbers, compromising \nthe integrity and confidentiality of cryptographic operations. This could lead to \nbreaches where sensitive data is accessed or manipulated, authentication mechanisms \nare bypassed, or secure communications are intercepted, ultimately undermining the \nsecurity of the entire system or application.\n\nMitigation strategy:\nReplace the use of these cryptographically weak random number generators with \n`crypto.randomBytes()`, a method provided by Node.js's `crypto` module that \ngenerates cryptographically secure random numbers. This method should be used \nfor all operations requiring secure randomness, such as generating keys, tokens, \nor any cryptographic material.\n\nSecure Code Example:\n```\nconst crypto = require('crypto');\nconst secureBytes = crypto.randomBytes(256);\nconsole.log(`Secure random bytes: ${secureBytes.toString('hex')}`);\n```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_insecure_random_generator:15:15",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 15
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator",
          "value": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator"
        },
        {
          "type": "cwe",
          "name": "CWE-338",
          "value": "338",
          "url": "https://cwe.mitre.org/data/definitions/338.html"
        },
        {
          "type": "owasp",
          "name": "A02:2021 - Cryptographic Failures",
          "value": "A02:2021"
        },
        {
          "type": "owasp",
          "name": "A03:2017 - Sensitive Data Exposure",
          "value": "A03:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 15,
            "line_end": 15,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testMathRandom[0]:1"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testMathRandom[0]:2"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "54d74adb0ffcd061d4cbedede28b80a288dd7d21332fb6339384658c9e2085f8",
      "category": "sast",
      "name": "Use of cryptographically weak pseudo-random number generator (PRNG)",
      "description": "This rule identifies use of cryptographically weak random number generators.\nUsing cryptographically weak random number generators like `crypto.pseudoRandomBytes()` \nand `Math.random()` for security-critical tasks can expose systems to significant \nvulnerabilities. Attackers might predict the generated random numbers, compromising \nthe integrity and confidentiality of cryptographic operations. This could lead to \nbreaches where sensitive data is accessed or manipulated, authentication mechanisms \nare bypassed, or secure communications are intercepted, ultimately undermining the \nsecurity of the entire system or application.\n\nMitigation strategy:\nReplace the use of these cryptographically weak random number generators with \n`crypto.randomBytes()`, a method provided by Node.js's `crypto` module that \ngenerates cryptographically secure random numbers. This method should be used \nfor all operations requiring secure randomness, such as generating keys, tokens, \nor any cryptographic material.\n\nSecure Code Example:\n```\nconst crypto = require('crypto');\nconst secureBytes = crypto.randomBytes(256);\nconsole.log(`Secure random bytes: ${secureBytes.toString('hex')}`);\n```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_insecure_random_generator:21:21",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 21
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator",
          "value": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator"
        },
        {
          "type": "cwe",
          "name": "CWE-338",
          "value": "338",
          "url": "https://cwe.mitre.org/data/definitions/338.html"
        },
        {
          "type": "owasp",
          "name": "A02:2021 - Cryptographic Failures",
          "value": "A02:2021"
        },
        {
          "type": "owasp",
          "name": "A03:2017 - Sensitive Data Exposure",
          "value": "A03:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 21,
            "line_end": 21,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:1"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:2"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "3236ae79e2cfa8ab5d1424033f1273e3950d8c8e5986ff576c5fbeef25416354",
      "category": "sast",
      "name": "Use of cryptographically weak pseudo-random number generator (PRNG)",
      "description": "Depending on the context, generating weak random numbers may expose cryptographic functions,\nwhich rely on these numbers, to be exploitable. When generating numbers for sensitive values\nsuch as tokens, nonces, and cryptographic keys, it is recommended that the `randomBytes` method\nof the `crypto` module be used instead of `pseudoRandomBytes`.\n\nExample using `randomBytes`:\n```\n// Generate 256 bytes of random data\nconst randomBytes = crypto.randomBytes(256);\n```\n\nFor more information on JavaScript Cryptography see:\nhttps://nodejs.org/api/crypto.html#cryptorandombytessize-callback\n",
      "cve": "semgrep_id:eslint.detect-pseudoRandomBytes:27:27",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 27
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-pseudoRandomBytes",
          "value": "eslint.detect-pseudoRandomBytes",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-pseudoRandomBytes"
        },
        {
          "type": "cwe",
          "name": "CWE-338",
          "value": "338",
          "url": "https://cwe.mitre.org/data/definitions/338.html"
        },
        {
          "type": "owasp",
          "name": "A02:2021 - Cryptographic Failures",
          "value": "A02:2021"
        },
        {
          "type": "owasp",
          "name": "A3:2017 - Sensitive Data Exposure",
          "value": "A3:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-pseudoRandomBytes",
          "value": "detect-pseudoRandomBytes"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 27,
            "line_end": 27,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:4"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:8"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "188832ead6160fc10700777a7ed224ac437f08eac636f3ed80f6209259c1aed1",
      "category": "sast",
      "name": "Use of cryptographically weak pseudo-random number generator (PRNG)",
      "description": "This rule identifies use of cryptographically weak random number generators.\nUsing cryptographically weak random number generators like `crypto.pseudoRandomBytes()` \nand `Math.random()` for security-critical tasks can expose systems to significant \nvulnerabilities. Attackers might predict the generated random numbers, compromising \nthe integrity and confidentiality of cryptographic operations. This could lead to \nbreaches where sensitive data is accessed or manipulated, authentication mechanisms \nare bypassed, or secure communications are intercepted, ultimately undermining the \nsecurity of the entire system or application.\n\nMitigation strategy:\nReplace the use of these cryptographically weak random number generators with \n`crypto.randomBytes()`, a method provided by Node.js's `crypto` module that \ngenerates cryptographically secure random numbers. This method should be used \nfor all operations requiring secure randomness, such as generating keys, tokens, \nor any cryptographic material.\n\nSecure Code Example:\n```\nconst crypto = require('crypto');\nconst secureBytes = crypto.randomBytes(256);\nconsole.log(`Secure random bytes: ${secureBytes.toString('hex')}`);\n```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_insecure_random_generator:27:27",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 27
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator",
          "value": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator"
        },
        {
          "type": "cwe",
          "name": "CWE-338",
          "value": "338",
          "url": "https://cwe.mitre.org/data/definitions/338.html"
        },
        {
          "type": "owasp",
          "name": "A02:2021 - Cryptographic Failures",
          "value": "A02:2021"
        },
        {
          "type": "owasp",
          "name": "A03:2017 - Sensitive Data Exposure",
          "value": "A03:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 27,
            "line_end": 27,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:4"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:8"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "a742fccbcc7e6e6c46445f1ae4e9cb659070cade86fcf88e58ac351f732485b8",
      "category": "sast",
      "name": "Use of cryptographically weak pseudo-random number generator (PRNG)",
      "description": "Depending on the context, generating weak random numbers may expose cryptographic functions,\nwhich rely on these numbers, to be exploitable. When generating numbers for sensitive values\nsuch as tokens, nonces, and cryptographic keys, it is recommended that the `randomBytes` method\nof the `crypto` module be used instead of `pseudoRandomBytes`.\n\nExample using `randomBytes`:\n```\n// Generate 256 bytes of random data\nconst randomBytes = crypto.randomBytes(256);\n```\n\nFor more information on JavaScript Cryptography see:\nhttps://nodejs.org/api/crypto.html#cryptorandombytessize-callback\n",
      "cve": "semgrep_id:eslint.detect-pseudoRandomBytes:31:31",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 31
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-pseudoRandomBytes",
          "value": "eslint.detect-pseudoRandomBytes",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-pseudoRandomBytes"
        },
        {
          "type": "cwe",
          "name": "CWE-338",
          "value": "338",
          "url": "https://cwe.mitre.org/data/definitions/338.html"
        },
        {
          "type": "owasp",
          "name": "A02:2021 - Cryptographic Failures",
          "value": "A02:2021"
        },
        {
          "type": "owasp",
          "name": "A3:2017 - Sensitive Data Exposure",
          "value": "A3:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-pseudoRandomBytes",
          "value": "detect-pseudoRandomBytes"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 31,
            "line_end": 31,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:6"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:12"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "13a024e231ea329f5cb92278b608cfa3e9b3be748c950798ce105a7d93e9117c",
      "category": "sast",
      "name": "Use of cryptographically weak pseudo-random number generator (PRNG)",
      "description": "This rule identifies use of cryptographically weak random number generators.\nUsing cryptographically weak random number generators like `crypto.pseudoRandomBytes()` \nand `Math.random()` for security-critical tasks can expose systems to significant \nvulnerabilities. Attackers might predict the generated random numbers, compromising \nthe integrity and confidentiality of cryptographic operations. This could lead to \nbreaches where sensitive data is accessed or manipulated, authentication mechanisms \nare bypassed, or secure communications are intercepted, ultimately undermining the \nsecurity of the entire system or application.\n\nMitigation strategy:\nReplace the use of these cryptographically weak random number generators with \n`crypto.randomBytes()`, a method provided by Node.js's `crypto` module that \ngenerates cryptographically secure random numbers. This method should be used \nfor all operations requiring secure randomness, such as generating keys, tokens, \nor any cryptographic material.\n\nSecure Code Example:\n```\nconst crypto = require('crypto');\nconst secureBytes = crypto.randomBytes(256);\nconsole.log(`Secure random bytes: ${secureBytes.toString('hex')}`);\n```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_insecure_random_generator:31:34",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 31,
        "end_line": 34
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator",
          "value": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator"
        },
        {
          "type": "cwe",
          "name": "CWE-338",
          "value": "338",
          "url": "https://cwe.mitre.org/data/definitions/338.html"
        },
        {
          "type": "owasp",
          "name": "A02:2021 - Cryptographic Failures",
          "value": "A02:2021"
        },
        {
          "type": "owasp",
          "name": "A03:2017 - Sensitive Data Exposure",
          "value": "A03:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 31,
            "line_end": 31,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:6"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:12"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "b02dcf9a4b49486bc983018fd41838690c00fe1434ab5fa4f1eec29e6a5003ac",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-crypto-rule-node_md5",
      "description": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_md5:25:25",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestMD5Hash.js",
        "start_line": 25
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_md5",
          "value": "nodejs_scan.javascript-crypto-rule-node_md5"
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "327",
          "url": "https://cwe.mitre.org/data/definitions/327.html"
        },
        {
          "type": "owasp",
          "name": "A9:2017 - Using Components with Known Vulnerabilities",
          "value": "A9:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_md5",
          "value": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestMD5Hash.js",
            "line_start": 25,
            "line_end": 25,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:3"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:4"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "331e7c425ddd8e5564eb34cbc99f11c1c81363e11b0329c898751b033e6a8d93",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-crypto-rule-node_md5",
      "description": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_md5:29:30",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestMD5Hash.js",
        "start_line": 29,
        "end_line": 30
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_md5",
          "value": "nodejs_scan.javascript-crypto-rule-node_md5"
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "327",
          "url": "https://cwe.mitre.org/data/definitions/327.html"
        },
        {
          "type": "owasp",
          "name": "A9:2017 - Using Components with Known Vulnerabilities",
          "value": "A9:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_md5",
          "value": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestMD5Hash.js",
            "line_start": 29,
            "line_end": 29,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:5"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:8"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "8a5d73ebc2d4fbe5ed589d15951dfb58d17b73e698c1dabafca3ae49f455856b",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-crypto-rule-node_md5",
      "description": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-crypto-rule-node_md5:37:37",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "commandline/test-classes/TestMD5Hash.js",
        "start_line": 37
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-crypto-rule-node_md5",
          "value": "nodejs_scan.javascript-crypto-rule-node_md5"
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "327",
          "url": "https://cwe.mitre.org/data/definitions/327.html"
        },
        {
          "type": "owasp",
          "name": "A9:2017 - Using Components with Known Vulnerabilities",
          "value": "A9:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-crypto-rule-node_md5",
          "value": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function."
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestMD5Hash.js",
            "line_start": 37,
            "line_end": 37,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:8"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:16"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "2697b7ba231a664dbff9c4ab936a01ee6b216c8b1174b9b64731ea6f5accf380",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:21:23",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-express.js",
        "start_line": 21,
        "end_line": 23
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "0add11a5da7068b13eaecb74860ecf4e98f2b331685732b380b0ac61853b7029",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:7:9",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-express.js",
        "start_line": 7,
        "end_line": 9
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "c5cfd31dc997255d264a10353492d1254c7d318151c7f2fd76dbfdb394d5cb7f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:10:11",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 10,
        "end_line": 11
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "78421b8364d52b2e0e1fcfc0df99aee9dca6d3090ff618f177cf1d424bc8231e",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:10:10",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 10
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "3c372bac7dfea0895557af4983269605b61d3f7764345424cd16fb4441afbd25",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:18:18",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 18
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "1a57939d87c016de10e4952fb08043393894afd1334094b4b205466ea9294742",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:19:20",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 19,
        "end_line": 20
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "edc383a30135f9c2f1e7312d1798059432c95afcecaa67029b3c723bed9d62a2",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:28:28",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 28
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "67241a5f3717b08863e6d377f99eae6bcf0b721660ff490f254043d07bb4b41b",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:29:30",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 29,
        "end_line": 30
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "4f08b0ca3f8396a85ae6f39746c49ccaa1b29b102dc71a047f4e4dca838e1184",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:37:38",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 37,
        "end_line": 38
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "073cdbc203449d85e9977f8345e3f59f1d984ba1b1a950802c9c92413595a7eb",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:45:46",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 45,
        "end_line": 46
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "eec80e9144cad921c316f7309033b9b024726cb3b6320c9d7d53ee9df1dac33d",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:63:64",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 63,
        "end_line": 64
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "a5f4066dfb4d8e9b929b2f192db9137b1c4509ea65fc31d54647192c272f4a10",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:72:72",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 72
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "76d203287c1ea167cb56789246fd84f577cbe08c7ad0297aec5067347562b9d5",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-xss_serialize_javascript",
      "description": "This application is serializing Javascript objects with vulnerable \nconfigurations by setting `{unsafe: true}` in serialize-javascript. \n\nThis could lead to Cross Site Scripting (XSS) if the input was malicious \nscript code and the application server is not properly validating the output.\n\n```\n// safe use of serialize-javascript\nconst jsObj = serialize({\n  foo: htmlResponse\n  }\n);\n```\n\nXSS is an attack which exploits a web application or system to treat user input as markup or script code. \nIt is important to encode the data depending on the specific context it is used in. \n\nBy default, serialize-javascript encodes input values to prevent XSS attacks. \nConsider using serialize-javascript with default settings or set `{unsafe: false}` to encode\ninput data.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-xss_serialize_javascript:10:12",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 10,
        "end_line": 12
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-xss_serialize_javascript",
          "value": "nodejs_scan.javascript-xss-rule-xss_serialize_javascript"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A01:2017 - Injection",
          "value": "A01:2017"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-xss_serialize_javascript",
          "value": "Untrusted user input reaching `serialize-javascript` with `unsafe` attribute can cause Cross Site Scripting (XSS)."
        }
      ]
    },
    {
      "id": "4d5d37079c0a1dfc715a1611e9e2a6355a365af60998442278ac083e235e152d",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:18:23",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 18,
        "end_line": 23
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "fed48d9cfd3922b434bb7e380f30f066bc4f1f9eb9b3149590133c42dd2e6889",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:28:33",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 28,
        "end_line": 33
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "dc64c580741414cbdd3c28137c055bb5a635130f7e15b3057e82a39ea6ddf53f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:8:13",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 8,
        "end_line": 13
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "3d881e82716f43cd7963babdc49a4019048b95ba657217ef91aa651bf5c0a051",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-squirrelly_autoescape",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-squirrelly_autoescape:10:10",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 10
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-squirrelly_autoescape",
          "value": "nodejs_scan.javascript-xss-rule-squirrelly_autoescape"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-squirrelly_autoescape",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        }
      ]
    },
    {
      "id": "5f86b6991de3dd17864fe17e2ae4189e6db81ffb8bef288adb2a06bc554c0d91",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:11:11",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 11
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "2a71dc5c12b560bc665a0274241bbffac512ca1ec533e32b777e2ddee8978bba",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:19:19",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 19
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "eb06eee1d878f732f9c68fae2015c9657a6463281aac524cde47a33849eaa211",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:26:26",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 26
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "cc4c8497d3bb361c275d4c9cd2e99a91f74178400ca503d855cca6df784140a2",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:16:17",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 16,
        "end_line": 17
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "c512593c55c627e71acc515d98e185359c1a088bba1c4f5313ef6ee0ca68d816",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_safestring",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_safestring:16:16",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 16
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_safestring",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_safestring"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_safestring",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        }
      ]
    },
    {
      "id": "1fc7a488bb9bf341323782499391bbc0ce1e2f7b47152157d9b8fdb0d5f520dc",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:9:10",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 9,
        "end_line": 10
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "d1effa505c9f3aeae3d221ccb21b0a2b1e104b031203b1a482f98948ab2b06b7",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_safestring",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_safestring:9:9",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 9
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_safestring",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_safestring"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_safestring",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        }
      ]
    },
    {
      "id": "512200c5b1cb9f7b8abfa4d5ea584005e3fafdd06f87d8430d7e6bf54c9de61e",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:17:36",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 17,
        "end_line": 36
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "2fa41f7dc559644c3c9c8b717984c3454d49de3fe43dd4300f9ba397396c852f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:43:57",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 43,
        "end_line": 57
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "e7540c0d424a4e1fdf61e273b6ae2f36a9560c13f51980e520fc22c912706b83",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:44:57",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 44,
        "end_line": 57
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "f083b4239a67ad41d02df1299adc6acf3ea92a3e88eccc0c40d1190580e3fa2e",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:64:79",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 64,
        "end_line": 79
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "9ff00fccb1a0fc4d0bfed73eea8f00672607bbb159df00cac4a04a69e8dd4c68",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:17:17",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 17
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "b33b3c6e1a5105a29dfd95b5206aba6f5f3f1da7b7b51133db109a0375d8be08",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:218:218",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 218
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "2defe68cc44a2dae5b94a6720203024a4d398f03f9eb4e68e0164780de003f94",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:31:31",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 31
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "eb3941d8f480b214941b7d1618c00b517683d6022f64968b1345558080b2fda6",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:37:37",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 37
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "2aa377d938602c05c6a533c7068b02459e489dea416ee77a8da6eb8a5aef7d78",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:42:42",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 42
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "64cc87c2522e0775fe7eda33e8cd217b784976e796ca5a762dbc790dd2db463d",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:48:48",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 48
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "fb1bb127a317b02595a0001d10f440acf4cb6b3c73560368f06925be1e3f9804",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:56:56",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 56
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "d5eabf7d35b8b3d7ba535e38c5d7b9fca2ea5a5b346c82b8505fdd3fd07f99e5",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:62:66",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 62,
        "end_line": 66
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "13808816c7b05ae795e72139d845022176310d9f89bc3fab95257e6b55f4ff54",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:72:72",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 72
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "7710bb5822d99e7b73dd17aa78a39b66516ebba99bae23893d2dbf4ce8fab039",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:79:79",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 79
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "c91805daf4ae305696eb3604eec8864324fafa3a6f69dd66dbe74a1ef2b40ccd",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n         res.redirect(url);\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect:85:85",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 85
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "cd97a06a31d0a1d44b83d3ed43824603c85195f78615f89edbc3c5bae3a3be1b",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:100:100",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 100
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "0d43361445ede8f571e6156d4901c61d4a4457489f5d3635a6bdbb3d2493b963",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:111:111",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 111
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "5c19149e884375c99f5624d931bcc4b651ed1cb9eda88d9afa80fd343375a7c8",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:133:133",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 133
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "fb89bfae84ac44fa97e93bf886b904860a51e65da7c08916079f09fefba38719",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:140:140",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 140
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "dcc42312d313a8482907059e8e3586c51edc2864ccb6bb2585c378fc9a8cdde2",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:146:148",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 146,
        "end_line": 148
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "fcfc4cfd5a0df0ced12af60791eac9ca8eb1c082ccae71baceee810921a0fea7",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:156:156",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 156
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "709bd373095e34ac0f2bede47696c34a49218ed2d018324c8cbb5c72d68f0030",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:162:162",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 162
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "2fbad198f9a1e0878035a67e71c3f9e8cc2463b02956533b50728304673e7a12",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:17:17",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 17
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "d5b18008460b137bd6131c53f9675d49f722bd62a10fe6a49a86d7057c6e0221",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:266:266",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 266
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "d376c3c815b725436cce713fa05a5e988ee531cdb6b638d9d9e0ce75d6b34681",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:27:27",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 27
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "74c4fbfef1f8e3c4911d0d5010c2a0e0b69e1a8d92a4dda80fe350843f58c3c8",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-headers-rule-generic_header_injection",
      "description": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-headers-rule-generic_header_injection:345:350",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 345,
        "end_line": 350
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-headers-rule-generic_header_injection",
          "value": "nodejs_scan.javascript-headers-rule-generic_header_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-644",
          "value": "644",
          "url": "https://cwe.mitre.org/data/definitions/644.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-headers-rule-generic_header_injection",
          "value": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks."
        }
      ]
    },
    {
      "id": "5471eff364fbc84824616257bc204e1f138d5e4f71892a1edfe6d82d7e9596f0",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:37:37",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 37
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "6e1326dc2797f2b961c5611ecc7340f3bea5a114698a7a4f234a087597bcd7de",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:44:44",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 44
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "ceccd570e34df174b17c3fdacdae3f1799abcf66c0249cbc2a288f7e97c11c7b",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:51:51",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 51
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "d8ab1c370c62cf232f54748f82407fbd27f1381f22054845fbb418ff813392cd",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:59:59",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 59
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "c9e6894031e4027a961d3d570880710d04d690b4da751a3ffa41618207d45b44",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:67:67",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 67
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "90c6a20efaf0bd917941b9b29754ab13b4cc1aea5fc63b638f3a92a3fd9e06d6",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-headers-rule-generic_header_injection",
      "description": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-headers-rule-generic_header_injection:74:74",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 74
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-headers-rule-generic_header_injection",
          "value": "nodejs_scan.javascript-headers-rule-generic_header_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-644",
          "value": "644",
          "url": "https://cwe.mitre.org/data/definitions/644.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-headers-rule-generic_header_injection",
          "value": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks."
        }
      ]
    },
    {
      "id": "b29b39153741a95a9e408a3698bea5ab8f06ba78c91f8b025b4905406b554d2e",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:74:74",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 74
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "19c16d6e87d0deb33fe8deea21af011bfd812b2d8484af0239d1e023dada55ba",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:81:81",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 81
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "3798a96107c6e4804ab6a6fe8def93bd843e6f62a609e92c0e265db918a91503",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:87:87",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 87
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "af5705478e85c696f1d345ce91fbaf290484c375be86657b43663e32b4c4f6fd",
      "category": "sast",
      "name": "URL redirection to untrusted site 'open redirect'",
      "description": "Passing untrusted user input in `redirect()` can result in an open redirect\nvulnerability. This could be abused by malicious actors to trick users into \nbeing redirected to websites under their control to capture authentication\ninformation.  \nTo prevent open redirect vulnerabilities:\n\n- Always validate and sanitize user inputs, especially URL parameters\n or query strings that may influence the flow of the application.\n- Use allowlists (lists of permitted URLs) to validate redirect targets \n against known, trusted URLs before performing the redirect.\n- Avoid directly using user input for redirecting. If unavoidable, ensure\n strict validation against an allowlist.\n\nFollowing is an example of secure validation against allowlist to prevent the vulnerability:\n ```\n // Define a list of explicitly allowed URLs for redirection\n const allowedUrls = [\n     'https://www.example.com/page1',\n     'https://www.example.com/page2',\n     'https://secure.example.com/page3'\n ];\n\n app.get('/redirect/:url', (req, res) =\u003e {\n     const url = decodeURIComponent(req.params.url);\n     const isAllowed = allowedUrls.includes(url);\n     if (isAllowed) {\n         // If the URL is allowed, proceed with the redirect\n          res.location(url).status(302).end();\n     } else {\n         res.status(400).send('Invalid redirect URL');\n     }\n });\n ```\n",
      "cve": "semgrep_id:nodejs_scan.javascript-redirect-rule-express_open_redirect2:93:93",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 93
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
          "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "601",
          "url": "https://cwe.mitre.org/data/definitions/601.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-redirect-rule-express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        }
      ]
    },
    {
      "id": "66a1b540829d07798b00eb83842cc793e96c523afbea43374f1ee7aed55b022b",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:16:17",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/pg_injection.js",
        "start_line": 16,
        "end_line": 17
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "cdc765a543c8fa427f89dad1d001561dacb9d64fdebe33b65250fba413853667",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:35:38",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/pg_injection.js",
        "start_line": 35,
        "end_line": 38
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "8f1bcb4d779efeebcf5a6e7fa048924fd104e9275ec40dcfdb0924fa1ab67af0",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:121:123",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 121,
        "end_line": 123
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "021f9e16a8548e059ddd4678721950b3c700f0bfa82435fef86eadb6d77840d7",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:127:129",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 127,
        "end_line": 129
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "81264555857595f966d73d16cbbfe478c4db48220a3e596f8a9bafc3d79b557c",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:146:148",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 146,
        "end_line": 148
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "57c341cfb3bf521957cbfc7345b88a2fd8fcfd662573ed9929863cdd8598df98",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:25:25",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 25
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "db64c227ab08c77775929c6f46321d039bbc0c96c240f2314c33f7fc586ff9b6",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:35:35",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 35
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "779648108ac930d36e20281fad0123923333bf2d10b50d985f7477abd2754c18",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:40:40",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 40
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "fb19cd76163e918968bcd9d72b14a4ce827d4a2e80e829bf50eec4ada64cc585",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:49:49",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 49
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "db6044ce613c111563e64684ad8d91c77e7def47c4f7896863f4d683ac6eee5f",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:53:54",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 53,
        "end_line": 54
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "52076e5a4345edb590f1f123ab4c00012a35b2055767e6a52cdf162b75812cd5",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:57:57",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 57
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "d99d8c00338eb245b26852f694835a0becd30a100e7e7735ac38b67f8b2b5eba",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:6:6",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 6
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "666cd41f4b4fec95e4146ab93b4572ceac623d7b806ff89eaea7873d974cc5a3",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:62:62",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 62
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "f4949d858f4a261648705836ea0bc411fcee25bbffdf72f3ef169cd642f0ae3c",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:66:66",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 66
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "ff1f45d6959af0d280c55b1bc14adafcbcc68e0599bd4c44202fbc7e88dda4b0",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:74:74",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 74
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "8d4276cd972c3875f5853b6f81e4f5c033c683aeb4785e60483d10e05021cf9a",
      "category": "sast",
      "name": "Improper neutralization of directives in dynamically evaluated code ('Eval Injection')",
      "description": "The application was found calling the `eval` function OR Function()\n  constructor OR setTimeout() OR setInterval() methods. If the\n\n  variables or strings or functions passed to these methods contains user-supplied input, an adversary could attempt to execute arbitrary\n\n  JavaScript\n\n  code. This could lead to a full system compromise in Node applications or Cross-site Scripting\n\n  (XSS) in web applications.\n\n\n  To remediate this issue, remove all calls to above methods and consider alternative methods for\n\n  executing\n\n  the necessary business logic. There is almost no safe method of calling `eval` or other above stated sinks with\n\n  user-supplied input.\n\n  Instead, consider alternative methods such as using property accessors to dynamically access\n\n  values.\n\n\n  Example using property accessors to dynamically access an object's property:\n\n  ```\n\n  // Define an object\n\n  const obj = {key1: 'value1', key2: 'value2'};\n\n  // Get key dynamically from user input\n\n  const key = getUserInput();\n\n  // Check if the key exists in our object and return it, or a default empty string\n\n  const value = (obj.hasOwnProperty(key)) ? obj[key] : '';\n\n  // Work with the value\n\n  ```\n\n\n  For more information on why not to use `eval`, and alternatives see:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!\n\n  Other References:\n\n  - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setTimeout\n\n  - https://developer.mozilla.org/en-US/docs/Web/API/setInterval\n",
      "cve": "semgrep_id:eslint.detect-eval-with-expression:94:97",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 94,
        "end_line": 97
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "eslint.detect-eval-with-expression",
          "value": "eslint.detect-eval-with-expression",
          "url": "https://semgrep.dev/r/gitlab.eslint.detect-eval-with-expression"
        },
        {
          "type": "cwe",
          "name": "CWE-95",
          "value": "95",
          "url": "https://cwe.mitre.org/data/definitions/95.html"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "eslint_rule_id",
          "name": "ESLint rule ID/detect-eval-with-expression",
          "value": "detect-eval-with-expression"
        }
      ]
    },
    {
      "id": "e005310c0e23433e08efbc9571d4fd52ffbf7f2db4d676e6830caa38a4af2d8e",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:11:27",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 11,
        "end_line": 27
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "d7ad5d86ab3da3247dabffd2667a690c30a6cecc753796251a5a83615eaba10b",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:155:163",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 155,
        "end_line": 163
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "3f65bdbff827f163714cfe424d60bd900fcc52b53463cf03f07123eaed61d619",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:190:211",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 190,
        "end_line": 211
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "ce2741b991c3349f064bf4cba077f5de2eeefcfa3c66522f5724475f4e6a8273",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:33:51",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 33,
        "end_line": 51
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "dc31f818fbe6ac52a11a7737e5e3402cb4065d0db05e53d10f9a68985bde2a8e",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:34:51",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 34,
        "end_line": 51
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "3a2733f814d4e910b122212fbe7d29ca52d09034e2550ae4c96f6f0cc5a2a6d4",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:35:51",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 35,
        "end_line": 51
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "260d04e632113740f968c8fee5f882ffdbfa3ad53a873ee52d379cd06de6d357",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:64:68",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 64,
        "end_line": 68
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "d5b875d8c5e86a971c04ffeb8cde6f1955197584875b9a3749cd40ce4d8d5c1f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-database-rule-node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-database-rule-node_sqli_injection:95:111",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/sequelize_injection.js",
        "start_line": 95,
        "end_line": 111
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
          "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "89",
          "url": "https://cwe.mitre.org/data/definitions/89.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-database-rule-node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        }
      ]
    },
    {
      "id": "fa921a49afc88fc1152f128f39e3067067859220059217d42698cf83b662e1c5",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:12:16",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 12,
        "end_line": 16
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "a48d355baede73646adae9ca743995d4ee5d196dcca08d446d366acc30bcc224",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:21:24",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 21,
        "end_line": 24
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "3df9487fee117cf733aa8ea0eed0f41ca944866f3becc8c488043715282fec23",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:30:33",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 30,
        "end_line": 33
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "4101ecdac1a04b75f87930ddfd5ca97e462d85bbce6249de4039b209659b3547",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:4:7",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 4,
        "end_line": 7
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "fcb90628f52e22b2d9f24277c31edf674ec82619631a49016dfc23e18e73ef1f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:50:50",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 50
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "a90b5a68e37d6b79315ea07e5b06f0301e54ac9e6999e5e2c9932bb1e91a6768",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:56:56",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 56
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "830f8ef5924f43f4e72f278141fb2929b15df15be87fec1986cc73e897143cd6",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:73:76",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 73,
        "end_line": 76
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "eda380651074b502efecdddca00b2fe3d4edb76443a48658f895c1219034ae0d",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:81:85",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 81,
        "end_line": 85
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "572b3cf3a24b85de9980043d5b8c24ee3db591f309bfc214dda119b611ddd6e1",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:90:94",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 90,
        "end_line": 94
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "ebe61ce14056d2c0847e9ed8f40c247ba22dbe9806e6629ba48e66a1bd0c12af",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:16:17",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss_handlebars_safe_string.js",
        "start_line": 16,
        "end_line": 17
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "d5e13979257a123ab79c92043cd8f488e69bdb51239fc7db01b9333484ad7465",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:23:25",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss_handlebars_safe_string.js",
        "start_line": 23,
        "end_line": 25
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "c6e999071f936f768c0862045731f8a7a9692aa9688f0cfa65c05ac7db221a15",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:8:10",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/src/xss/xss_handlebars_safe_string.js",
        "start_line": 8,
        "end_line": 10
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "9b07e8a0827e004e081a8c064f4d786240b864df16deea026743a1cdc519684f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:17:17",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 17
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "93cbeb52a869c4da4d3a5d09d1e190b24c1d270cc5e3435eb5c93efcb613ef05",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:18:19",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 18,
        "end_line": 19
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "7dd61e6b0ca79b4b3f809ad4bc3d0b7753d9fdd9beb0228e03476ca6a969922d",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:26:27",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 26,
        "end_line": 27
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "24893f877a07638c6ef068d18bc1897aa69be3ba15ac5a5ae94c6fa91ffc1aa7",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:34:35",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 34,
        "end_line": 35
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "76145d25bb81308d643c04c8df2a2ee8b4db86bbb8e9bd8ddd27caf3852b920f",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:42:42",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 42
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "a1a8458b327a91cdd6c5eeb7f68664d32c98515bcb8a94261fd177b74e680327",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:9:10",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 9,
        "end_line": 10
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "8fb3815e4a6ba43798311319462ed9f96be97024dda8367e1762fd22ee56920c",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-handlebars_noescape:9:9",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 9
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
          "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        }
      ]
    },
    {
      "id": "7d0efeca085dd80ba1959fc1354e39690f631d22d2bd380f46083d4f020f02b0",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:17:22",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 17,
        "end_line": 22
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "a37bf190ee625c2668bee8ca8b8fef711415cf1bf3c75a44acb3183e8c13206c",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:27:32",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 27,
        "end_line": 32
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "046fbb07f714346d72d8dbfc15ad6dbf16055f1edb2ce2ba0ea2f198e345d028",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:7:12",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 7,
        "end_line": 12
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "6b7edd6aa4568cf60bf7c8259470d6a3c32d8ea4099329db959db474f65a6f2c",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-xss_serialize_javascript",
      "description": "This application is serializing Javascript objects with vulnerable \nconfigurations by setting `{unsafe: true}` in serialize-javascript. \n\nThis could lead to Cross Site Scripting (XSS) if the input was malicious \nscript code and the application server is not properly validating the output.\n\n```\n// safe use of serialize-javascript\nconst jsObj = serialize({\n  foo: htmlResponse\n  }\n);\n```\n\nXSS is an attack which exploits a web application or system to treat user input as markup or script code. \nIt is important to encode the data depending on the specific context it is used in. \n\nBy default, serialize-javascript encodes input values to prevent XSS attacks. \nConsider using serialize-javascript with default settings or set `{unsafe: false}` to encode\ninput data.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-xss_serialize_javascript:9:11",
      "severity": "Medium",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 9,
        "end_line": 11
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-xss_serialize_javascript",
          "value": "nodejs_scan.javascript-xss-rule-xss_serialize_javascript"
        },
        {
          "type": "cwe",
          "name": "CWE-80",
          "value": "80",
          "url": "https://cwe.mitre.org/data/definitions/80.html"
        },
        {
          "type": "owasp",
          "name": "A01:2017 - Injection",
          "value": "A01:2017"
        },
        {
          "type": "owasp",
          "name": "A03:2021 - Injection",
          "value": "A03:2021"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-xss_serialize_javascript",
          "value": "Untrusted user input reaching `serialize-javascript` with `unsafe` attribute can cause Cross Site Scripting (XSS)."
        }
      ]
    },
    {
      "id": "0e72cd057b04d6f3f27418daa5c1b430b65d4a0916b679f0c38813870be8ba4d",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:10:10",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 10
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "1b0461ac39e7f515a304ca73eca64cec114118682ef3abe2b010513e71fea0c2",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:18:18",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 18
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "54ef428a68a0df2775a01161133b113923e8009fe1fcdb861f483cda2b37dc56",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-express_xss:25:25",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 25
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-express_xss",
          "value": "nodejs_scan.javascript-xss-rule-express_xss"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        }
      ]
    },
    {
      "id": "36a7226d1f533ecd5a812f7cbd457ea13751563ae0b6044d10d5999693eba7c7",
      "category": "sast",
      "name": "Semgrep Finding: nodejs_scan.javascript-xss-rule-squirrelly_autoescape",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.\n",
      "cve": "semgrep_id:nodejs_scan.javascript-xss-rule-squirrelly_autoescape:9:9",
      "severity": "Critical",
      "scanner": {
        "id": "semgrep",
        "name": "Semgrep"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 9
      },
      "identifiers": [
        {
          "type": "semgrep_id",
          "name": "nodejs_scan.javascript-xss-rule-squirrelly_autoescape",
          "value": "nodejs_scan.javascript-xss-rule-squirrelly_autoescape"
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "79",
          "url": "https://cwe.mitre.org/data/definitions/79.html"
        },
        {
          "type": "owasp",
          "name": "A1:2017 - Injection",
          "value": "A1:2017"
        },
        {
          "type": "njsscan_rule_type",
          "name": "NodeJS Scan ID javascript-xss-rule-squirrelly_autoescape",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        }
      ]
    }
  ],
  "dependency_files": [],
  "scan": {
    "analyzer": {
      "id": "semgrep",
      "name": "Semgrep",
      "url": "https://gitlab.com/gitlab-org/security-products/analyzers/semgrep",
      "vendor": {
        "name": "GitLab"
      },
      "version": "4.12.3"
    },
    "scanner": {
      "id": "semgrep",
      "name": "Semgrep",
      "url": "https://github.com/returntocorp/semgrep",
      "vendor": {
        "name": "GitLab"
      },
      "version": "1.61.1"
    },
    "primary_identifiers": [
      {
        "type": "semgrep_id",
        "name": "bandit.B101",
        "value": "bandit.B101"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B102",
        "value": "bandit.B102"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B103",
        "value": "bandit.B103"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B104",
        "value": "bandit.B104"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B108",
        "value": "bandit.B108"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B113",
        "value": "bandit.B113"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B201",
        "value": "bandit.B201"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B202",
        "value": "bandit.B202"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B301-1",
        "value": "bandit.B301-1"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B301-2",
        "value": "bandit.B301-2"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B301-3",
        "value": "bandit.B301-3"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B301-4",
        "value": "bandit.B301-4"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B302",
        "value": "bandit.B302"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B303-1",
        "value": "bandit.B303-1"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B303-2",
        "value": "bandit.B303-2"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B303-7",
        "value": "bandit.B303-7"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B303-8",
        "value": "bandit.B303-8"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-1",
        "value": "bandit.B304-1"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-10",
        "value": "bandit.B304-10"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-11",
        "value": "bandit.B304-11"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-12",
        "value": "bandit.B304-12"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-2",
        "value": "bandit.B304-2"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-3",
        "value": "bandit.B304-3"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-4",
        "value": "bandit.B304-4"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-5",
        "value": "bandit.B304-5"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-6",
        "value": "bandit.B304-6"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-7",
        "value": "bandit.B304-7"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-8",
        "value": "bandit.B304-8"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B304-9",
        "value": "bandit.B304-9"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B305",
        "value": "bandit.B305"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B306",
        "value": "bandit.B306"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B307",
        "value": "bandit.B307"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B310-1",
        "value": "bandit.B310-1"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B311",
        "value": "bandit.B311"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B313",
        "value": "bandit.B313"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B314",
        "value": "bandit.B314"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B315",
        "value": "bandit.B315"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B316",
        "value": "bandit.B316"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B317",
        "value": "bandit.B317"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B318",
        "value": "bandit.B318"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B319",
        "value": "bandit.B319"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B320",
        "value": "bandit.B320"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B323",
        "value": "bandit.B323"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B324",
        "value": "bandit.B324"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B401",
        "value": "bandit.B401"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B413",
        "value": "bandit.B413"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B501",
        "value": "bandit.B501"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B502",
        "value": "bandit.B502"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B504",
        "value": "bandit.B504"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B505-1",
        "value": "bandit.B505-1"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B505-2",
        "value": "bandit.B505-2"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B506",
        "value": "bandit.B506"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B507",
        "value": "bandit.B507"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B508",
        "value": "bandit.B508"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B509",
        "value": "bandit.B509"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B601",
        "value": "bandit.B601"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B602",
        "value": "bandit.B602"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B603",
        "value": "bandit.B603"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B604",
        "value": "bandit.B604"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B605",
        "value": "bandit.B605"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B606",
        "value": "bandit.B606"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B607",
        "value": "bandit.B607"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B608",
        "value": "bandit.B608"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B609",
        "value": "bandit.B609"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B610",
        "value": "bandit.B610"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B611",
        "value": "bandit.B611"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B611",
        "value": "bandit.B611"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B612",
        "value": "bandit.B612"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B701",
        "value": "bandit.B701"
      },
      {
        "type": "semgrep_id",
        "name": "bandit.B702",
        "value": "bandit.B702"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-buffer-noassert",
        "value": "eslint.detect-buffer-noassert"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-child-process",
        "value": "eslint.detect-child-process"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-disable-mustache-escape",
        "value": "eslint.detect-disable-mustache-escape"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-eval-with-expression",
        "value": "eslint.detect-eval-with-expression"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-new-buffer",
        "value": "eslint.detect-new-buffer"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-non-literal-fs-filename",
        "value": "eslint.detect-non-literal-fs-filename"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-non-literal-regexp",
        "value": "eslint.detect-non-literal-regexp"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-non-literal-require",
        "value": "eslint.detect-non-literal-require"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-possible-timing-attacks",
        "value": "eslint.detect-possible-timing-attacks"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.detect-pseudoRandomBytes",
        "value": "eslint.detect-pseudoRandomBytes"
      },
      {
        "type": "semgrep_id",
        "name": "eslint.react-dangerouslysetinnerhtml",
        "value": "eslint.react-dangerouslysetinnerhtml"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.BAD_HEXA_CONVERSION-1",
        "value": "find_sec_bugs.BAD_HEXA_CONVERSION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.BLOWFISH_KEY_SIZE-1",
        "value": "find_sec_bugs.BLOWFISH_KEY_SIZE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CIPHER_INTEGRITY-1",
        "value": "find_sec_bugs.CIPHER_INTEGRITY-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.COMMAND_INJECTION-1",
        "value": "find_sec_bugs.COMMAND_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CUSTOM_MESSAGE_DIGEST-1",
        "value": "find_sec_bugs.CUSTOM_MESSAGE_DIGEST-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DANGEROUS_PERMISSION_COMBINATION-1",
        "value": "find_sec_bugs.DANGEROUS_PERMISSION_COMBINATION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DES_USAGE-1",
        "value": "find_sec_bugs.DES_USAGE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DMI_CONSTANT_DB_PASSWORD-1.HARD_CODE_PASSWORD-3",
        "value": "find_sec_bugs.DMI_CONSTANT_DB_PASSWORD-1.HARD_CODE_PASSWORD-3"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DMI_EMPTY_DB_PASSWORD-1.HARD_CODE_PASSWORD-2",
        "value": "find_sec_bugs.DMI_EMPTY_DB_PASSWORD-1.HARD_CODE_PASSWORD-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.ECB_MODE-1",
        "value": "find_sec_bugs.ECB_MODE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.EL_INJECTION-1",
        "value": "find_sec_bugs.EL_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.EXTERNAL_CONFIG_CONTROL-1",
        "value": "find_sec_bugs.EXTERNAL_CONFIG_CONTROL-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.FILE_UPLOAD_FILENAME-1",
        "value": "find_sec_bugs.FILE_UPLOAD_FILENAME-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.FORMAT_STRING_MANIPULATION-1",
        "value": "find_sec_bugs.FORMAT_STRING_MANIPULATION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HARD_CODE_PASSWORD-1",
        "value": "find_sec_bugs.HARD_CODE_PASSWORD-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HAZELCAST_SYMMETRIC_ENCRYPTION-1",
        "value": "find_sec_bugs.HAZELCAST_SYMMETRIC_ENCRYPTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HRS_REQUEST_PARAMETER_TO_HTTP_HEADER-1",
        "value": "find_sec_bugs.HRS_REQUEST_PARAMETER_TO_HTTP_HEADER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HTTPONLY_COOKIE-1",
        "value": "find_sec_bugs.HTTPONLY_COOKIE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HTTP_PARAMETER_POLLUTION-1",
        "value": "find_sec_bugs.HTTP_PARAMETER_POLLUTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HTTP_RESPONSE_SPLITTING-1",
        "value": "find_sec_bugs.HTTP_RESPONSE_SPLITTING-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.INSECURE_COOKIE-1",
        "value": "find_sec_bugs.INSECURE_COOKIE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.INSECURE_SMTP_SSL-1",
        "value": "find_sec_bugs.INSECURE_SMTP_SSL-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.LDAP_ANONYMOUS-1",
        "value": "find_sec_bugs.LDAP_ANONYMOUS-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.LDAP_INJECTION-1",
        "value": "find_sec_bugs.LDAP_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.MALICIOUS_XSLT-1",
        "value": "find_sec_bugs.MALICIOUS_XSLT-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.MODIFICATION_AFTER_VALIDATION-1",
        "value": "find_sec_bugs.MODIFICATION_AFTER_VALIDATION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.NORMALIZATION_AFTER_VALIDATION-1",
        "value": "find_sec_bugs.NORMALIZATION_AFTER_VALIDATION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.NULL_CIPHER-1",
        "value": "find_sec_bugs.NULL_CIPHER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.OGNL_INJECTION-1",
        "value": "find_sec_bugs.OGNL_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION-1",
        "value": "find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PADDING_ORACLE-1",
        "value": "find_sec_bugs.PADDING_ORACLE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PERMISSIVE_CORS-2",
        "value": "find_sec_bugs.PERMISSIVE_CORS-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PREDICTABLE_RANDOM-1",
        "value": "find_sec_bugs.PREDICTABLE_RANDOM-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PT_ABSOLUTE_PATH_TRAVERSAL-1",
        "value": "find_sec_bugs.PT_ABSOLUTE_PATH_TRAVERSAL-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.REQUESTDISPATCHER_FILE_DISCLOSURE-1.STRUTS_FILE_DISCLOSURE-1.SPRING_FILE_DISCLOSURE-1",
        "value": "find_sec_bugs.REQUESTDISPATCHER_FILE_DISCLOSURE-1.STRUTS_FILE_DISCLOSURE-1.SPRING_FILE_DISCLOSURE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.RSA_KEY_SIZE-1",
        "value": "find_sec_bugs.RSA_KEY_SIZE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.RSA_NO_PADDING-1",
        "value": "find_sec_bugs.RSA_NO_PADDING-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SAML_IGNORE_COMMENTS-1",
        "value": "find_sec_bugs.SAML_IGNORE_COMMENTS-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-1.SPEL_INJECTION-1.EL_INJECTION-2.SEAM_LOG_INJECTION-1",
        "value": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-1.SPEL_INJECTION-1.EL_INJECTION-2.SEAM_LOG_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-2",
        "value": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SMTP_HEADER_INJECTION-1",
        "value": "find_sec_bugs.SMTP_HEADER_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SPRING_CSRF_PROTECTION_DISABLED-1",
        "value": "find_sec_bugs.SPRING_CSRF_PROTECTION_DISABLED-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SQL_INJECTION_SPRING_JDBC-1.SQL_INJECTION_JPA-1.SQL_INJECTION_JDO-1.SQL_INJECTION_JDBC-1.SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE-1.SQL_INJECTION-1.SQL_INJECTION_HIBERNATE-1.SQL_INJECTION_VERTX-1.SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING-1",
        "value": "find_sec_bugs.SQL_INJECTION_SPRING_JDBC-1.SQL_INJECTION_JPA-1.SQL_INJECTION_JDO-1.SQL_INJECTION_JDBC-1.SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE-1.SQL_INJECTION-1.SQL_INJECTION_HIBERNATE-1.SQL_INJECTION_VERTX-1.SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SSL_CONTEXT-1",
        "value": "find_sec_bugs.SSL_CONTEXT-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SSL_CONTEXT-2",
        "value": "find_sec_bugs.SSL_CONTEXT-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.TDES_USAGE-1",
        "value": "find_sec_bugs.TDES_USAGE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.TEMPLATE_INJECTION_PEBBLE-1.TEMPLATE_INJECTION_FREEMARKER-1.TEMPLATE_INJECTION_VELOCITY-1",
        "value": "find_sec_bugs.TEMPLATE_INJECTION_PEBBLE-1.TEMPLATE_INJECTION_FREEMARKER-1.TEMPLATE_INJECTION_VELOCITY-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.UNVALIDATED_REDIRECT-1.URL_REWRITING-1",
        "value": "find_sec_bugs.UNVALIDATED_REDIRECT-1.URL_REWRITING-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.URLCONNECTION_SSRF_FD-1",
        "value": "find_sec_bugs.URLCONNECTION_SSRF_FD-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WEAK_FILENAMEUTILS-1",
        "value": "find_sec_bugs.WEAK_FILENAMEUTILS-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WEAK_HOSTNAME_VERIFIER-1.WEAK_TRUST_MANAGER-1",
        "value": "find_sec_bugs.WEAK_HOSTNAME_VERIFIER-1.WEAK_TRUST_MANAGER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WEAK_MESSAGE_DIGEST_MD5-1.WEAK_MESSAGE_DIGEST_SHA1-1",
        "value": "find_sec_bugs.WEAK_MESSAGE_DIGEST_MD5-1.WEAK_MESSAGE_DIGEST_SHA1-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WICKET_XSS1-1",
        "value": "find_sec_bugs.WICKET_XSS1-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XML_DECODER-1",
        "value": "find_sec_bugs.XML_DECODER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XPATH_INJECTION-1",
        "value": "find_sec_bugs.XPATH_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER-1",
        "value": "find_sec_bugs.XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_SAXPARSER-1",
        "value": "find_sec_bugs.XXE_SAXPARSER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_XMLREADER-1",
        "value": "find_sec_bugs.XXE_XMLREADER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_XMLSTREAMREADER-1",
        "value": "find_sec_bugs.XXE_XMLSTREAMREADER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.AWS_QUERY_INJECTION",
        "value": "find_sec_bugs.AWS_QUERY_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.BAD_HEXA_CONVERSION",
        "value": "find_sec_bugs.BAD_HEXA_CONVERSION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.BEAN_PROPERTY_INJECTION",
        "value": "find_sec_bugs.BEAN_PROPERTY_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.BLOWFISH_KEY_SIZE",
        "value": "find_sec_bugs.BLOWFISH_KEY_SIZE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CIPHER_INTEGRITY",
        "value": "find_sec_bugs.CIPHER_INTEGRITY"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.COMMAND_INJECTION-1.SCALA_COMMAND_INJECTION-1",
        "value": "find_sec_bugs.COMMAND_INJECTION-1.SCALA_COMMAND_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.COOKIE_PERSISTENT",
        "value": "find_sec_bugs.COOKIE_PERSISTENT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.COOKIE_USAGE",
        "value": "find_sec_bugs.COOKIE_USAGE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CRLF_INJECTION_LOGS",
        "value": "find_sec_bugs.CRLF_INJECTION_LOGS"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CUSTOM_INJECTION",
        "value": "find_sec_bugs.CUSTOM_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CUSTOM_INJECTION-2",
        "value": "find_sec_bugs.CUSTOM_INJECTION-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.CUSTOM_MESSAGE_DIGEST",
        "value": "find_sec_bugs.CUSTOM_MESSAGE_DIGEST"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DANGEROUS_PERMISSION_COMBINATION",
        "value": "find_sec_bugs.DANGEROUS_PERMISSION_COMBINATION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DEFAULT_HTTP_CLIENT",
        "value": "find_sec_bugs.DEFAULT_HTTP_CLIENT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DES_USAGE",
        "value": "find_sec_bugs.DES_USAGE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DMI_CONSTANT_DB_PASSWORD-1.HARD_CODE_PASSWORD-3",
        "value": "find_sec_bugs.DMI_CONSTANT_DB_PASSWORD-1.HARD_CODE_PASSWORD-3"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.DMI_EMPTY_DB_PASSWORD-1.HARD_CODE_PASSWORD-2",
        "value": "find_sec_bugs.DMI_EMPTY_DB_PASSWORD-1.HARD_CODE_PASSWORD-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.ECB_MODE",
        "value": "find_sec_bugs.ECB_MODE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.EL_INJECTION",
        "value": "find_sec_bugs.EL_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.EXTERNAL_CONFIG_CONTROL",
        "value": "find_sec_bugs.EXTERNAL_CONFIG_CONTROL"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.FILE_UPLOAD_FILENAME",
        "value": "find_sec_bugs.FILE_UPLOAD_FILENAME"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.FORMAT_STRING_MANIPULATION",
        "value": "find_sec_bugs.FORMAT_STRING_MANIPULATION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HARD_CODE_PASSWORD",
        "value": "find_sec_bugs.HARD_CODE_PASSWORD"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HAZELCAST_SYMMETRIC_ENCRYPTION",
        "value": "find_sec_bugs.HAZELCAST_SYMMETRIC_ENCRYPTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HRS_REQUEST_PARAMETER_TO_COOKIE",
        "value": "find_sec_bugs.HRS_REQUEST_PARAMETER_TO_COOKIE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HRS_REQUEST_PARAMETER_TO_HTTP_HEADER",
        "value": "find_sec_bugs.HRS_REQUEST_PARAMETER_TO_HTTP_HEADER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HTTPONLY_COOKIE",
        "value": "find_sec_bugs.HTTPONLY_COOKIE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HTTP_PARAMETER_POLLUTION",
        "value": "find_sec_bugs.HTTP_PARAMETER_POLLUTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.HTTP_RESPONSE_SPLITTING",
        "value": "find_sec_bugs.HTTP_RESPONSE_SPLITTING"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.IMPROPER_UNICODE",
        "value": "find_sec_bugs.IMPROPER_UNICODE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE",
        "value": "find_sec_bugs.INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.INSECURE_COOKIE",
        "value": "find_sec_bugs.INSECURE_COOKIE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.INSECURE_SMTP_SSL",
        "value": "find_sec_bugs.INSECURE_SMTP_SSL"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.JAXRS_ENDPOINT",
        "value": "find_sec_bugs.JAXRS_ENDPOINT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.JAXWS_ENDPOINT",
        "value": "find_sec_bugs.JAXWS_ENDPOINT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.LDAP_ANONYMOUS",
        "value": "find_sec_bugs.LDAP_ANONYMOUS"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.LDAP_ENTRY_POISONING",
        "value": "find_sec_bugs.LDAP_ENTRY_POISONING"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.LDAP_INJECTION",
        "value": "find_sec_bugs.LDAP_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.MALICIOUS_XSLT",
        "value": "find_sec_bugs.MALICIOUS_XSLT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.MODIFICATION_AFTER_VALIDATION",
        "value": "find_sec_bugs.MODIFICATION_AFTER_VALIDATION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.NORMALIZATION_AFTER_VALIDATION",
        "value": "find_sec_bugs.NORMALIZATION_AFTER_VALIDATION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.NULL_CIPHER",
        "value": "find_sec_bugs.NULL_CIPHER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.OGNL_INJECTION",
        "value": "find_sec_bugs.OGNL_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION",
        "value": "find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION-2",
        "value": "find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PADDING_ORACLE",
        "value": "find_sec_bugs.PADDING_ORACLE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PATH_TRAVERSAL_IN-1.SCALA_PATH_TRAVERSAL_IN-1",
        "value": "find_sec_bugs.PATH_TRAVERSAL_IN-1.SCALA_PATH_TRAVERSAL_IN-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PATH_TRAVERSAL_OUT",
        "value": "find_sec_bugs.PATH_TRAVERSAL_OUT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PERMISSIVE_CORS",
        "value": "find_sec_bugs.PERMISSIVE_CORS"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PERMISSIVE_CORS-2",
        "value": "find_sec_bugs.PERMISSIVE_CORS-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PREDICTABLE_RANDOM-1.PREDICTABLE_RANDOM_SCALA-1",
        "value": "find_sec_bugs.PREDICTABLE_RANDOM-1.PREDICTABLE_RANDOM_SCALA-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PT_ABSOLUTE_PATH_TRAVERSAL",
        "value": "find_sec_bugs.PT_ABSOLUTE_PATH_TRAVERSAL"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.PT_RELATIVE_PATH_TRAVERSAL",
        "value": "find_sec_bugs.PT_RELATIVE_PATH_TRAVERSAL"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.REQUESTDISPATCHER_FILE_DISCLOSURE-1.STRUTS_FILE_DISCLOSURE-1.SPRING_FILE_DISCLOSURE-1",
        "value": "find_sec_bugs.REQUESTDISPATCHER_FILE_DISCLOSURE-1.STRUTS_FILE_DISCLOSURE-1.SPRING_FILE_DISCLOSURE-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.RPC_ENABLED_EXTENSIONS",
        "value": "find_sec_bugs.RPC_ENABLED_EXTENSIONS"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.RSA_KEY_SIZE",
        "value": "find_sec_bugs.RSA_KEY_SIZE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.RSA_NO_PADDING",
        "value": "find_sec_bugs.RSA_NO_PADDING"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SAML_IGNORE_COMMENTS",
        "value": "find_sec_bugs.SAML_IGNORE_COMMENTS"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCALA_PLAY_SSRF",
        "value": "find_sec_bugs.SCALA_PLAY_SSRF"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCALA_SENSITIVE_DATA_EXPOSURE",
        "value": "find_sec_bugs.SCALA_SENSITIVE_DATA_EXPOSURE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCALA_XSS_MVC_API",
        "value": "find_sec_bugs.SCALA_XSS_MVC_API"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-1.SPEL_INJECTION-1.EL_INJECTION-2.SEAM_LOG_INJECTION-1",
        "value": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-1.SPEL_INJECTION-1.EL_INJECTION-2.SEAM_LOG_INJECTION-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-2",
        "value": "find_sec_bugs.SCRIPT_ENGINE_INJECTION-2"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SERVLET_PARAMETER-1.SERVLET_CONTENT_TYPE-1.SERVLET_SERVER_NAME-1.SERVLET_SESSION_ID-1.SERVLET_QUERY_STRING-1.SERVLET_HEADER-1.SERVLET_HEADER_REFERER-1.SERVLET_HEADER_USER_AGENT-1",
        "value": "find_sec_bugs.SERVLET_PARAMETER-1.SERVLET_CONTENT_TYPE-1.SERVLET_SERVER_NAME-1.SERVLET_SESSION_ID-1.SERVLET_QUERY_STRING-1.SERVLET_HEADER-1.SERVLET_HEADER_REFERER-1.SERVLET_HEADER_USER_AGENT-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SMTP_HEADER_INJECTION",
        "value": "find_sec_bugs.SMTP_HEADER_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SQL_INJECTION_SPRING_JDBC-1.SQL_INJECTION_JPA-1.SQL_INJECTION_JDO-1.SQL_INJECTION_JDBC-1.SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE-1.SCALA_SQL_INJECTION_SLICK-1",
        "value": "find_sec_bugs.SQL_INJECTION_SPRING_JDBC-1.SQL_INJECTION_JPA-1.SQL_INJECTION_JDO-1.SQL_INJECTION_JDBC-1.SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE-1.SCALA_SQL_INJECTION_SLICK-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.SSL_CONTEXT",
        "value": "find_sec_bugs.SSL_CONTEXT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.STRUTS_FORM_VALIDATION",
        "value": "find_sec_bugs.STRUTS_FORM_VALIDATION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.TDES_USAGE",
        "value": "find_sec_bugs.TDES_USAGE"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.TEMPLATE_INJECTION_PEBBLE-1.TEMPLATE_INJECTION_FREEMARKER-1.TEMPLATE_INJECTION_VELOCITY-1",
        "value": "find_sec_bugs.TEMPLATE_INJECTION_PEBBLE-1.TEMPLATE_INJECTION_FREEMARKER-1.TEMPLATE_INJECTION_VELOCITY-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.TRUST_BOUNDARY_VIOLATION",
        "value": "find_sec_bugs.TRUST_BOUNDARY_VIOLATION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.UNENCRYPTED_SOCKET-1.UNENCRYPTED_SERVER_SOCKET-1",
        "value": "find_sec_bugs.UNENCRYPTED_SOCKET-1.UNENCRYPTED_SERVER_SOCKET-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.UNVALIDATED_REDIRECT-1.URL_REWRITING-1",
        "value": "find_sec_bugs.UNVALIDATED_REDIRECT-1.URL_REWRITING-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.URLCONNECTION_SSRF_FD",
        "value": "find_sec_bugs.URLCONNECTION_SSRF_FD"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WEAK_FILENAMEUTILS",
        "value": "find_sec_bugs.WEAK_FILENAMEUTILS"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WEAK_HOSTNAME_VERIFIER-1.WEAK_TRUST_MANAGER-1",
        "value": "find_sec_bugs.WEAK_HOSTNAME_VERIFIER-1.WEAK_TRUST_MANAGER-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WEAK_MESSAGE_DIGEST_MD5-1.WEAK_MESSAGE_DIGEST_SHA1-1",
        "value": "find_sec_bugs.WEAK_MESSAGE_DIGEST_MD5-1.WEAK_MESSAGE_DIGEST_SHA1-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.WICKET_XSS1",
        "value": "find_sec_bugs.WICKET_XSS1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XML_DECODER",
        "value": "find_sec_bugs.XML_DECODER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XPATH_INJECTION",
        "value": "find_sec_bugs.XPATH_INJECTION"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER",
        "value": "find_sec_bugs.XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XSS_REQUEST_WRAPPER",
        "value": "find_sec_bugs.XSS_REQUEST_WRAPPER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XSS_SERVLET",
        "value": "find_sec_bugs.XSS_SERVLET"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_DOCUMENT",
        "value": "find_sec_bugs.XXE_DOCUMENT"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_DTD_TRANSFORM_FACTORY-1.XXE_XSLT_TRANSFORM_FACTORY-1",
        "value": "find_sec_bugs.XXE_DTD_TRANSFORM_FACTORY-1.XXE_XSLT_TRANSFORM_FACTORY-1"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_SAXPARSER",
        "value": "find_sec_bugs.XXE_SAXPARSER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_XMLREADER",
        "value": "find_sec_bugs.XXE_XMLREADER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_XMLSTREAMREADER",
        "value": "find_sec_bugs.XXE_XMLSTREAMREADER"
      },
      {
        "type": "semgrep_id",
        "name": "find_sec_bugs.XXE_XPATH",
        "value": "find_sec_bugs.XXE_XPATH"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.AddAccessAllowedAce-1",
        "value": "flawfinder.AddAccessAllowedAce-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.CreateProcess-1",
        "value": "flawfinder.CreateProcess-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.CreateProcessAsUser-1.CreateProcessWithLogon-1",
        "value": "flawfinder.CreateProcessAsUser-1.CreateProcessWithLogon-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.EVP_des_ecb-1.EVP_des_cbc-1.EVP_des_cfb-1.EVP_des_ofb-1.EVP_desx_cbc-1",
        "value": "flawfinder.EVP_des_ecb-1.EVP_des_cbc-1.EVP_des_cfb-1.EVP_des_ofb-1.EVP_desx_cbc-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.EVP_rc4_40-1.EVP_rc2_40_cbc-1.EVP_rc2_64_cbc-1",
        "value": "flawfinder.EVP_rc4_40-1.EVP_rc2_40_cbc-1.EVP_rc2_64_cbc-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.GetTempFileName-1",
        "value": "flawfinder.GetTempFileName-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.LoadLibrary-1",
        "value": "flawfinder.LoadLibrary-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.LoadLibraryEx-1",
        "value": "flawfinder.LoadLibraryEx-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.MultiByteToWideChar-1",
        "value": "flawfinder.MultiByteToWideChar-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.RpcImpersonateClient-1.ImpersonateLoggedOnUser-1.CoImpersonateClient-1.ImpersonateNamedPipeClient-1.ImpersonateDdeClientWindow-1.ImpersonateSecurityContext-1.SetThreadToken-1",
        "value": "flawfinder.RpcImpersonateClient-1.ImpersonateLoggedOnUser-1.CoImpersonateClient-1.ImpersonateNamedPipeClient-1.ImpersonateDdeClientWindow-1.ImpersonateSecurityContext-1.SetThreadToken-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.SetSecurityDescriptorDacl-1",
        "value": "flawfinder.SetSecurityDescriptorDacl-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.StrCat-1.StrCatA-1.StrcatW-1.lstrcatA-1.lstrcatW-1.strCatBuff-1.StrCatBuffA-1.StrCatBuffW-1.StrCatChainW-1._tccat-1._mbccat-1._ftcscat-1.StrCatN-1.StrCatNA-1.StrCatNW-1.StrNCat-1.StrNCatA-1.StrNCatW-1.lstrncat-1.lstrcatnA-1.lstrcatnW-1",
        "value": "flawfinder.StrCat-1.StrCatA-1.StrcatW-1.lstrcatA-1.lstrcatW-1.strCatBuff-1.StrCatBuffA-1.StrCatBuffW-1.StrCatChainW-1._tccat-1._mbccat-1._ftcscat-1.StrCatN-1.StrCatNA-1.StrCatNW-1.StrNCat-1.StrNCatA-1.StrNCatW-1.lstrncat-1.lstrcatnA-1.lstrcatnW-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.access-1",
        "value": "flawfinder.access-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.atoi-1.atol-1._wtoi-1._wtoi64-1",
        "value": "flawfinder.atoi-1.atol-1._wtoi-1._wtoi64-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.chmod-1",
        "value": "flawfinder.chmod-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.chown-1",
        "value": "flawfinder.chown-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.crypt-1.crypt_r-1",
        "value": "flawfinder.crypt-1.crypt_r-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.cuserid-1",
        "value": "flawfinder.cuserid-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.drand48-1.erand48-1.jrand48-1.lcong48-1.lrand48-1.mrand48-1.nrand48-1.random-1.seed48-1.setstate-1.srand-1.strfry-1.srandom-1.g_rand_boolean-1.g_rand_int-1.g_rand_int_range-1.g_rand_double-1.g_rand_double_range-1.g_random_boolean-1.g_random_int-1.g_random_int_range-1.g_random_double-1.g_random_double_range-1",
        "value": "flawfinder.drand48-1.erand48-1.jrand48-1.lcong48-1.lrand48-1.mrand48-1.nrand48-1.random-1.seed48-1.setstate-1.srand-1.strfry-1.srandom-1.g_rand_boolean-1.g_rand_int-1.g_rand_int_range-1.g_rand_double-1.g_rand_double_range-1.g_random_boolean-1.g_random_int-1.g_random_int_range-1.g_random_double-1.g_random_double_range-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.execl-1.execlp-1.execle-1.execv-1.execvp-1.popen-1.WinExec-1.ShellExecute-1",
        "value": "flawfinder.execl-1.execlp-1.execle-1.execv-1.execvp-1.popen-1.WinExec-1.ShellExecute-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.fopen-1.open-1",
        "value": "flawfinder.fopen-1.open-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.fprintf-1.vfprintf-1._ftprintf-1._vftprintf-1.fwprintf-1.fvwprintf-1",
        "value": "flawfinder.fprintf-1.vfprintf-1._ftprintf-1._vftprintf-1.fwprintf-1.fvwprintf-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.fscanf-1.sscanf-1.vsscanf-1.vfscanf-1._ftscanf-1.fwscanf-1.vfwscanf-1.vswscanf-1",
        "value": "flawfinder.fscanf-1.sscanf-1.vsscanf-1.vfscanf-1._ftscanf-1.fwscanf-1.vfwscanf-1.vswscanf-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.g_get_home_dir-1",
        "value": "flawfinder.g_get_home_dir-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.g_get_tmp_dir-1",
        "value": "flawfinder.g_get_tmp_dir-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.getenv-1.curl_getenv-1",
        "value": "flawfinder.getenv-1.curl_getenv-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.getlogin-1",
        "value": "flawfinder.getlogin-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.getpass-1",
        "value": "flawfinder.getpass-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.gets-1._getts-1",
        "value": "flawfinder.gets-1._getts-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.getwd-1",
        "value": "flawfinder.getwd-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.gsignal-1.ssignal-1",
        "value": "flawfinder.gsignal-1.ssignal-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.lstrcat-1.wcscat-1._tcscat-1._mbscat-1",
        "value": "flawfinder.lstrcat-1.wcscat-1._tcscat-1._mbscat-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.lstrcatn-1.wcsncat-1._tcsncat-1._mbsnbcat-1",
        "value": "flawfinder.lstrcatn-1.wcsncat-1._tcsncat-1._mbsnbcat-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.lstrcpy-1.wcscpy-1._tcscpy-1._mbscpy-1",
        "value": "flawfinder.lstrcpy-1.wcscpy-1._tcscpy-1._mbscpy-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.lstrcpyn-1.wcsncpy-1._tcsncpy-1._mbsnbcpy-1",
        "value": "flawfinder.lstrcpyn-1.wcsncpy-1._tcsncpy-1._mbsnbcpy-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.memalign-1",
        "value": "flawfinder.memalign-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.memcpy-1.CopyMemory-1.bcopy-1",
        "value": "flawfinder.memcpy-1.CopyMemory-1.bcopy-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.mkstemp-1",
        "value": "flawfinder.mkstemp-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.mktemp-1",
        "value": "flawfinder.mktemp-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.printf-1.vprintf-1.vwprintf-1.vfwprintf-1._vtprintf-1.wprintf-1",
        "value": "flawfinder.printf-1.vprintf-1.vwprintf-1.vfwprintf-1._vtprintf-1.wprintf-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.readlink-1",
        "value": "flawfinder.readlink-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.realpath-1",
        "value": "flawfinder.realpath-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.scanf-1.vscanf-1.wscanf-1._tscanf-1.vwscanf-1",
        "value": "flawfinder.scanf-1.vscanf-1.wscanf-1._tscanf-1.vwscanf-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.snprintf-1.vsnprintf-1._snprintf-1._sntprintf-1._vsntprintf-1",
        "value": "flawfinder.snprintf-1.vsnprintf-1._snprintf-1._sntprintf-1._vsntprintf-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.sprintf-1.vsprintf-1.swprintf-1.vswprintf-1._stprintf-1._vstprintf-1",
        "value": "flawfinder.sprintf-1.vsprintf-1.swprintf-1.vswprintf-1._stprintf-1._vstprintf-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strcat-1",
        "value": "flawfinder.strcat-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strccpy-1.strcadd-1",
        "value": "flawfinder.strccpy-1.strcadd-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strcpy-1",
        "value": "flawfinder.strcpy-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strcpyA-1.strcpyW-1.StrCpy-1.StrCpyA-1.lstrcpyA-1.lstrcpyW-1._tccpy-1._mbccpy-1._ftcscpy-1._mbsncpy-1.StrCpyN-1.StrCpyNA-1.StrCpyNW-1.StrNCpy-1.strcpynA-1.StrNCpyA-1.StrNCpyW-1.lstrcpynA-1.lstrcpynW-1",
        "value": "flawfinder.strcpyA-1.strcpyW-1.StrCpy-1.StrCpyA-1.lstrcpyA-1.lstrcpyW-1._tccpy-1._mbccpy-1._ftcscpy-1._mbsncpy-1.StrCpyN-1.StrCpyNA-1.StrCpyNW-1.StrNCpy-1.strcpynA-1.StrNCpyA-1.StrNCpyW-1.lstrcpynA-1.lstrcpynW-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.streadd-1.strecpy-1",
        "value": "flawfinder.streadd-1.strecpy-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strlen-1.wcslen-1._tcslen-1._mbslen-1",
        "value": "flawfinder.strlen-1.wcslen-1._tcslen-1._mbslen-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strncat-1",
        "value": "flawfinder.strncat-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strncpy-1",
        "value": "flawfinder.strncpy-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.strtrns-1",
        "value": "flawfinder.strtrns-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.syslog-1",
        "value": "flawfinder.syslog-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.system-1",
        "value": "flawfinder.system-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.tmpfile-1",
        "value": "flawfinder.tmpfile-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.tmpnam-1.tempnam-1",
        "value": "flawfinder.tmpnam-1.tempnam-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.ulimit-1",
        "value": "flawfinder.ulimit-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.umask-1",
        "value": "flawfinder.umask-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.usleep-1",
        "value": "flawfinder.usleep-1"
      },
      {
        "type": "semgrep_id",
        "name": "flawfinder.vfork-1",
        "value": "flawfinder.vfork-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G102-1",
        "value": "gosec.G102-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G103-1",
        "value": "gosec.G103-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G106-1",
        "value": "gosec.G106-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G107-1",
        "value": "gosec.G107-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G108-1",
        "value": "gosec.G108-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G109-1",
        "value": "gosec.G109-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G110-1",
        "value": "gosec.G110-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G111-1",
        "value": "gosec.G111-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G114-1",
        "value": "gosec.G114-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G202-1",
        "value": "gosec.G202-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G203-1",
        "value": "gosec.G203-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G204-1",
        "value": "gosec.G204-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G301-1",
        "value": "gosec.G301-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G302-1",
        "value": "gosec.G302-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G303-1",
        "value": "gosec.G303-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G304-1",
        "value": "gosec.G304-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G305-1",
        "value": "gosec.G305-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G306-1",
        "value": "gosec.G306-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G402-1",
        "value": "gosec.G402-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G402-2",
        "value": "gosec.G402-2"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G403-1",
        "value": "gosec.G403-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G404-1",
        "value": "gosec.G404-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G501-1",
        "value": "gosec.G501-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G502-1",
        "value": "gosec.G502-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G503-1",
        "value": "gosec.G503-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G505-1",
        "value": "gosec.G505-1"
      },
      {
        "type": "semgrep_id",
        "name": "gosec.G601-1",
        "value": "gosec.G601-1"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_aes_ecb",
        "value": "nodejs_scan.javascript-crypto-rule-node_aes_ecb"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_aes_noiv",
        "value": "nodejs_scan.javascript-crypto-rule-node_aes_noiv"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_curl_ssl_verify_disable",
        "value": "nodejs_scan.javascript-crypto-rule-node_curl_ssl_verify_disable"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator",
        "value": "nodejs_scan.javascript-crypto-rule-node_insecure_random_generator"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_md5",
        "value": "nodejs_scan.javascript-crypto-rule-node_md5"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_sha1",
        "value": "nodejs_scan.javascript-crypto-rule-node_sha1"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_timing_attack",
        "value": "nodejs_scan.javascript-crypto-rule-node_timing_attack"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_tls_reject",
        "value": "nodejs_scan.javascript-crypto-rule-node_tls_reject"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-crypto-rule-node_weak_crypto",
        "value": "nodejs_scan.javascript-crypto-rule-node_weak_crypto"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-node_knex_sqli_injection",
        "value": "nodejs_scan.javascript-database-rule-node_knex_sqli_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-node_nosqli_injection",
        "value": "nodejs_scan.javascript-database-rule-node_nosqli_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-node_nosqli_js_injection",
        "value": "nodejs_scan.javascript-database-rule-node_nosqli_js_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-node_sqli_injection",
        "value": "nodejs_scan.javascript-database-rule-node_sqli_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-sequelize_tls",
        "value": "nodejs_scan.javascript-database-rule-sequelize_tls"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-sequelize_tls_cert_validation",
        "value": "nodejs_scan.javascript-database-rule-sequelize_tls_cert_validation"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-database-rule-sequelize_weak_tls",
        "value": "nodejs_scan.javascript-database-rule-sequelize_weak_tls"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-dos-rule-express_bodyparser",
        "value": "nodejs_scan.javascript-dos-rule-express_bodyparser"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-dos-rule-layer7_object_dos",
        "value": "nodejs_scan.javascript-dos-rule-layer7_object_dos"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-dos-rule-regex_dos",
        "value": "nodejs_scan.javascript-dos-rule-regex_dos"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-dos-rule-regex_injection_dos",
        "value": "nodejs_scan.javascript-dos-rule-regex_injection_dos"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-electronjs-rule-electron_allow_http",
        "value": "nodejs_scan.javascript-electronjs-rule-electron_allow_http"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-electronjs-rule-electron_blink_integration",
        "value": "nodejs_scan.javascript-electronjs-rule-electron_blink_integration"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-electronjs-rule-electron_context_isolation",
        "value": "nodejs_scan.javascript-electronjs-rule-electron_context_isolation"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-electronjs-rule-electron_disable_websecurity",
        "value": "nodejs_scan.javascript-electronjs-rule-electron_disable_websecurity"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-electronjs-rule-electron_experimental_features",
        "value": "nodejs_scan.javascript-electronjs-rule-electron_experimental_features"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-electronjs-rule-electron_nodejs_integration",
        "value": "nodejs_scan.javascript-electronjs-rule-electron_nodejs_integration"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-eval_nodejs",
        "value": "nodejs_scan.javascript-eval-rule-eval_nodejs"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-eval_require",
        "value": "nodejs_scan.javascript-eval-rule-eval_require"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-grpc_insecure_connection",
        "value": "nodejs_scan.javascript-eval-rule-grpc_insecure_connection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-node_deserialize",
        "value": "nodejs_scan.javascript-eval-rule-node_deserialize"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-sandbox_code_injection",
        "value": "nodejs_scan.javascript-eval-rule-sandbox_code_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-serializetojs_deserialize",
        "value": "nodejs_scan.javascript-eval-rule-serializetojs_deserialize"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-server_side_template_injection",
        "value": "nodejs_scan.javascript-eval-rule-server_side_template_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-vm2_code_injection",
        "value": "nodejs_scan.javascript-eval-rule-vm2_code_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-vm2_context_injection",
        "value": "nodejs_scan.javascript-eval-rule-vm2_context_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-vm_code_injection",
        "value": "nodejs_scan.javascript-eval-rule-vm_code_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-vm_compilefunction_injection",
        "value": "nodejs_scan.javascript-eval-rule-vm_compilefunction_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-vm_runincontext_injection",
        "value": "nodejs_scan.javascript-eval-rule-vm_runincontext_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-vm_runinnewcontext_injection",
        "value": "nodejs_scan.javascript-eval-rule-vm_runinnewcontext_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-eval-rule-yaml_deserialize",
        "value": "nodejs_scan.javascript-eval-rule-yaml_deserialize"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-exec-rule-generic_os_command_exec",
        "value": "nodejs_scan.javascript-exec-rule-generic_os_command_exec"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-exec-rule-shelljs_os_command_exec",
        "value": "nodejs_scan.javascript-exec-rule-shelljs_os_command_exec"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_default",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_default"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_no_domain",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_no_domain"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_no_httponly",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_no_httponly"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_no_maxage",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_no_maxage"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_no_path",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_no_path"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_no_samesite",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_no_samesite"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-cookie_session_no_secure",
        "value": "nodejs_scan.javascript-headers-rule-cookie_session_no_secure"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-express_cors",
        "value": "nodejs_scan.javascript-headers-rule-express_cors"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-generic_cors",
        "value": "nodejs_scan.javascript-headers-rule-generic_cors"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-generic_header_injection",
        "value": "nodejs_scan.javascript-headers-rule-generic_header_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-header_xss_generic",
        "value": "nodejs_scan.javascript-headers-rule-header_xss_generic"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-header_xss_lusca",
        "value": "nodejs_scan.javascript-headers-rule-header_xss_lusca"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-helmet_feature_disabled",
        "value": "nodejs_scan.javascript-headers-rule-helmet_feature_disabled"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-headers-rule-host_header_injection",
        "value": "nodejs_scan.javascript-headers-rule-host_header_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-jwt-rule-hardcoded_jwt_secret",
        "value": "nodejs_scan.javascript-jwt-rule-hardcoded_jwt_secret"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-jwt-rule-jwt_exposed_credentials",
        "value": "nodejs_scan.javascript-jwt-rule-jwt_exposed_credentials"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-jwt-rule-jwt_exposed_data",
        "value": "nodejs_scan.javascript-jwt-rule-jwt_exposed_data"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-jwt-rule-jwt_express_hardcoded",
        "value": "nodejs_scan.javascript-jwt-rule-jwt_express_hardcoded"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-jwt-rule-jwt_not_revoked",
        "value": "nodejs_scan.javascript-jwt-rule-jwt_not_revoked"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-jwt-rule-node_jwt_none_algorithm",
        "value": "nodejs_scan.javascript-jwt-rule-node_jwt_none_algorithm"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-memory-rule-buffer_noassert",
        "value": "nodejs_scan.javascript-memory-rule-buffer_noassert"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect",
        "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-redirect-rule-express_open_redirect2",
        "value": "nodejs_scan.javascript-redirect-rule-express_open_redirect2"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-ssrf-rule-node_ssrf",
        "value": "nodejs_scan.javascript-ssrf-rule-node_ssrf"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-ssrf-rule-phantom_ssrf",
        "value": "nodejs_scan.javascript-ssrf-rule-phantom_ssrf"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-ssrf-rule-playwright_ssrf",
        "value": "nodejs_scan.javascript-ssrf-rule-playwright_ssrf"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-ssrf-rule-puppeteer_ssrf",
        "value": "nodejs_scan.javascript-ssrf-rule-puppeteer_ssrf"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-ssrf-rule-wkhtmltoimage_ssrf",
        "value": "nodejs_scan.javascript-ssrf-rule-wkhtmltoimage_ssrf"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-ssrf-rule-wkhtmltopdf_ssrf",
        "value": "nodejs_scan.javascript-ssrf-rule-wkhtmltopdf_ssrf"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-admzip_path_overwrite",
        "value": "nodejs_scan.javascript-traversal-rule-admzip_path_overwrite"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-express_lfr",
        "value": "nodejs_scan.javascript-traversal-rule-express_lfr"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-express_lfr_warning",
        "value": "nodejs_scan.javascript-traversal-rule-express_lfr_warning"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-generic_path_traversal",
        "value": "nodejs_scan.javascript-traversal-rule-generic_path_traversal"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-join_resolve_path_traversal",
        "value": "nodejs_scan.javascript-traversal-rule-join_resolve_path_traversal"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-tar_path_overwrite",
        "value": "nodejs_scan.javascript-traversal-rule-tar_path_overwrite"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-zip_path_overwrite",
        "value": "nodejs_scan.javascript-traversal-rule-zip_path_overwrite"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-traversal-rule-zip_path_overwrite2",
        "value": "nodejs_scan.javascript-traversal-rule-zip_path_overwrite2"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xml-rule-node_entity_expansion",
        "value": "nodejs_scan.javascript-xml-rule-node_entity_expansion"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xml-rule-node_xpath_injection",
        "value": "nodejs_scan.javascript-xml-rule-node_xpath_injection"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xml-rule-node_xxe",
        "value": "nodejs_scan.javascript-xml-rule-node_xxe"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xml-rule-xxe_expat",
        "value": "nodejs_scan.javascript-xml-rule-xxe_expat"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xml-rule-xxe_sax",
        "value": "nodejs_scan.javascript-xml-rule-xxe_sax"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xss-rule-express_xss",
        "value": "nodejs_scan.javascript-xss-rule-express_xss"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xss-rule-handlebars_noescape",
        "value": "nodejs_scan.javascript-xss-rule-handlebars_noescape"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xss-rule-handlebars_safestring",
        "value": "nodejs_scan.javascript-xss-rule-handlebars_safestring"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xss-rule-squirrelly_autoescape",
        "value": "nodejs_scan.javascript-xss-rule-squirrelly_autoescape"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xss-rule-xss_disable_mustache_escape",
        "value": "nodejs_scan.javascript-xss-rule-xss_disable_mustache_escape"
      },
      {
        "type": "semgrep_id",
        "name": "nodejs_scan.javascript-xss-rule-xss_serialize_javascript",
        "value": "nodejs_scan.javascript-xss-rule-xss_serialize_javascript"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0001-1",
        "value": "security_code_scan.SCS0001-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0002-1",
        "value": "security_code_scan.SCS0002-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0003-1",
        "value": "security_code_scan.SCS0003-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0004-1",
        "value": "security_code_scan.SCS0004-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0005-1",
        "value": "security_code_scan.SCS0005-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0006-1",
        "value": "security_code_scan.SCS0006-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0008-1",
        "value": "security_code_scan.SCS0008-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0009-1",
        "value": "security_code_scan.SCS0009-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0010-1",
        "value": "security_code_scan.SCS0010-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0011-1",
        "value": "security_code_scan.SCS0011-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0013-1",
        "value": "security_code_scan.SCS0013-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0016-1",
        "value": "security_code_scan.SCS0016-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0017-1",
        "value": "security_code_scan.SCS0017-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0018-1",
        "value": "security_code_scan.SCS0018-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0026-1.SCS0031-1",
        "value": "security_code_scan.SCS0026-1.SCS0031-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0027-1",
        "value": "security_code_scan.SCS0027-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0028-1",
        "value": "security_code_scan.SCS0028-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0029-1",
        "value": "security_code_scan.SCS0029-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0029-2",
        "value": "security_code_scan.SCS0029-2"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0032-1.SCS0033-1.SCS0034-1",
        "value": "security_code_scan.SCS0032-1.SCS0033-1.SCS0034-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0035-1",
        "value": "security_code_scan.SCS0035-1"
      },
      {
        "type": "semgrep_id",
        "name": "security_code_scan.SCS0035-2",
        "value": "security_code_scan.SCS0035-2"
      }
    ],
    "type": "sast",
    "start_time": "2024-03-11T03:24:29",
    "end_time": "2024-03-11T03:24:38",
    "status": "success"
  }
}
NodeJS Scan Report
{
  "version": "15.0.7",
  "vulnerabilities": [
    {
      "id": "32cb141b754899efa8e9e4a53ca0d29f01cb837eec37f190da035fee4aa813cd",
      "category": "sast",
      "name": "generic_error_disclosure",
      "description": "Error messages with stack traces may expose sensitive information about the application.",
      "cve": "commandline/app.js:12:generic_error_disclosure:CWE-209",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/app.js",
        "start_line": 12,
        "end_line": 21
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "generic_error_disclosure",
          "value": "Error messages with stack traces may expose sensitive information about the application."
        },
        {
          "type": "cwe",
          "name": "CWE-209",
          "value": "generic_error_disclosure"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/app.js",
            "line_start": 12,
            "line_end": 12,
            "signatures": [
              {
                "algorithm": "scope_offset",
                "value": "commandline/app.js|runClass[0]:1"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "b60c005bb225a4aeeae681f66bb256d620a7cef6485c9113fd16851224ca6fd1",
      "category": "sast",
      "name": "node_insecure_random_generator",
      "description": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator.",
      "cve": "commandline/test-classes/TestInsecureRandomNumberGenerators.js:15:node_insecure_random_generator:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 15
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_insecure_random_generator"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 15,
            "line_end": 15,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testMathRandom[0]:1"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testMathRandom[0]:2"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "f2b77fc45b847fc2e6276e9ed49e33bf35810f963ceeead26233e455406286e0",
      "category": "sast",
      "name": "node_insecure_random_generator",
      "description": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator.",
      "cve": "commandline/test-classes/TestInsecureRandomNumberGenerators.js:21:node_insecure_random_generator:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 21
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_insecure_random_generator"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 21,
            "line_end": 21,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:1"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:2"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "fe5604cfd2033fdb488d1b45684493e8444429f48fb878c8cf6297d8a9d0b71e",
      "category": "sast",
      "name": "node_insecure_random_generator",
      "description": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator.",
      "cve": "commandline/test-classes/TestInsecureRandomNumberGenerators.js:27:node_insecure_random_generator:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 27
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_insecure_random_generator"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 27,
            "line_end": 27,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:4"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:8"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "c0461573c6551d432b5b176085306ddfe326310b29737f3a523d370e6a0f955c",
      "category": "sast",
      "name": "node_insecure_random_generator",
      "description": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator.",
      "cve": "commandline/test-classes/TestInsecureRandomNumberGenerators.js:31:node_insecure_random_generator:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
        "start_line": 31,
        "end_line": 34
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_insecure_random_generator",
          "value": "crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_insecure_random_generator"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestInsecureRandomNumberGenerators.js",
            "line_start": 31,
            "line_end": 31,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:6"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestInsecureRandomNumberGenerators.js|testPseudoRandomBytes[0]:12"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "cec124af94e2d3ace55ac84c4bd200b87d31da5d20277b15965acd71ef9ebc7c",
      "category": "sast",
      "name": "node_md5",
      "description": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function.",
      "cve": "commandline/test-classes/TestMD5Hash.js:25:node_md5:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestMD5Hash.js",
        "start_line": 25
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_md5",
          "value": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_md5"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestMD5Hash.js",
            "line_start": 25,
            "line_end": 25,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:3"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:4"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "5bb5fc08be214c83f07000a62fb9ec448cf532228353481efc87c61c6482c5df",
      "category": "sast",
      "name": "node_md5",
      "description": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function.",
      "cve": "commandline/test-classes/TestMD5Hash.js:29:node_md5:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestMD5Hash.js",
        "start_line": 29,
        "end_line": 30
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_md5",
          "value": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_md5"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestMD5Hash.js",
            "line_start": 29,
            "line_end": 29,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:5"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:8"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "ebc3700721348cc95059bc351da9c9dcd3859d8d8bd98a7474cee2eda2f01b8e",
      "category": "sast",
      "name": "node_md5",
      "description": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function.",
      "cve": "commandline/test-classes/TestMD5Hash.js:37:node_md5:CWE-327",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "commandline/test-classes/TestMD5Hash.js",
        "start_line": 37
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_md5",
          "value": "MD5 is a a weak hash which is known to have collision. Use a strong hashing function."
        },
        {
          "type": "cwe",
          "name": "CWE-327",
          "value": "node_md5"
        }
      ],
      "tracking": {
        "type": "source",
        "items": [
          {
            "file": "commandline/test-classes/TestMD5Hash.js",
            "line_start": 37,
            "line_end": 37,
            "signatures": [
              {
                "algorithm": "scope_offset_compressed",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:8"
              },
              {
                "algorithm": "scope_offset",
                "value": "commandline/test-classes/TestMD5Hash.js|generateMD5Hash_crypto[0]:16"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "d34ef30352bb11365f0724e504c23ffc8f53e3c24f59a48d6309d1993bc67f8f",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-express.js:21:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-express.js",
        "start_line": 21,
        "end_line": 23
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "f4aa736aa1ff885281b6c4cf35aefed78630e443274c946da2100e7e4594bea6",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-express.js:7:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-express.js",
        "start_line": 7,
        "end_line": 9
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "2b31c2911506c55776ec7e4b94f8c89a30d29ec6b5a862425323c2071684c6b3",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:10:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 10,
        "end_line": 11
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "09cfa35fb3ed8e95c7a1bc78ba14f394e300b8a2a1dba326cdf00ee4657c53c5",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:10:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 10
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "922184744df58e53b9a144c03ce4eee233c94b9a3caeb16210d7937e153a98c3",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:18:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 18
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "f450f34546ce204bad4afbf1423fff3994c21029bacc3e4a920c73978411bd87",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:19:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 19,
        "end_line": 20
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "4c59432b917b3ff4fd3201b5b30e1c3a4dbb03687a84338bfaf98ffe8e23868b",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:28:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 28
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "a1ff99e9a59e6614bac94148d49b83f8e2ccf858e34f643d7b019130257aa5a6",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:29:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 29,
        "end_line": 30
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "3367f6ebb124bf5c2cc805f10986fbc2b3fa381a4ca302993dab01d70fd45fbe",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:37:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 37,
        "end_line": 38
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "90c9ab1836307cfc8984c8d4731e919de00f331951744727265ecdb8681d3bb5",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:45:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 45,
        "end_line": 46
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "dd239fcbe0591375f441713da177f3c3d7e7d9d88e41fbbbacfde7ea53d7f3bf",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:63:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 63,
        "end_line": 64
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "1331bb74753d87ef407baf2e57b530d58411b1430486d84b173a0999e51bb6d0",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web-es6/src/xss/xss-handlebars-noescape.js:72:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-handlebars-noescape.js",
        "start_line": 72
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "309be1fa0cb6ea74860bee49f98db79ffb1a9c341b91fa5f0abeb76a0d4311aa",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-serialize-javascript.js:18:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 18,
        "end_line": 23
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "10a911e00cde0044b93b35c8b534fdf7b20e660174ad17aa11f27e15c042ee7d",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-serialize-javascript.js:28:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 28,
        "end_line": 33
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "33a8f6ef446187fad4b1d1fb32d3f8b0be3edcaa7540315680b3083e52b1b8dc",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-serialize-javascript.js:8:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-serialize-javascript.js",
        "start_line": 8,
        "end_line": 13
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "828e767527290d724e19528e8244088d6b1e524c1c924524d9be49520fe360d3",
      "category": "sast",
      "name": "squirrelly_autoescape",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.",
      "cve": "web-es6/src/xss/xss-squirrelly-autoescape.js:10:squirrelly_autoescape:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 10
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "squirrelly_autoescape",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "squirrelly_autoescape"
        }
      ]
    },
    {
      "id": "888c85a4007ba9c1f9e51de824d9bef0fa36910777b311fd5406a9742b7b6cb5",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-squirrelly-autoescape.js:11:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 11
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "aadd749d4c6f8ca81f56e4abea45e4159d76d68506933462c2a5618c97ae37ec",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-squirrelly-autoescape.js:19:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 19
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "92454cdf52ef01217b04a4d6f2304be78965fadc3199a97be133d414bb733a88",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss-squirrelly-autoescape.js:26:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss-squirrelly-autoescape.js",
        "start_line": 26
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "626dade6913c4b1e94583930eff8c72de4e79be598a34f0a51fcaa794020c2a2",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss_handlebars_safe_string.js:16:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 16,
        "end_line": 17
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "ac5b30b6135982796ade61c38dba66e10c360434f467d20a239d4fb730c9907d",
      "category": "sast",
      "name": "handlebars_safestring",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.",
      "cve": "web-es6/src/xss/xss_handlebars_safe_string.js:16:handlebars_safestring:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 16
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_safestring",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "handlebars_safestring"
        }
      ]
    },
    {
      "id": "073460aa915e44d5e57672c69be264792443fa10583a2c867c989dc6bb2277f7",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web-es6/src/xss/xss_handlebars_safe_string.js:9:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 9,
        "end_line": 10
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "370c3f812e837304bcad620714a2f5a6d8d35bdb41b1e78934a641cfb04e2330",
      "category": "sast",
      "name": "handlebars_safestring",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.",
      "cve": "web-es6/src/xss/xss_handlebars_safe_string.js:9:handlebars_safestring:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web-es6/src/xss/xss_handlebars_safe_string.js",
        "start_line": 9
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_safestring",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "handlebars_safestring"
        }
      ]
    },
    {
      "id": "45464be03bb489298680238591f0d5bd8146e75a14f01603ff80c50349785468",
      "category": "sast",
      "name": "node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.",
      "cve": "web/mysql_injection.js:17:node_sqli_injection:CWE-89",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 17,
        "end_line": 36
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "node_sqli_injection"
        }
      ]
    },
    {
      "id": "6b0e2973c5402babe951be37a6cb5e194ffc4a7a5e9b7b2da3107c9a240ecf97",
      "category": "sast",
      "name": "node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.",
      "cve": "web/mysql_injection.js:43:node_sqli_injection:CWE-89",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 43,
        "end_line": 57
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "node_sqli_injection"
        }
      ]
    },
    {
      "id": "82d07b28690d1486c61ff7c51baee1d916f2a796315d7537decc12b2e05196f1",
      "category": "sast",
      "name": "node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.",
      "cve": "web/mysql_injection.js:64:node_sqli_injection:CWE-89",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/mysql_injection.js",
        "start_line": 64,
        "end_line": 79
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "node_sqli_injection"
        }
      ]
    },
    {
      "id": "bfe3d3028aba66f4a5e89f6b185a561974dbd6c76484358c1dcb730c43f939c6",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:101:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 101,
        "end_line": 109
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "87213072bbaa79a64da2b0bf63de17028ff9e35c7b35c8a81f86accead5064aa",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:113:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 113,
        "end_line": 122
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "a76d712ed16c34f1d6cc02a72c4f5f0353a27020445c12790352e615a8e521a7",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:126:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 126,
        "end_line": 135
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "3dc044a6f2ff04f539f3e02f8532b16f63230e436309794cbb06e3215f9b09fb",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:139:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 139,
        "end_line": 147
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "c81cc12398feed366f47ce4be1849b5ea9f6168bc8d74eba0abb56f7ab2b67a2",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:151:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 151,
        "end_line": 160
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "48892fc5d37fcb961e3b3f809f2cdbb7e0b0e17d66c1b1886ebf882bdaa78700",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:164:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 164,
        "end_line": 172
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "53a795d4fe7a7c88078333312ca7758b637e4cab5ef6ad00d369c2583b081083",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:181:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 181,
        "end_line": 190
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "ae2f921984fd7a34ccca65316bab173f7de4a2c172300ba3fcdae086df360348",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:194:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 194,
        "end_line": 202
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "5aeb8fec5f34ee9cdaa3ee1502b49341aa34cb9283ea9eac3bda181b562a3b71",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:206:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 206,
        "end_line": 210
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "2704f1b87abe567b4247169ee12abacf3d6f7c1fa2ef3e121546d5deb5e1a6af",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:214:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 214,
        "end_line": 218
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "43041b60438877d01892c6cea269401a173809e9ea3d168d65ceb040fd91276b",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:31:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 31
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "e1a3ad9b2a68546c634024bd054acf80d071f5acfcbdac8493b6f7b35f39dacb",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:37:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 37
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "c90a3e32d78f077688b8bb91ab95c4077d1d3c6cae37ed303d0171f4e92acbd1",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:42:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 42
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "5bb57692faeadbf6e0fc2e9922a1f1d98e57bda0d9f45cc5d52eac3d78e3b574",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:48:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 48
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "dd25c85c83683a9bf33c6998937435a1fd973b25d7b353365c71c2c8914bf92b",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:54:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 54,
        "end_line": 56
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "1407be74eda963322756376bf39b35d6c9b8f145b1dd701a7c943dc007d12e0a",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:62:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 62,
        "end_line": 66
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "1a38f56655238eaa0c5444a52ba9cb0568037b8505cee08ba050eda6d100b315",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:72:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 72
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "7fab22530050b6442b7a1506b4cd9dab41512d6a80fc4fe23a932b18a0b21ef7",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:77:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 77,
        "end_line": 79
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "4773cd2c151863f4a5e961b083b7184cbc6b4de9ba22d7d29a06ae6294a6baeb",
      "category": "sast",
      "name": "express_open_redirect",
      "description": "Untrusted user input in redirect() can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect1.js:85:express_open_redirect:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect1.js",
        "start_line": 85
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect",
          "value": "Untrusted user input in redirect() can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect"
        }
      ]
    },
    {
      "id": "43a85ffa887f5056e8518a456278a8ce55c5477094e429d2d40b5f8214bfce86",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:133:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 133
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "6d9654241363f1161d29898a97c328f14ae1035566d063839f7a96226cedc20d",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:331:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 331
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "7c349c95a46f492ba726f83eea408e0b15c91d7c42710bdc7a936e82d8330363",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:336:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 336,
        "end_line": 339
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "df3fefddadeb62e5494b86b30b4feb66ed54db0649893cc8907e3ed4517f8fe0",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:345:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 345,
        "end_line": 350
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "15d139f885fb2e36a604b53e673fe00bd4ec12f54e1c55c11eabd92db5116874",
      "category": "sast",
      "name": "generic_header_injection",
      "description": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks.",
      "cve": "web/open_redirect2.js:345:generic_header_injection:CWE-644",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 345,
        "end_line": 350
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "generic_header_injection",
          "value": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks."
        },
        {
          "type": "cwe",
          "name": "CWE-644",
          "value": "generic_header_injection"
        }
      ]
    },
    {
      "id": "b71992348a70fdc7e5d10abfe4a431230dd6eafa5253ce9480681f08137baa36",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:355:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 355,
        "end_line": 362
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "999d9b451e2be97b5aab841bc8890e6a0142e6aa435bf1a31c33fdd524a89c8e",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:67:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 67
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "db49dcf4b8cededdc7d42eca32ac2361293e79a686ac695bcc2e7f71485ac864",
      "category": "sast",
      "name": "express_open_redirect2",
      "description": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability.",
      "cve": "web/open_redirect2.js:74:express_open_redirect2:CWE-601",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 74
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_open_redirect2",
          "value": "Untrusted user input in response header('Location') can result in Open Redirect vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-601",
          "value": "express_open_redirect2"
        }
      ]
    },
    {
      "id": "5d1268ed43ecc3fe9e94e54d383b544a512e98d7e98e916de452651624ce5686",
      "category": "sast",
      "name": "generic_header_injection",
      "description": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks.",
      "cve": "web/open_redirect2.js:74:generic_header_injection:CWE-644",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/open_redirect2.js",
        "start_line": 74
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "generic_header_injection",
          "value": "Untrusted user input in response header will result in HTTP Header Injection or Response Splitting Attacks."
        },
        {
          "type": "cwe",
          "name": "CWE-644",
          "value": "generic_header_injection"
        }
      ]
    },
    {
      "id": "d3e30b1da522eb6f97d33af2a07e0c0334186c1003bf4be87cd57c2ccb2f8c78",
      "category": "sast",
      "name": "node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.",
      "cve": "web/pg_injection.js:16:node_sqli_injection:CWE-89",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/pg_injection.js",
        "start_line": 16,
        "end_line": 17
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "node_sqli_injection"
        }
      ]
    },
    {
      "id": "cfdbee68d59002c5a777103af0b0cb9ccfe6b137f090a00b028fc8b27148dffe",
      "category": "sast",
      "name": "node_sqli_injection",
      "description": "Untrusted input concatinated with raw SQL query can result in SQL Injection.",
      "cve": "web/pg_injection.js:35:node_sqli_injection:CWE-89",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/pg_injection.js",
        "start_line": 35,
        "end_line": 38
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_sqli_injection",
          "value": "Untrusted input concatinated with raw SQL query can result in SQL Injection."
        },
        {
          "type": "cwe",
          "name": "CWE-89",
          "value": "node_sqli_injection"
        }
      ]
    },
    {
      "id": "9cd00f886edb0eb751ef79c40a6108e92d1685f68d82d327e9aac3a9c4fd7508",
      "category": "sast",
      "name": "node_username",
      "description": "A hardcoded username in plain text is identified. Store it properly in an environment variable.",
      "cve": "web/public/script.js:132:node_username:CWE-798",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/public/script.js",
        "start_line": 132,
        "end_line": 133
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "node_username",
          "value": "A hardcoded username in plain text is identified. Store it properly in an environment variable."
        },
        {
          "type": "cwe",
          "name": "CWE-798",
          "value": "node_username"
        }
      ]
    },
    {
      "id": "12fa2bf319c326867140770afb48c17ee5f13facf4138c0b23757eab64a1fdea",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:12:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 12,
        "end_line": 16
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "a9d0521c1a487b8d952fb36e17d9ec5160b3c6ef2f69af73639ac401a2356013",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:21:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 21,
        "end_line": 24
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "441e3df63602356c21e904b4543fd40135df03c688c8281ca9b51ba16eb5bbce",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:30:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 30,
        "end_line": 33
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "db36fd01b5cc9dc98aa10edbeea0d175b92090a65ae3d6a7a68c7e15a92d6917",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:4:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 4,
        "end_line": 7
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "71c1d634354e62fb1da8f160ca29270138876463a595d1a92f7a3e34e6cfc7e5",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:50:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 50
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "ee152c81c0b9c83c4e7ddc64f74922acebe153a51bf1b65ac7964ad18822a301",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:56:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 56
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "a94765f54e3aa6cdac458971e0a2980eb981c5e8e457b0dd84f73d7e04d0ef73",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:73:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 73,
        "end_line": 76
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "ca94860beb4010c435f963bae382ebcba007aad8c8154b1bf04603b2e0d67b27",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:81:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 81,
        "end_line": 85
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "5aa1288f3c6532498a4cb6be3111b1bc83ab0c71d5bdb5e461b1d1aa8a3c765d",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss-express.js:90:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss-express.js",
        "start_line": 90,
        "end_line": 94
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "f0c73858c0f89d157dfa366b872991e4b464fee22f9fb4795199a0df439a55a4",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss_handlebars_safe_string.js:16:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss_handlebars_safe_string.js",
        "start_line": 16,
        "end_line": 17
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "9197f61edb2c1c4fd166ddfca565acaa7a3ba1c406f21a81f111a1be0ad62f51",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss_handlebars_safe_string.js:23:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss_handlebars_safe_string.js",
        "start_line": 23,
        "end_line": 25
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "3ee5a182ad29acb94a864df0d32a16616190a74e1e9a067f412939ecc9fca55b",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/src/xss/xss_handlebars_safe_string.js:8:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/src/xss/xss_handlebars_safe_string.js",
        "start_line": 8,
        "end_line": 10
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "a8772c7bd3c1c48999e9eb6541310b9bce18c66288130593ed5f35019c505673",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web/xss-handlebars-noescape.js:17:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 17
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "12e9c909d94cd11743f3cb285d12d66f43cdf8b3cf31e0dd71e1be44663744b7",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-handlebars-noescape.js:18:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 18,
        "end_line": 19
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "e5dd28026001ba4c9b7a31d4e09a48813b21ccb7e5929f763dd03b57764e7283",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-handlebars-noescape.js:26:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 26,
        "end_line": 27
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "9d28b37e641515e5351803da68930298a46ae647a1f4dca080ee45931d006388",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-handlebars-noescape.js:34:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 34,
        "end_line": 35
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "4868defb9541721585408f58049b3f91af647212979cd0cb55f66b0d8e341a29",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web/xss-handlebars-noescape.js:42:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 42
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "25f1eb2e386875e833572d643901fd8000b402554337e4765fcc5334fe785281",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-handlebars-noescape.js:9:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 9,
        "end_line": 10
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "2c0a6bb0f3890001967f65ac027bc946a76fb4cd26a9543e91fe707d5a66029b",
      "category": "sast",
      "name": "handlebars_noescape",
      "description": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties.",
      "cve": "web/xss-handlebars-noescape.js:9:handlebars_noescape:cwe-80",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-handlebars-noescape.js",
        "start_line": 9
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "handlebars_noescape",
          "value": "Disabling Escaping in Handlebars is not a secure behaviour. This can introduce XSS vulnerabilties."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "handlebars_noescape"
        }
      ]
    },
    {
      "id": "5711a49bf4a560d2148f9d730927dd81cfba52d87af49c35f2f4b80ccc3e5440",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-serialize-javascript.js:17:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 17,
        "end_line": 22
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "9404a6c9aafd6ee4c06a9118f2e5c197852bfea2a2675e3b4fa12edca7c00874",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-serialize-javascript.js:27:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 27,
        "end_line": 32
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "7d67b07990d493b153981a748fb449e1ec733c149e7fa14dc44ae98446b5c1e2",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-serialize-javascript.js:7:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 7,
        "end_line": 12
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "4ae9713bcc345ee2da2317031a821187d8835a69d206ed5e5375249fbf7cb1df",
      "category": "sast",
      "name": "xss_serialize_javascript",
      "description": "Untrusted user input reaching `serialize-javascript` with `unsafe` attribute can cause Cross Site Scripting (XSS).",
      "cve": "web/xss-serialize-javascript.js:9:xss_serialize_javascript:cwe-80",
      "severity": "Medium",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-serialize-javascript.js",
        "start_line": 9,
        "end_line": 11
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "xss_serialize_javascript",
          "value": "Untrusted user input reaching `serialize-javascript` with `unsafe` attribute can cause Cross Site Scripting (XSS)."
        },
        {
          "type": "cwe",
          "name": "cwe-80",
          "value": "xss_serialize_javascript"
        }
      ]
    },
    {
      "id": "00cdb31466ce5b80d1018f0ba03b1c44bac15f030a2d4b7fc737b0bbb9cdee38",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-squirrelly-autoescape.js:10:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 10
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "1c0fd22a88e47d0c1d3cdd962230dbd6f574f1c66f939d89f42908f3c2629dcd",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-squirrelly-autoescape.js:18:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 18
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "c109cda4beda6cd37faa4b3b71cddf3a352f9a50b9aad853b3cc75203f161572",
      "category": "sast",
      "name": "express_xss",
      "description": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability.",
      "cve": "web/xss-squirrelly-autoescape.js:25:express_xss:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 25
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "express_xss",
          "value": "Untrusted User Input in Response will result in Reflected Cross Site Scripting Vulnerability."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "express_xss"
        }
      ]
    },
    {
      "id": "38ec96ce43d3e993d509baf62de494a840c76df2440ea13ee75ce0b584a8be09",
      "category": "sast",
      "name": "squirrelly_autoescape",
      "description": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS.",
      "cve": "web/xss-squirrelly-autoescape.js:9:squirrelly_autoescape:CWE-79",
      "severity": "High",
      "scanner": {
        "id": "nodejs-scan",
        "name": "NodeJsScan"
      },
      "location": {
        "file": "web/xss-squirrelly-autoescape.js",
        "start_line": 9
      },
      "identifiers": [
        {
          "type": "njsscan_rule_type",
          "name": "squirrelly_autoescape",
          "value": "Handlebars SafeString will not escape the data passed through it. Untrusted user input passing through SafeString can cause XSS."
        },
        {
          "type": "cwe",
          "name": "CWE-79",
          "value": "squirrelly_autoescape"
        }
      ]
    }
  ],
  "dependency_files": [],
  "scan": {
    "analyzer": {
      "id": "nodejs-scan",
      "name": "NodeJsScan",
      "url": "https://gitlab.com/gitlab-org/security-products/analyzers/nodejs-scan",
      "vendor": {
        "name": "GitLab"
      },
      "version": "4.1.9"
    },
    "scanner": {
      "id": "njsscan",
      "name": "njsscan",
      "url": "https://github.com/ajinabraham/njsscan",
      "vendor": {
        "name": "GitLab"
      },
      "version": "0.3.6"
    },
    "type": "sast",
    "start_time": "2024-03-11T03:24:35",
    "end_time": "2024-03-11T03:24:54",
    "status": "success"
  }
}

If finding takeover is working as expected, most if not all of the vulnerabilities found in the test project should be from semgrep. This isn't the case. Of the 92 njsscan findings reported, 21 have not been taken over, although there's a legitimate reason for each. Most are note detected by semgrep, as the rule has been updated or removed, the rest do not match because the location returned by nodejs scan is a range, where as semgrep only returns a single line. Full details can be found in this spreadsheet

What are the relevant issue numbers?

gitlab-org/gitlab#395487 (closed)

Does this MR meet the acceptance criteria?

Edited by Craig Smith

Merge request reports