EPyT-Flow vulnerable to unsafe JSON deserialization (__type__)
Critical severity
GitHub Reviewed
Published
Feb 4, 2026
in
WaterFutures/EPyT-Flow
•
Updated Feb 6, 2026
Description
Published to the GitHub Advisory Database
Feb 4, 2026
Reviewed
Feb 4, 2026
Published by the National Vulnerability Database
Feb 6, 2026
Last updated
Feb 6, 2026
Impact
EPyT-Flow’s REST API parses attacker-controlled JSON request bodies using a custom deserializer (my_load_from_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.
Patches
EPyT-Flow has been patched in 0.16.1 -- affects all versions <= 0.16.0
Workarounds
Do not load any JSON from untrusted sources and do not expose the REST API.
Credits
EPyT-Flow thanks Jarrett Chan (@syphonetic) for detecting and reporting the bug.
References