","datePublished":"2019-09-05T18:31:43.000Z","dateModified":"2024-08-05T01:03:32.574Z","url":"https://o3.security/vulnerability/CVE-2019-15954","inLanguage":"en","author":{"@id":"https://o3.security/#organization"},"publisher":{"@id":"https://o3.security/#organization"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://o3.security/vulnerability/CVE-2019-15954"},"speakable":{"@type":"SpeakableSpecification","cssSelector":["h1",".vuln-summary",".vuln-severity",".vuln-mitigation"]},"about":[],"citation":[{"@type":"WebPage","url":"https://github.com/beerpwn/CVE/blob/master/Totaljs_disclosure_report/report_final.pdf"},{"@type":"WebPage","url":"https://seclists.org/fulldisclosure/2019/Sep/5"},{"@type":"WebPage","url":"http://packetstormsecurity.com/files/154924/Total.js-CMS-12-Widget-JavaScript-Code-Injection.html"}]}","url":"https://o3.security/vulnerability/CVE-2019-15954","identifier":"CVE-2019-15954","datePublished":"2019-09-05T18:31:43.000Z","dateModified":"2024-08-05T01:03:32.574Z","inLanguage":"en","keywords":["CVE-2019-15954","CVE","vulnerability","security advisory"],"creator":{"@id":"https://o3.security/#organization"},"isAccessibleForFree":true}"}},{"@type":"Question","name":"How severe is CVE-2019-15954?","acceptedAnswer":{"@type":"Answer","text":"No CVSS score has been assigned to CVE-2019-15954 yet. Review the advisory details and affected package list to assess your exposure."}},{"@type":"Question","name":"Which packages are affected by CVE-2019-15954?","acceptedAnswer":{"@type":"Answer","text":"Affected package information for CVE-2019-15954 is not yet fully mapped. Check the official advisory links for details."}},{"@type":"Question","name":"How do I fix CVE-2019-15954?","acceptedAnswer":{"@type":"Answer","text":"No patched version of the affected component has shipped for CVE-2019-15954 yet. Where your build allows, override or pin the dependency away from the vulnerable range, and apply any maintainer-recommended mitigation."}},{"@type":"Question","name":"How do I detect CVE-2019-15954 in my code and dependencies?","acceptedAnswer":{"@type":"Answer","text":"Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for the affected component. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match."}},{"@type":"Question","name":"How do I mitigate CVE-2019-15954 if there is no patch (or I can't update yet)?","acceptedAnswer":{"@type":"Answer","text":"If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands."}},{"@type":"Question","name":"How does O3 Security protect against CVE-2019-15954?","acceptedAnswer":{"@type":"Answer","text":"O3 pinpoints whether CVE-2019-15954 is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed."}},{"@type":"Question","name":"Is CVE-2019-15954 actively exploited in the wild?","acceptedAnswer":{"@type":"Answer","text":"Yes. There are 5 known exploit references for CVE-2019-15954, including 1 documented proof-of-concept exploit on Exploit-DB and 4 in-the-wild exploitations observed on GitHub and other sources. Treat this as actively exploitable and prioritize patching immediately. All exploit code should only be run in an isolated sandbox environment for research or authorized testing — never against production systems without explicit written authorization."}},{"@type":"Question","name":"What is the EPSS score for CVE-2019-15954?","acceptedAnswer":{"@type":"Answer","text":"CVE-2019-15954 has an EPSS (Exploit Prediction Scoring System) score of 79.2%, placing it in the 100th percentile of all CVEs. EPSS is maintained by FIRST.org and estimates the probability that a vulnerability will be exploited in the wild within the next 30 days. A score above 50% indicates significantly elevated exploitation risk — immediate patching is strongly recommended."}},{"@type":"Question","name":"When was CVE-2019-15954 published, and has it been updated?","acceptedAnswer":{"@type":"Answer","text":"CVE-2019-15954 was published on September 5, 2019 and was last updated on August 5, 2024. Advisory data evolves as severity scores, affected ranges, and exploit intelligence are revised — always check the latest version of the advisory before acting."}}]}
Your RSA-2048 keys break in 2030. Find every one of them before attackers do.

CVE-2019-15954

An issue was discovered in Total.js CMS 12.0.0. An authenticated user with the widgets privilege can gain achieve Remote Command Execution (RCE) on the remote server by creating a malicious…

Published
Sep 5, 2019
Updated
Aug 5, 2024
Affected
0 pkgs
Patched
None yet
Exploits
5 known

EPSS Exploitation Probability

via FIRST.org ↗
79.2%probability of exploitation in next 30 days
Very High Risk100th percentile+22.29%
50.2%62.1%74.0%85.9%58.9%79.2%Dec 25Apr 26Jun 26

EPSS (Exploit Prediction Scoring System) is a daily probability model maintained by FIRST.org. It estimates the likelihood a CVE will be exploited in production environments within the next 30 days, derived from real-world threat intelligence signals.

Description

An issue was discovered in Total.js CMS 12.0.0. An authenticated user with the widgets privilege can gain achieve Remote Command Execution (RCE) on the remote server by creating a malicious widget with a special tag containing JavaScript code that will be evaluated server side. In the process of evaluating the tag by the back-end, it is possible to escape the sandbox object by using the following payload: <script total>global.process.mainModule.require(child_process).exec(RCE);</script>

Exploits & PoCs
5

Research use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.

EDB-47531remotemultiple✓ Verified

Total.js CMS 12 - Widget JavaScript Code Injection (Metasploit)

by Metasploit · Oct 22, 2019

Detection & mitigation playbook

Vulnerability
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for the affected component. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match.

  2. Remediation status

    No patched version of the affected component has shipped for CVE-2019-15954 yet. Where your build allows, override or pin the dependency away from the vulnerable range, and apply any maintainer-recommended mitigation.

  3. Mitigate without a patch

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

  4. How O3 protects you

    O3 pinpoints whether CVE-2019-15954 is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed.

Tailored to CVE-2019-15954. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.

Frequently Asked Questions

An issue was discovered in Total.js CMS 12.0.0. An authenticated user with the widgets privilege can gain achieve Remote Command Execution (RCE) on the remote server by creating a malicious widget with a special tag containing JavaScript code that will be evaluated server side. In the process of evaluating the tag by the back-end, it is possible to escape the sandbox object by using the following payload: <script total>global.process.mainModule.require(child_process).exec(RCE);</script>
O3 Security · Impact-Aware SCA

Is CVE-2019-15954 in your dependencies?

O3 detects CVE-2019-15954 across dependencies and uses function-level reachability to confirm whether the vulnerable code path is actually reachable — not just present. No false positives.