Taint-flow analysis
89 ready-made presets across 12 categories: injection, XSS, SSRF, deserialization, dangerous functions and more. Each preset explains the attack scenario it detects.
SEK is a coverage-first code audit platform. It turns your source code into a queryable Code Property Graph, sweeps every route and parser with deterministic sensors, and lets LLM agents judge what actually matters.
From source to sink, every hop traced.
One platform to import code, query its graph, trace exploit paths, and manage findings. No black box, no SaaS upload.
89 ready-made presets across 12 categories: injection, XSS, SSRF, deserialization, dangerous functions and more. Each preset explains the attack scenario it detects.
AST, CFG and PDG fused into one queryable graph. Ask anything in CPGQL through the UI or the authenticated REST API.
Every finding comes with its full data-flow path. Step through source, propagation and sink with the code highlighted at each hop, keyboard-driven, graph optional.
Deterministic sensors propose, LLMs judge. Candidates are scored with CWE IDs and CVSS v3.1 vectors, with evidence packs that keep code fenced off as data.
23 tools exposed over the Model Context Protocol. Let Claude Code or Claude Desktop run queries, launch scans and manage findings without leaving the chat.
Track vulnerabilities in a persistent findings store backed by SQLite, then export SARIF 2.1 to feed GitHub Advanced Security or any compatible pipeline.
SEK ships with curated taint-flow definitions for the stacks you actually ship, from browser XSS to Spring injection to C memory corruption, organized in 12 categories with per-preset explanations. Need something bespoke? Build custom presets visually in the Builder, or drop to raw CPGQL for anything the graph can express.
Plus language-agnostic code-quality rules. Presets, query cache and findings persist in SQLite across restarts.
# Ask the graph a question
$ curl -H "Authorization: Bearer $SEK_API_TOKEN" \
-d '{"query":"cpg.method.name.l.size"}' \
https://sek.internal/api/query
{"id":"…","stdout":"res0: Int = 2413","stderr":""}
# Run a taint-flow preset over the pool
$ sek run --preset java/spring/sqli \
--project payments-service
✓ 3 flows found: 2 reachable sinks, 1 sanitized Drop in source archives, clone from a URL, or upload pre-built graph artifacts. SEK builds the Code Property Graph automatically and stores it alongside your project.
Fire a built-in preset, compose one in the Builder, or write CPGQL by hand. Pooled analysis engines with hash-affinity routing and failover keep queries fast.
Walk each flow in Trace, save findings with severity and status, optionally let the agentic layer score them, then export SARIF into your pipeline.
An audit that samples is a gamble. SEK maps the whole application before judging anything: every file parsed into the graph, every route, parser and auth gate inventoried, every preset and rule pack swept across it. The model only judges what full coverage produced.
89 taint-flow presets matched to the project language sweep the graph for the classic classes: SQLi, command injection, XSS, SSRF, path traversal and more.
123 structural rules catch the single-location shapes taint cannot see: disabled TLS verification, weak crypto, permissive file modes, secrets written to logs.
The model studies this specific codebase and proposes hypotheses per family; the engine executes them. What presets cannot know, the probe hunts.
Every scan ships a surface inventory: routes, parsers, auth gates and outbound calls, so you can see what was covered, not just what was found.
Connect one or more LLM providers and every project gains an Agentic tab: seeded playbooks sweep the source tree or re-triage saved findings, while an autonomous review lane lets a model hunt with sandboxed tools.
BEGIN/END UNTRUSTED CODE fences. Code is data, never instructions.books.py:18 → books.py:34 · 4 steps · no sanitizer in path
Presets know what is common; your codebase is specific. Each round, the engine hands the model a surface inventory built from the graph (entry points, routes, parsers, auth logic), plus what presets already covered and what earlier rounds found. The model proposes one hypothesis per probe, tied to this application, and the engine validates and executes it deterministically. The model never runs anything itself.
# round 3 · family: input parsing
# context: 14 routes, 3 parsers, presets covered sqli/xss
› hypothesis: parser output reaches a template render
sink without escaping
✓ validated (shape ok, language-aware) → executed
✓ 1 flow → candidate queued for judgement
# digest feeds round 4 · 2 dry rounds close a family Four stages, one loop. Deterministic where it can be, intelligent where it counts, and permanently smarter after every run.
Deterministic sensors sweep the Code Property Graph: preset taint bundles, rule packs and hypothesis probes surface candidate flows without spending a single token.
Every candidate ships with an evidence pack: source snippets around each flow step and a sanitizer-in-path flag, all fenced as untrusted data the model can read but never obey.
The LLM scores only what remains: CWE identification, the 8 CVSS v3.1 base metrics and a confidence verdict, deduplicated into clean, trackable findings.
Triage feeds back into the engine. SEK writes new detection rules from confirmed scans and from reports you feed it, so every scan makes the next one sharper.
Naive AI review feeds whole repositories to a model and pays for every token, so its cost grows with your codebase. SEK searches deterministically and lets the LLM judge packaged evidence only, so spend tracks the number of real candidates, not the size of your repo.
SEK is an API first. Launch scans on every pull request, gate merges on new critical flows, and keep a durable audit trail of what shipped clean.
# Any CI that can curl
$ curl -X POST \
-H "Authorization: Bearer $SEK_API_TOKEN" \
https://sek.internal/api/projects/billing/scans
$ sek findings export --format sarif > results.sarif
✓ quality gate passed: 0 new critical flows mcp-sek exposes the whole platform as 23 Model Context Protocol tools
covering projects, scans, queries, dataflow, presets and findings, so Claude Code
or Claude Desktop can drive a full secure code review conversationally.
# In Claude Code, with the SEK MCP server connected
› Run the Python injection presets on the
billing project and summarize reachable sinks.
✓ 3 flows found: 2 reachable sinks, 1 sanitized
✓ findings saved to the workspace
› Export the confirmed ones as SARIF.
✓ results.sarif written (2 findings) Run SEK as a managed service, or deploy the same engine inside your own walls for regulated and air-gapped environments. Same analysis, same workflow, your call.
The managed SaaS. Sign in, import a repository, and run your first scan in minutes. We operate the analysis pool and the infrastructure; you keep the findings.
The full platform packaged for your own infrastructure: no external calls required, your models or a local provider, built for regulated and disconnected environments.
Tell us about your stack, your languages and your compliance constraints. We will get you a workspace on SEK Cloud, or a package for your air-gapped environment, and your first scan runs in minutes.