How it works
Pre-production — node360-static (SAST / taint) finds the source→sink flow before deploy. Production — node360-rasp (RASP) blocks it at the sink at runtime. The same 16 detectors, byte-for-byte.
An AI agent in a Node.js app can call a tool whose provisionCommand field is model-controlled. A poisoned prompt makes the agent emit a tool-call with a malicious command — that untrusted string flows into child_process and executes. Step through how it is found before deploy and blocked at runtime.
The same 16 semantic detectors run in both engines, byte-for-byte. They decide by meaning at the sink — tokenizer differential, containment, shell-argv metacharacter analysis — not by regex over the payload and not by version-matching.
// In the walkthrough the command detector fired in both engines from the same module: node360-static flagged the flow pre-deploy; node360-rasp blocked it at the child_process sink.