Command Injection

Affecting total.js package, versions <3.4.7

Report new vulnerabilities
Do your applications use this vulnerable package? Test your applications

Overview

total.js is a framework for Node.js platfrom written in pure JavaScript similar to PHP's Laravel or Python's Django or ASP.NET MVC. It can be used as web, desktop, service or IoT application.

Affected versions of this package are vulnerable to Command Injection. The issue occurs in the image.pipe and image.stream functions. The type parameter is used to build the command that is then executed using child_process.spawn. The issue occurs because child_process.spawn is called with the option shell set to true and because the type parameter is not properly sanitized.

PoC

const total = require('total.js');
let image = Image.load("");
let payload = ";touch HACKED;";
image.stream(payload);
// image.pipe(null, payload);

Remediation

Upgrade total.js to version 3.4.7 or higher.

References

CVSS Score

8.6
high severity
  • Attack Vector
    Network
  • Attack Complexity
    Low
  • Privileges Required
    None
  • User Interaction
    None
  • Scope
    Unchanged
  • Confidentiality
    High
  • Integrity
    Low
  • Availability
    Low
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L/E:P/RL:O/RC:C
Credit
Alessio Dellalibera
CVE
CVE-2020-28494
CWE
CWE-78
Snyk ID
SNYK-JS-TOTALJS-1046672
Disclosed
29 Jan, 2021
Published
29 Jan, 2021