PreFlight catches security issues. This is where we explain them — the patterns we look for, the real-world incidents behind the threat-intel, and the architecture shapes that shape (or break) your security posture. Read once, build safer forever.
PreFlight's 98 probes map to 16 OWASP categories. 94 probes carry at least one OWASP code; the rest cover discoverability, accessibility, or supply-chain hygiene outside the OWASP scope.
Each finding emitted by a probe carries its OWASP code(s) on the finding card. Click any probe pill below to open its pattern page.
Authorization gone wrong: missing checks, broken hierarchies, paths a user reaches that they should not.
Secrets in the wrong place, weak crypto choices, credentials stored or transmitted insecurely.
User input executed as code or query, instead of being parsed as data.
Architectural choices that produce vulnerable shapes regardless of how carefully the lines are written.
Defaults left in production, security headers absent, dev surfaces exposed.
Dependencies with known vulnerabilities, compromised versions, or supply-chain compromises in the install chain.
Authentication primitives misconfigured: weak signatures, missing verification, session handling errors.
Trust placed in components, packages, or supply-chain artifacts that have not been verified.
Security-relevant events that happen without leaving a log entry. The blind spot in every incident response.
Server fetches a URL the client supplies. Used to talk to internal services that should not be reachable from outside.
User input flows into a prompt without isolation. The LLM follows the user instead of the system.
LLM completions surface data the calling user should not see (cross-tenant leakage, system-prompt disclosure).
User-uploaded documents become future system-prompt content. Indirect prompt injection at the data layer.
Agent tools (PythonREPL, ShellTool, MCP servers) that let the LLM take actions beyond the intended scope.
System prompts embedded in client bundles or surfaced through error responses.
Vector similarity search without scope filtering. Tenant A asks a question, the answer is built from tenant B's notes.
Mapping source-of-truth lives in src/lib/stable-id.js (PROBE_OWASP_MAP + OWASP_LABELS). A coverage test in src/test/probe-coverage.test.js asserts every PROBE_OWASP_MAP entry references a real probe.