Hunt: Node-RED exploitation (CVE-2026-58115) shows up as an unauthenticated POST /flows, an inject-to-exec flow, /dev/shm/.b or /tmp/.kworker, and http-in webshell flows
- Web/proxy logs:
POST /flowsto Node-RED (default port 1880) from outside your management network, especially with curl, python-requests or Python-urllib user agents. A 200 response with a newrevhash means the flow was accepted. - Flow contents: an
injectnode withonce: truewired to anexecnode whose command isecho <base64> | base64 -d | sh; or anhttp innode (e.g./cmdor a random path) wired through a function node to anexecnode withaddpayenabled. Diff your currentflows.jsonagainst a known-good copy. - Host artifacts:
/dev/shm/.b,/tmp/.s,/tmp/.kworker; processes started viasetsidornohupas children of the Node-RED process;wget/curlspawned by node. - Network IoCs (VulnCheck): source 4.201.105[.]116; payload servers 85.215.73[.]250:8080 (
/bot-linux-amd64,/wget.sh) and 45.194.90[.]57:38472 (/.sys_update).
A /dev/shm implant disappears on reboot, but webshell flows persist in flows.json, so rebooting is not cleanup. Remove the rogue flows, enable adminAuth, then rotate any credentials stored in Node-RED's credential file.
Sources: VulnCheck: Exploitation Targeting Node-RED (IoCs and dropper analysis) · Siemens ProductCERT: SSA-834709