Skip to content

Threat catalogue

114 threats from pytm's library, each with how model-wtf treats it: never (impossible in the stacks we generate), dismissed by a simple rule, or open for a reviewer under a topic.

Topics

Topic Question Threats
access Access control and object ownership AA03, AC01, AC07, AC09, AC12
auth Authentication enforcement AA01, AA02, AC11, CR03
input Input handled beyond its shape AA04, DE02, INP10, INP14, INP35, LB01, INP25, INP05, INP06, INP26, INP33, API02
disclosure What leaves the touchpoint DS01, INP18, DS05, DS06, DR01
dos Resource limits DO01, DO02
files Files in and out AC06, INP17, INP23, HA01, INP11
xss HTML output escaping SC02, SC03, SC04, DS04, INP27, INP28, INP29, INP30, INP38, INP39, INP40
csrf CSRF on cookie-authenticated writes AC21
sessions Session handling on JSON GETs SC01
credentials Credentials on flows AC22, AC23, AC24
surface Discovery surface API01, DS03, HA03
store Stores as the application uses them AC02, DE04
llm LLM in the loop LLM01, LLM02, LLM03, LLM04, LLM05, LLM06, LLM07, LLM08, LLM09

Rules

Deterministic facts that close a cell without a reviewer.

Rule Applies to Asserts
no_request process nothing from a request reaches this element (a task, a GET without parameters)
no_raw_sql process the touchpoint's files only go through the ORM
no_xml process, flow no XML parser in the touchpoint's files
no_soap process no SOAP client in the touchpoint's files
no_llm process no LLM SDK, gateway, RAG stack, voice agent or provider API key in the touchpoint's files
not_surface_route process not a discovery endpoint (API docs, schema, admin index, browsable API)
no_resource_from_input process no file path, URL or bucket key is built in the touchpoint's files
no_path_from_input process no filesystem access in the touchpoint's files
no_file_input process the touchpoint neither receives nor serves files
no_dynamic_code process no eval/exec/dynamic import in the touchpoint's files
no_shell process no subprocess/shell in the touchpoint's files
no_html_output process the touchpoint returns JSON/bytes, not HTML (ninja/drf routes, tasks)
no_unsafe_html process no bypass of template auto-escaping in the touchpoint's files
no_json_get_with_session process not a cookie-authenticated GET returning JSON
vendor_code process, flow the view is a dependency's (Django, Wagtail, a package), not the project's; its controls are the framework's, kept by dependency updates, and often sit in its URL conf where a view-level review cannot see them. The data it exposes is still declared and its surface still checked.
public_by_design process the touchpoint is meant for anyone (catalogue, signup, login, health); authentication and ownership do not apply
not_login process not a login / token-issuing touchpoint
not_debug_route process not a test/demo/debug route
no_cookie_auth process not authenticated by a cookie (bearer tokens are not sent cross-site)
safe_method_only process only safe HTTP methods (no state change to forge)
no_ids_from_input process no resource identifier comes from the request (no path params, no *_id field)
no_cache_use process the touchpoint does not read or write the cache itself
store_not_shared store the store belongs to a single unit (no other unit's data item lives in it)
store_not_audit store the store holds no audit-trail model (LogEntry, Revision, Change, History)
flow_not_personal flow the flow carries no personal item
flow_no_credentials flow the flow carries no item of category credentials
declared_transfer flow the flow is a declared transfer to a party with a valid Ch. V safeguard; sending the data there is the intended use, not a leak (whether it sends more than declared is the reviewer's question at declaration time)

Threats

SID Title Elements Treatment Effect
AA01 Authentication Abuse/ByPass process topic auth; dismissed by vendor_code, no_request, public_by_design escalation
AA02 Principal Spoof process topic auth; dismissed by vendor_code, no_request, public_by_design escalation
AA03 Exploitation of Trusted Credentials process topic access; dismissed by vendor_code, no_request, no_ids_from_input ops
AA04 Exploiting Trust in Client process topic input; dismissed by vendor_code, no_request tampering
AC01 Privilege Abuse process, store topic access; dismissed by no_request, public_by_design ops
AC02 Shared Data Manipulation store topic store; dismissed by store_not_shared tampering
AC03 Subverting Environment Variable Values process never — env vars come from the platform, never from the request; the app cannot be made to read attacker-controlled ones
AC04 XML Schema Poisoning flow topic input; dismissed by vendor_code, no_xml tampering
AC05 Content Spoofing flow never — content spoofing on the wire is infra (TLS); in-app integrity is INP14/AA04
AC06 Using Malicious Files process topic files; dismissed by no_file_input escalation
AC07 Exploiting Incorrectly Configured Access Control Security Levels process topic access; dismissed by vendor_code, no_request, public_by_design ops
AC08 Manipulate Registry Information process never — no registry
AC09 Functionality Misuse process topic access; dismissed by vendor_code, no_request tampering
AC10 Exploiting Incorrectly Configured SSL process never — infra: TLS configuration
AC11 Session Credential Falsification through Manipulation process topic auth; dismissed by vendor_code, not_login escalation
AC12 Privilege Escalation process topic access; dismissed by vendor_code, no_request, public_by_design ops
AC13 Hijacking a privileged process process never — no privileged process to hijack inside the app
AC14 Catching exception throw/signal from privileged block process never — no privileged block / signal handling exposed to input
AC15 Schema Poisoning process topic input; dismissed by vendor_code, no_xml tampering
AC16 Session Credential Falsification through Prediction process never — framework session ids are unpredictable
AC17 Session Hijacking - ServerSide process never — server-side session handling is the framework's
AC18 Session Hijacking - ClientSide process never — cookie flags (Secure/HttpOnly/SameSite) are settings, checked once, not per touchpoint
AC19 Reusing Session IDs (aka Session Replay) - ServerSide process never — session replay server-side: framework sessions, logout invalidates
AC20 Reusing Session IDs (aka Session Replay) - ClientSide process never — client-side session replay: cookie settings, checked once
AC21 Cross Site Request Forgery process topic csrf; dismissed by vendor_code, no_request, no_cookie_auth, safe_method_only tampering
AC22 Credentials Aging flow topic credentials; dismissed by vendor_code, flow_no_credentials, declared_transfer escalation
AC23 Credentials Disclosure flow topic credentials; dismissed by vendor_code, flow_no_credentials, declared_transfer escalation
AC24 Use of hardcoded credentials flow topic credentials; dismissed by vendor_code, flow_no_credentials escalation
API01 Exploit Test APIs process topic surface; dismissed by not_debug_route escalation
API02 Exploit Script-Based APIs process topic input; dismissed by vendor_code, no_request, no_dynamic_code escalation
CR01 Session Sidejacking flow, process never — TLS termination and HSTS are infra; the application never serves HTTP
CR02 Cross Site Tracing flow, process never — TRACE is refused by the front proxy; infra
CR03 Dictionary-based Password Attack process topic auth; dismissed by vendor_code, not_login escalation
CR04 Session Credential Falsification through Forging process never — session ids are signed/random by the framework (django.contrib.sessions, SvelteKit adapters); a custom token scheme is declared as a login touchpoint (CR03/AC11)
CR05 Encryption Brute Forcing process, store never — encryption at rest is the platform's (managed Postgres/S3); the app chooses no cipher
CR06 Communication Channel Manipulation flow never — infra: channel configuration
CR07 XML Routing Detour Attacks flow topic input; dismissed by vendor_code, no_xml tampering
CR08 Client-Server Protocol Manipulation flow never — infra: TLS versions
DE01 Interception flow never — encryption in transit is infra (TLS everywhere between units and to backing services)
DE02 Double Encoding process topic input; dismissed by vendor_code, no_request tampering
DE03 Sniffing Attacks flow never — infra: encryption in transit
DE04 Audit Log Manipulation store topic store; dismissed by store_not_audit repudiation
DO01 Flooding process topic dos; dismissed by vendor_code, no_request denial
DO02 Excessive Allocation process, store topic dos; dismissed by no_request denial
DO03 XML Ping of the Death flow topic dos; dismissed by vendor_code, no_xml denial
DO04 XML Entity Expansion flow topic dos; dismissed by vendor_code, no_xml denial
DO05 XML Nested Payloads process topic dos; dismissed by vendor_code, no_xml denial
DR01 Unprotected Sensitive Data flow topic disclosure; dismissed by vendor_code, flow_not_personal, declared_transfer disclosure
DS01 Excavation process topic disclosure; dismissed by vendor_code, no_request disclosure
DS02 Try All Common Switches process never — 'try all common switches' targets CLI binaries; the app exposes no switches
DS03 Footprinting process topic surface; dismissed by not_surface_route disclosure
DS04 XSS Targeting Error Pages process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
DS05 Lifting Sensitive Data Embedded in Cache process topic disclosure; dismissed by vendor_code, no_cache_use disclosure
DS06 Data Leak flow topic disclosure; dismissed by vendor_code, flow_not_personal, declared_transfer disclosure
HA01 Path Traversal process topic files; dismissed by no_request, no_path_from_input disclosure
HA02 White Box Reverse Engineering party never — reverse engineering of a party's software: not ours to model
HA03 Web Application Fingerprinting process topic surface; dismissed by not_surface_route disclosure
HA04 Reverse Engineering party never — reverse engineering of a party's software: not ours to model
INP01 Buffer Overflow via Environment Variables process never — memory-safe runtimes (Python, Node); no buffer arithmetic on env vars
INP02 Overflow Buffers process never — memory-safe runtimes; buffer overflows are the interpreter's problem, patched by dependency updates, not per touchpoint
INP03 Server Side Include (SSI) Injection process never — no Server Side Includes: Django templates and SvelteKit render on the app server
INP04 HTTP Request Splitting process never — request splitting/smuggling is the HTTP server's and proxy's business (gunicorn/uvicorn behind the platform proxy), not the application's
INP05 Command Line Execution through SQL Injection process topic input; dismissed by vendor_code, no_request, no_raw_sql escalation
INP06 SQL Injection through SOAP Parameter Tampering process topic input; dismissed by vendor_code, no_request, no_soap escalation
INP07 Buffer Manipulation process never — memory-safe runtimes
INP08 Format String Injection process never — Python str formatting and JS template literals do not interpret user data as format directives; logging uses %-style with arguments
INP09 LDAP Injection process never — no LDAP
INP10 Parameter Injection process topic input; dismissed by vendor_code, no_request tampering
INP11 Relative Path Traversal process topic files; dismissed by no_request, no_path_from_input disclosure
INP12 Client-side Injection-induced Buffer Overflow process never — memory-safe runtimes
INP13 Command Delimiters process never — no shell command built from input in the generated stacks (subprocess with a list is the rule); a touchpoint that shells out is INP31
INP14 Input Data Manipulation process topic input; dismissed by vendor_code, no_request tampering
INP15 IMAP/SMTP Command Injection process never — no IMAP/SMTP command built from input; mail goes through Django's mail backend with header validation (BadHeaderError)
INP16 PHP Remote File Inclusion process never — no PHP
INP17 XSS Using MIME Type Mismatch process topic files; dismissed by no_file_input escalation
INP18 Fuzzing and observing application log data/errors for application mapping process topic disclosure; dismissed by vendor_code, no_request disclosure
INP19 XML External Entities Blowup process topic input; dismissed by vendor_code, no_xml disclosure
INP20 iFrame Overlay process never — clickjacking is a response-header concern handled once by XFrameOptionsMiddleware / SvelteKit CSP, not per touchpoint; belongs to the security-settings review (DEBUG, cookie flags, headers, ALLOWED_HOSTS: one check per unit, outside this matrix)
INP21 DTD Injection process topic input; dismissed by vendor_code, no_xml tampering
INP22 XML Attribute Blowup process topic input; dismissed by vendor_code, no_xml denial
INP23 File Content Injection process topic files; dismissed by no_file_input escalation
INP24 Filter Failure through Buffer Overflow process never — memory-safe runtimes; oversize input is DO02 (excessive allocation) here
INP25 Resource Injection process topic input; dismissed by vendor_code, no_request, no_resource_from_input disclosure
INP26 Code Injection process topic input; dismissed by vendor_code, no_request, no_dynamic_code escalation
INP27 XSS Targeting HTML Attributes process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP28 XSS Targeting URI Placeholders process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP29 XSS Using Doubled Characters process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP30 XSS Using Invalid Characters process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP31 Command Injection process topic input; dismissed by vendor_code, no_request, no_shell escalation
INP32 XML Injection process topic input; dismissed by vendor_code, no_xml tampering
INP33 Remote Code Inclusion process topic input; dismissed by vendor_code, no_request, no_dynamic_code escalation
INP34 SOAP Array Overflow process topic input; dismissed by vendor_code, no_soap denial
INP35 Leverage Alternate Encoding process topic input; dismissed by vendor_code, no_request tampering
INP36 HTTP Response Smuggling process never — response smuggling: HTTP server / proxy layer
INP37 HTTP Request Smuggling process never — request smuggling: HTTP server / proxy layer
INP38 DOM-Based XSS process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP39 Reflected XSS process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP40 Stored XSS process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
INP41 Argument Injection process topic input; dismissed by vendor_code, no_request, no_shell escalation
LB01 API Manipulation process topic input; dismissed by vendor_code, no_request tampering
LLM01 Direct Prompt Injection process topic llm; dismissed by vendor_code, no_llm escalation
LLM02 Indirect Prompt Injection via Retrieved Content process topic llm; dismissed by vendor_code, no_llm escalation
LLM03 Sensitive Data Leakage to Third-Party Provider process topic llm; dismissed by vendor_code, no_llm, flow_not_personal disclosure
LLM04 Training Data Poisoning process topic llm; dismissed by vendor_code, no_llm tampering
LLM05 Excessive Agency via Unauthorized Tool Use process topic llm; dismissed by vendor_code, no_llm escalation
LLM06 Arbitrary Code Execution via LLM Agent process topic llm; dismissed by vendor_code, no_llm escalation
LLM07 Jailbreaking and Safety Bypass process topic llm; dismissed by vendor_code, no_llm escalation
LLM08 Sensitive Information Disclosure Through Output process topic llm; dismissed by vendor_code, no_llm disclosure
LLM09 Untrusted Tool Launch Configuration process topic llm; dismissed by vendor_code, no_llm escalation
SC01 JSON Hijacking (aka JavaScript Hijacking) process topic sessions; dismissed by vendor_code, no_json_get_with_session disclosure
SC02 XSS Targeting Non-Script Elements process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
SC03 Embedding Scripts within Scripts process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
SC04 XSS Using Alternate Syntax process topic xss; dismissed by vendor_code, no_html_output, no_unsafe_html escalation
SC05 Removing Important Client Functionality process never — client-side functionality removal: the server validates everything it relies on (AA04 covers trusting the client)