CVE-2019-15954: Total.js CMS remote code execution in widgets

CVE-2019-15954 · Severity: low · CVSS 3.1 · Published 2022-05-24

Total.js CMS is a content management system used to build and manage web applications. An authenticated user with widget creation privileges can execute arbitrary code on the server by injecting malicious JavaScript into widget definitions, potentially leading to complete server compromise and data theft.

Technologies: total4 (npm). Vendors: npm.

Quick answers

Is CVE-2019-15954 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2019-15954 being exploited in the wild.
How severe is CVE-2019-15954?
Low severity, with a CVSS score of 3.1, published 24 May 2022.
Which products and versions are affected?
Total.js CMS 12.0.0 and 12.x.
Is there a fix for CVE-2019-15954?
No fixed version is recorded yet. Check the vendor's advisory in the references below. If you run it, Junglewise drafts a mitigation that fits your setup and applies it once you approve, with senior security engineers behind it.
How is CVE-2019-15954 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2019-15954?
Check whether you run total4 (npm). Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

The vulnerability is a code injection / sandbox escape in Total.js CMS versions 12.0.0 and related 12.x releases. Authenticated users with widget privileges can create malicious widgets containing specially crafted `<script total>` tags that are evaluated server-side. The tag evaluation mechanism fails to properly sandbox the execution context, allowing attackers to break out using payloads that access the global `process` object (e.g., `global.process.mainModule.require('child_process').exec()`). This enables remote command execution with the privileges of the application server. The vulnerability requires prior authentication and the widgets privilege, but no additional user interaction. Patches are available in newer versions of the total4 package.

Affected products

  • Total.js CMS 12.0.0 and 12.x

Identifiers

  • CVE-2019-15954
  • GHSA-v287-9w3v-x5c5

Timeline

  • 2019-09-05: disclosed
  • 2022-05-24: advisory

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.