Run your code with es-python. It logs untrusted data reaching a query, a command or a file, and stops it if you choose.
Log it. Your app runs exactly like before. EyalSec records each dangerous flow on your dashboard: what an attacker tried, and how.
Stop and log it. When untrusted data reaches a dangerous action, EyalSec stops your program before anything bad can run, and records it.
EyalSec surfaced two unauthenticated SQL-injection flaws inside Django. We reported both; Django's security team fixed them, with our thanks, and credits Eyal Gabay of EyalSec.
SQL injection via crafted JSON keys used as column aliases in QuerySet.values() / values_list(). NVD rates it 7.3 High; CISA rates it 9.8 Critical.
SQL injection via FilteredRelation column aliases in annotate() / alias() with **kwargs expansion.
Network sockets, files, stdin, data is marked untrusted the moment it enters.
The taint follows the value as it's copied and transformed through your program.
exec, eval, compile, os.system, subprocess, pickle, sqlite3, ctypes, …
Each sink is a class of attack: SQL injection, command injection, code injection, insecure deserialization, path traversal, SSRF. See how it works.
Your existing python stays put. Run es-python when you want the safety net. See the quick start and pricing.
Each example is vulnerable code that the named tool cannot find. EyalSec finds it.
A sandbox does not stop it: the attacker reaches less, but still injects commands. EyalSec stops it: commands built from network data do not run.
RASP cannot find it: the app split and rejoined the input, so it matches nothing RASP saw. EyalSec finds it: the taint follows every transform.
A WAF cannot find it: the row arrives in a file, never over HTTP. EyalSec finds it: files are tainted too, up to the query.
SAST cannot find it: which function ACTIONS[name] calls is decided at runtime. EyalSec finds it: it sees the actual call to os.system.
A fuzzer cannot find it: the query returns rows and nothing crashes, so it records a pass. EyalSec finds it: no crash needed.
SCA cannot find it: the flaw is in your own code, so no CVE lists it. EyalSec finds it: tainted bytes reached pickle.loads.
EDR finds it too late: it sees behavior after the payload runs. EyalSec finds it first: it raises before the gadget runs.
What each event carries, and how the dashboard protects it, is on the security page.
Every vulnerability class and tool category, one sentence each: the full glossary.
EyalSec makes es-python, a secure Python runtime that runs your code unchanged and reports or blocks untrusted data reaching a dangerous operation.
What is EyalSec ->No: you start your application with es-python instead of python, and your code and packages run unchanged. Your regular python stays installed.
Running es-python ->es-python supports Python 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on Linux (x86_64 and aarch64), with any framework, including Django, Flask and FastAPI.
Add a machine ->EyalSec detects attacker data reaching a dangerous operation: SQL injection, command injection, code injection, deserialization, path traversal and SSRF. Not flaws without a data flow.
Vulnerability classes ->Yes: EyalSec checks the dangerous operation itself, so a flaw inside Django or any installed library is covered like your own code, CVE or not.
The Django CVEs ->It depends on which sources you switch on: with none, es-python runs at regular Python speed. Measure it on your own application.
Speed ->An EyalSec event is a confirmed flow: untrusted data really reached a dangerous operation. You still judge whether it is exploitable; parameterized queries never fire.
Suppressed events ->Not by default: your source code stays on the machine. Events carry the operation, the untrusted value, its origin and the stack trace.
Sent with each event ->Report records each event and lets the program keep running; Report and Raise also stops the operation with a Python RuntimeError.
Report and Raise ->EyalSec checks the operation your program performs, with the data that reached it. WAF, SAST, SCA and RASP see the request, source or packages.
EyalSec is priced by usage: a monthly rate per machine plus a rate per detection. There is no free tier and no trial.
Pricing calculator ->Book a live demo: EyalSec runs es-python on your own code with you, then sets up your account and gives you a one-line install command.
Book a live demo ->