axecore-p2p@1.1.8

Vulnerabilities

4 via 4 paths

Dependencies

41

Source

npm

Find, fix and prevent vulnerabilities in your code.

Severity
  • 1
  • 2
  • 1
Status
  • 4
  • 0
  • 0

high severity

Cryptographic Issues

  • Vulnerable module: elliptic
  • Introduced through: @axerunners/axecore-lib@0.15.8

Detailed paths

  • Introduced through: axecore-p2p@1.1.8 @axerunners/axecore-lib@0.15.8 elliptic@3.0.3
    Remediation: Upgrade to @axerunners/axecore-lib@0.18.13.

Overview

elliptic is a Fast elliptic-curve cryptography in a plain javascript implementation.

Affected versions of this package are vulnerable to Cryptographic Issues. Elliptic allows ECDSA signature malleability via variations in encoding, leading \0 bytes, or integer overflows. This could conceivably have a security-relevant impact if an application relied on a single canonical signature.

PoC

var crypto = require('crypto')
var EC = require('elliptic').ec;
var ec = new EC('secp256k1');

var obj = require("./poc_ecdsa_secp256k1_sha256_test.json");

for (let testGroup of obj.testGroups) {

    var key = ec.keyFromPublic(testGroup.key.uncompressed, 'hex');
    
    for(let test of testGroup.tests) {
     console.log("[*] Test " + test.tcId + " result: " + test.result)

     msgHash = crypto.createHash('sha256').update(Buffer.from(test.msg, 'hex')).digest();
     
     try {
      result = key.verify(msgHash, Buffer.from(test.sig, 'hex'));

     if (result == true) {
      if (test.result == "valid" || test.result == "acceptable")
       console.log("Result: PASS");
      else
       console.log("Result: FAIL")     
     }

     if (result == false) {
      if (test.result == "valid" || test.result == "acceptable")
       console.log("Result: FAIL");
      else
       console.log("Result: PASS")     
     }



     } catch (e) {
      console.log("ERROR - VERIFY: " + e)

      if (test.result == "valid" || test.result == "acceptable")
       console.log("Result: FAIL");
      else
       console.log("Result: PASS")     



     }


    }

}

Remediation

Upgrade elliptic to version 6.5.3 or higher.

References

medium severity

Cryptographic Issues

  • Vulnerable module: elliptic
  • Introduced through: @axerunners/axecore-lib@0.15.8

Detailed paths

  • Introduced through: axecore-p2p@1.1.8 @axerunners/axecore-lib@0.15.8 elliptic@3.0.3
    Remediation: Upgrade to @axerunners/axecore-lib@0.18.13.

Overview

elliptic is a Fast elliptic-curve cryptography in a plain javascript implementation.

Affected versions of this package are vulnerable to Cryptographic Issues via the secp256k1 implementation in elliptic/ec/key.js. There is no check to confirm that the public key point passed into the derive function actually exists on the secp256k1 curve. This results in the potential for the private key used in this implementation to be revealed after a number of ECDH operations are performed.

Remediation

Upgrade elliptic to version 6.5.4 or higher.

References

medium severity

Timing Attack

  • Vulnerable module: elliptic
  • Introduced through: @axerunners/axecore-lib@0.15.8

Detailed paths

  • Introduced through: axecore-p2p@1.1.8 @axerunners/axecore-lib@0.15.8 elliptic@3.0.3
    Remediation: Upgrade to @axerunners/axecore-lib@0.18.13.

Overview

elliptic is a Fast elliptic-curve cryptography in a plain javascript implementation.

Affected versions of this package are vulnerable to Timing Attack. Practical recovery of the long-term private key generated by the library is possible under certain conditions. Leakage of bit-length of a scalar during scalar multiplication is possible on an elliptic curve which might allow practical recovery of the long-term private key.

Remediation

Upgrade elliptic to version 6.5.2 or higher.

References

low severity

Insecure use of /tmp folder

  • Vulnerable module: cli
  • Introduced through: socks5-client@0.3.6

Detailed paths

  • Introduced through: axecore-p2p@1.1.8 socks5-client@0.3.6 ipv6@3.1.3 cli@0.4.5

Overview

cli is an npm package used for rapidly building command line apps.

When used in daemon mode, the library makes insecure use of two files in the /tmp/ folder: /tmp/<app-name>.pid and /tmp/<app-name>.log. These allow an attacker to overwrite files they typically cannot access, but that are accessible by the user running the CLI-using app. This is possible since the /tmp/ folder is (typically) writeable to all system users, and because the names of the files in question are easily predicted by an attacker.

Note that while this is a real vulnerability, it relies on functionality (daemon mode) which is only supported in very old Node versions (0.8 or older), and so is unlikely to be used by most cli users. To avoid any doubt, the fixed version (1.0.0) removes support for this feature entirely.

Details

For example, assume user victim occasionally runs a CLI tool called cli-tool, which uses the cli package. If an attacker gains write access to the /tmp/ folder of that machine (but not the higher permissions victim has), they can create the symbolic link /tmp/cli-tool.pid -> /home/victim/important-file. When victim runs cli-tool, the important-file in victim's root directory will be nullified. If the CLI tool is run as root, the same can be done to nullify /etc/passwd and make the system unbootable.

Note that popular CLI tools have no reason to mask their names, and so attackers can easily guess a long list of tools victims may run by checking the cli package dependents.

Remediation

Upgrade cli to version 1.0.0 or greater, which disables the affected feature.

From the fix release notes:

This feature relies on a beta release (e.g. version 0.5.1) of a Node.js
module on npm--one that was superseded by a stable (e.g. version 1.0)
release published three years ago [2]. Due to a build-time dependency on
the long-since deprecated `node-waf` tool, the module at that version
can only be built for Node.js versions 0.8 and below.

Given this, actual usage of this feature is likely very limited. Remove
it completely so the integrity of this module's core functionality can
be verified.

References

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809252 [2] https://github.com/node-js-libs/cli/commit/fd6bc4d2a901aabe0bb6067fbcc14a4fe3faa8b9