Command Injection Affecting total.js package, versions <3.4.7


Severity

Recommended
0.0
high
0
10

CVSS assessment made by Snyk's Security Team. Learn more

Threat Intelligence

Exploit Maturity
Proof of concept
EPSS
4.03% (92nd percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications

Snyk Learn

Learn about Command Injection vulnerabilities in an interactive lesson.

Start learning
  • Snyk IDSNYK-JS-TOTALJS-1046672
  • published29 Jan 2021
  • disclosed29 Jan 2021
  • creditAlessio Dellalibera

Introduced: 29 Jan 2021

CVE-2020-28494  (opens in a new tab)
CWE-78  (opens in a new tab)
First added by Snyk

How to fix?

Upgrade total.js to version 3.4.7 or higher.

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);

References

CVSS Scores

version 3.1