EPyT-Flow’s REST API parses attacker-controlled JSON request bodies using a custom deserializer (myloadfrom_json) that supports a type field. When type is present, the deserializer dynamically imports an attacker-specified module/class and instantiates it with attacker-supplied arguments. This allows invoking dangerous classes such as subprocess.Popen, which can lead to OS command execution during JSON parsing. This also affects the loading of JSON files.
EPyT-Flow has been patched in 0.16.1 -- affects all versions <= 0.16.0
Do not load any JSON from untrusted sources and do not expose the REST API.
EPyT-Flow thanks Jarrett Chan (@syphonetic) for detecting and reporting the bug.
{
"cwe_ids": [
"CWE-502"
],
"github_reviewed_at": "2026-02-04T20:34:28Z",
"nvd_published_at": "2026-02-06T21:16:18Z",
"severity": "CRITICAL",
"github_reviewed": true
}